X just open-sourced part of their recommendation algorithm in January 2026 and it reveals a lot about how the "For You" feed decides what to show you.
If you're writing on X, understanding how this system works is essential so that your posts aren't floating in a void hoping to get noticed. Instead they're competing in a specific process, and knowing that process helps you write better content.
In part 1 of this guide, we cover all the changes and the impact of each change.
In part 2, we look at the practical advice on how to write better for the new changes.
TL;DR
- Post when your audience is active. Posts that don't get early engagement age out completely within hours.
- Write for replies and shares, not just likes. These actions require more effort and likely count for more in scoring.
- Make your topic obvious in the first line. The system needs to match your post to interested viewers.
- Avoid commonly muted keywords. Rage bait and spam patterns get filtered out for large portions of viewers.
- Serve your existing followers well. In-network content gets prioritized over out-of-network in scoring.
- Space out your best posts. The algorithm limits how many of your posts appear in someone's feed at once.
- Make each post self-contained. If it needs context from previous tweets, it's harder to share and match to new viewers.
- End with clear invitations. "What's your take?" or "Would you rather A or B?" prompts specific actions.
- Don't repost the same content repeatedly. Duplicate detection systems will catch it and limit reach.
Part 1: How the Algorithm Works
The Basic Pipeline
Every time someone opens their "For You" feed, X runs the same process:
- Getting candidates: The system gathers potential posts from two places. “In-network” content comes from accounts you follow and “Out-of-network” content from accounts you don't follow, discovered through machine learning that tries to match topics and engagement patterns to what you might like.
- Adding information: The system fetches additional details about each post, like video duration, engagement numbers, and other information it needs to make decisions.
- Filtering: This is where a lot of posts die. The system then removes posts based on strict rules. If you've blocked someone, muted them, or muted keywords in their post, it's filtered out. If you've already seen the post (or something very similar), it's filtered out. If it's too old, it's filtered out. If it's subscription-only content and you're not subscribed, it's filtered out.
- Scoring: For posts that survive filtering, the system predicts how you'll interact with each one and combines those predictions into a single score. This is the heart of ranking.
- Selecting the top posts: The system picks the highest-scoring posts and shows them to you. Everything else gets cut, even if it scored well.
What the System Predicts About Your Posts
The algorithm doesn't guess whether your post is "good." It predicts specific actions that a viewer might take:
- Basic engagement actions: Likes, replies, reposts, and clicks are all predicted separately. Each prediction is a probability. The system estimates how likely this specific person is to take an action on this specific post.
- Higher-value actions: The system also predicts quote tweets, video views, shares (including copying the link or sending via direct message), and whether someone will follow you after seeing the post.
- Negative signals: The system predicts "not interested" clicks, blocks, mutes, and reports. These likely hurt your score.
- Combined scoring: All these predictions get combined using weights we don't know. The important thing is your post gets a different score for each person who might see it. The algorithm is predicting whether that user specifically will engage, not whether the post is universally good.
The Filters That Kill Posts Before They Get Scored
Even if your post would score perfectly, it gets filtered out for certain viewers:
- Viewer blocks and mutes: If someone has blocked or muted you, your posts don't even get considered for them. Obvious, but important.
- Muted keywords: If your post contains a keyword someone has muted, it's filtered out for them. This is why packing posts with controversial or commonly muted terms can kill reach even if the content is engaging.
- Your own posts: You don't see your own posts in recommendations.
- Already seen posts: The system checks for the exact same post, similar reposts of the same underlying post, and posts within the same conversation thread. The goal is to make sure you're not seeing the same thing repeatedly.
- Age cutoff: Posts older than a certain age get filtered out. This is a hard cutoff, not a gradual decay. Once your post ages past this threshold, it stops being eligible for most feeds. We don't know the exact cutoff.
- Subscription gates: If you posted something as subscribers-only, it won't be recommended to people who aren't subscribed. There's a hard filter for this.
- Visibility filtering: Some posts get flagged for visibility issues. Policy violations, sensitive content, or other trust and safety concerns get filtered or downranked.
How In-Network vs Out-of-Network Content Gets Handled
The feed blends two types of content, and they're treated differently:
- In-network content: These are posts from accounts you follow. They're retrieved from a post store that tracks recent content. If you already have followers who engage with you, you compete strongly in this category.
- Out-of-network content: These are posts from accounts you don't follow, discovered by machine learning. The system tries to match you to content based on topic, engagement patterns, and meaning.
- The scoring advantage: There's code that prioritizes in-network users over out-of-network users. If you have followers who regularly engage with you, you start with a built-in advantage for reaching them. If you're trying to reach new people, you're depending on the system to match you with the right viewers.
Author Diversity Scoring
Even if you post amazing content, the algorithm limits how often you appear:
- Within-response diversity: The system actively reduces how many posts from the same author appear in a single feed refresh. If your previous post is scoring well and getting shown, your next post might get throttled even if it's great.
- Diminishing returns: You can post frequently, but each post needs to stand on its own. Posting more doesn't automatically mean more reach if the system is limiting how often any single author dominates someone's feed.
The Top Selection Reality
This is where the competition gets brutal:
- Hard cutoffs: The system selects a configured number of top candidates to show. Let's say it's 20 posts. That means rank 20 gets shown and rank 21 doesn't, even if rank 21 scored 99% as well as rank 20.
- Big impact from small changes: Small improvements in predicted engagement can make a huge difference because they can bump you from "just missed the cut" to "made it in." This is why optimization matters. You're not trying to be slightly better, you're trying to clear a threshold.
What We Don't Know (and Why It Matters)
The open source release explicitly excluded some critical pieces:
- Exact weights are missing: We know the system combines predicted actions into a score, but we don't know whether a reply is worth 2 times a like or 10 times a like.
- Thresholds are missing: We don't know the exact age-of-a-post cutoff, the exact top number selected, or other key settings.
- Model weights aren't included: The machine learning models that do the prediction aren't fully shared. We have the architecture but not the trained weights that make predictions.
- Some services are excluded: Parts of the system that handle things like model serving, caching, and additional features aren't in the public code.
This means everything we recommend should be treated as guesses based on evidence, not proven facts. The system is designed a certain way, but the settings that control how aggressively each part works are hidden.
Part 2: How to Write Content That Performs
Now that you understand the system, here's how to work with it.
Write for Specific Actions
Your post isn't just competing for views. It's competing on predicted engagement. That means you need to make it obvious what action someone should take.
- Ask clear questions. Questions naturally invite replies. Don't make them rhetorical. Make them questions you genuinely want people to answer. "What's your take on this?" is better than just stating your opinion and hoping someone responds.
- Prompt a specific response. Give people something to react to. A strong stance with reasoning makes people want to agree, disagree, or add nuance. "Here's why I think X" performs better than "X is happening."
- Use two-option framing. People love picking sides. "Would you rather A or B?" gets more replies than open-ended questions because it's easier to engage with.
- End with an invitation. The last line matters. "What's your experience with this?" or "Am I missing something?" explicitly tells people it's okay to jump in.
The system is predicting whether someone will reply, repost, or share. Make it easy for them to do those things by designing posts that naturally prompt action.
The system needs to match your post to interested viewers. Ranking happens after matching, which means if your post doesn't get matched to the right people, it doesn't matter how good it is.
- Lead with the topic. Don't bury the important part three tweets deep. Say what you're talking about in the first sentence.
- Be specific about your audience. If you're writing for startup founders, say so. If you're talking about a specific technology, name it upfront. Clear meaning helps the system match you to people who care about that topic.
- Avoid vague language. "This is interesting" doesn't help matching. "This new AI regulation" or "This React pattern" gives the system something to work with.
- Think in search terms. Not for search engine reasons, but because the same words that would help someone search for your topic help the system match your post to relevant viewers.
For out-of-network reach especially, being explicit about topic and value helps the model understand who should see your post.
Understand the Time Window
Your post has a limited window to prove itself.
- Early engagement drives everything. If your post doesn't get engagement in the first hour or few hours, it ages out of consideration.
- This isn't a gradual decay. It's a hard cutoff. Your post is either new enough to be eligible or it's not. Once it crosses the threshold, it's essentially dead for most feeds.
- Post when your audience is active. This matters more than you think. If you post when nobody who cares about your content is online, you miss your window for early engagement, and by the time those people are online, your post might already be too old. Use the “Find Best time” feature in Typefully to find the best time for every post.
- Don't expect late success. Some posts do catch fire later, but it's not the norm. If something doesn't work in its first few hours, starting a new conversation is usually better than hoping the old one revives.
Don't Repeat Yourself
Multiple systems exist to catch duplicates, and they're designed to prevent the same content from being shown repeatedly.
- Reposting the same thing doesn't multiply reach. If you post the exact same content multiple times, or even similar content with slight variations, the duplicate detection systems will catch it.
- Approach topics from different angles. You can talk about the same subject repeatedly, but make each post genuinely different. Different framing, different examples, different questions.
- Reposts of your own content have special handling. There's explicit duplicate detection for reposts versus the original post, so reposting yourself has diminishing returns.
Respect Author Diversity Limits
You can't dominate someone's feed even if all your posts are great.
- Space out your important posts. If you post three important things back-to-back, the system might only show one or two of them to any given person.
- Each post needs to earn its own distribution. You can't rely on momentum from a previous post. Each one competes independently.
- Quality over quantity actually matters here. Posting more doesn't automatically mean more reach if the diversity scorer is limiting how often you appear.
Avoid Common Filtering Mistakes
Understanding the filters helps you avoid invisible reach killers.
- Watch out for commonly muted keywords. You can't know what everyone has muted, but certain categories of terms are widely muted. Rage bait phrases, political hot buttons, spam patterns, overused hashtags. Using these terms filters your post out for chunks of your potential audience.
- Keep distribution posts public. If you want reach, don't make posts subscribers-only. The eligibility filter for subscription content is a hard gate. Subscriber-only posts won't be recommended to non-subscribers at all.
- Stay within policy boundaries. Content that triggers visibility filtering (policy violations, sensitive content, trust and safety flags) won't distribute well even if it gets engagement from people who do see it.
Think About the full Action Spectrum
Not all engagement is equal, even though we don't know the exact weights.
- Replies likely count more than likes. A reply requires effort. Someone had to think of something to say and type it out. That's a much stronger signal than a like.
- Shares are probably very valuable. When someone copies your link to send to a friend or shares it via direct message, that's a powerful endorsement. They're putting their own reputation on the line by recommending your content.
- Quote tweets show investment. Someone quote tweeting you is adding their own commentary, which means they found your post worth building on.
- Follows after seeing a post are valuable. If someone sees your post for the first time and decides to follow you, that's the strongest signal that your content resonated.
- Negative signals hurt. If people are clicking "not interested," muting you, or blocking you after seeing your post, that probably tanks your score.
Design your content to maximize high-signal actions, not just overall engagement numbers.
Optimize for Shareability
Think about what makes someone want to send your post to a friend.
- Provide clear value. Useful information, unique insights, or genuinely funny content gets shared because people want to look good by sharing it.
- Make it self-contained. If someone needs context from your previous tweets to understand your post, it's harder to share. Each post should make sense on its own.
- Create shareable units. Some posts are just structured well for sharing. Clear before and after comparisons, surprising data points, counterintuitive insights, useful templates or frameworks.
Handle Threads Strategically
Threads have special handling in the algorithm.
- The first post needs to hook. If your thread starter doesn't perform, the rest of the thread won't get distribution. The system picks the "best branch" of a conversation to promote.
- Conversation duplicate detection exists. The system keeps only the highest-scored candidate per conversation branch. Side threads that don't score well won't distribute widely.
- Each reply in a thread is a separate candidate. They compete independently, but they're also linked. Make each tweet in your thread valuable enough to stand alone if needed.
Understand In-Network vs Out-of-Network Strategy
Your strategy should differ based on whether you have followers.
- If you have engaged followers: You start with an advantage through in-network distribution. Focus on serving your existing audience well. They're the people most likely to see your posts and engage early.
- If you're building from scratch: You're depending entirely on out-of-network matching and ranking. This means topic clarity and meaning matching matter more. Be explicit about what you're talking about and who it's for.
- For hybrid growth: Create some content that serves your existing followers (in-network) and some content optimized for new followers (out-of-network). They're different audiences with different optimization targets.
Format and Content Type Considerations
Different formats have different handling.
- Video has special signals. There are references to video duration thresholds and video quality view weights. If you're using video, the system is tracking duration and completion.
- Be consistent in format per post. The system seems to handle threads, single posts, and video differently. Don't mix formats within a single piece of content in confusing ways.
What Not to Do
Some things are actively counterproductive:
- Don't pack posts with trending keywords just because they're trending. If those keywords are commonly muted, you're filtering yourself out of feeds.
- Don't spam the same content repeatedly. Duplicate detection systems exist specifically to prevent this.
- Don't expect subscription content to get broad reach. It won't. The filter is explicit.
- Don't post important content when your audience isn't around. Timing matters because of the age cutoff.
Takeaway: Focus on writing well
The X algorithm is ultimately looking to serve high-quality content to the right people.
Your job is to make it easy for the system to:
- Match your posts with interested viewers (clear topics, obvious value)
- Predict high engagement (write for replies, shares, and meaningful actions)
- Survive filtering (avoid muted keywords, stay in policy, respect recency)
Clarity of communication and writing to provide value and encourage discussion is the key focus. Focus on this, and the algorithm will help your content reach the right people.