X Algo explained.
What helps a post get seen? A simple guide, based on the public code.
Your feed is made for you.
X looks for posts you might care about, predicts your reaction, then chooses what to show.
- 1
Find possible posts
Posts from people you follow and posts from elsewhere are gathered together.
- 2
Predict your interest
How likely are you to read, like, reply or share? Those predictions help rank the posts.
- 3
Build a varied feed
X checks what can be shown and makes room for different posts. Each viewer gets a different mix.
There is no required “followers first → 100 strangers → 1,000 strangers” ladder in the code we reviewed.
Likes, replies & the rest.
X uses these weights for what it predicts each viewer might do, not for raw reaction counts. Positive adds to the score; negative lowers it.
| What X predicts | Coefficient |
|---|---|
| Reactions & sharing | |
| Like | 0.5 |
| Reply | 5 |
| Reply to a mutual’s original post* | 20 |
| Repost | 1 |
| Quote | 5 |
| Share | 2 |
| Share by DM | 5 |
| Copy-link share | 20 |
| Follow author | 4 |
| Clicks, reading & video | |
| Post click | 0.3 |
| Open external link | 0.2 |
| Expand photo | 0.05 |
| Open video | 0.07 |
| Pause on a post | 0.05 |
| Time spent on a post† | 0.004 |
| Time after opening a post† | 0.4 |
| Video “quality view” | 0 |
| Negative feedback | |
| Not interested | −47.52 |
| Mute author | −58.8 |
| Block author | −31.2 |
| Report | −234 |
* Mutuals: you follow each other. For eligible original posts, the reply weight is 5 + 15 = 20.
† Time signals: these terms use model estimates. Do not read them as points per actual second.
Bookmarks can inform predictions, but have no separate coefficient in this sum. A zero here does not mean the behavior is ignored everywhere.
Sources & details
Shown above: the published service defaults for fresh candidates. An alternate fallback path uses Like 0.66, Open video 0.02, Time spent on a post 0.006 and Not interested −52.272; the other listed values match. Cached scores and experiments can differ. These weights are one part of ranking, not a formula for final reach.
- Predictions are weighted, not raw counts ↗
- Fresh VM scoring defaults ↗
- Local fallback defaults ↗
- The request asks for fresh value scoring ↗
- Cached scores and local fallback ↗
- Existing weighted scores can be reused ↗
- Observed counts enter model inputs ↗
- Learned engagement-count features ↗
- Mutual-follow reply addition ↗
- Original-post eligibility ↗
Give people a reason to stay.
The code considers predicted video opens and attention. Simply attaching a video does not guarantee more reach.
Opening matters
Whether someone is likely to open your video is one of the signals.
Attention matters too
Pausing, reading and attention estimates have their own terms. Public view counts are not a fixed points counter.
A zero needs context
The direct “quality view” weight defaults to zero. Other video and attention signals still exist.
Practical takeaway: make the opening worth clicking and the rest worth staying for.
Sources & details
Reading-time units depend on the model configuration. Dedicated continuation-time terms default to zero. Video-carousel scoring is a separate path, disabled by default in this edition.
The first hour is not a deadline.
We found no universal 30- or 60-minute reply deadline in the published code.
Freshness still matters
Post age helps the model decide what is relevant. That is different from “no replies, no more reach.”
Posts with no likes can still be found
The code can find brand-new posts and posts with no likes. That does not guarantee an audience.
Early reactions may help
Reactions can inform later predictions and discovery. The code does not establish a reply quota or a magic minute.
Do not treat the first hour as a pass-or-fail test for every post.
Sources & details
The 30-minute setting we traced concerns a new viewer’s account age in a disabled-by-default filter. One hour is an age-bucket setting in the model. A possible low-impression lift has a two-hour limit; the standard inspected feed path has a 48-hour post-age filter. These are different rules, not a platform-wide post lifetime.
- Age filter in the inspected feed path ↗
- 48-hour standard-path limit ↗
- Post age is a model feature ↗
- Hourly age-bucket default ↗
- 30-minute viewer-age settings, not a reply deadline ↗
- Zero-like retrieval route ↗
- Creation-time indexing ↗
- Like-based and creation indices ↗
- Low-impression lift defaults ↗
- A lift is conditional, not promised reach ↗
- Observed counts enter model inputs ↗
Followers and new people can both find your post.
Posts from followed accounts and recommendations are considered together. X is choosing for each person opening their feed.
Your followers
Following an account gives its posts a route into your feed. It does not guarantee you see every post.
People beyond your followers
Discovery brings in other accounts. Their posts also have to pass recommendation rules.
Mutuals and small early posts
Original posts from mutuals can qualify for extra reply weight. Some early posts with few views in the Home feed can get extra exploration.
There are discovery routes beyond your followers. The code does not promise everyone a fixed first batch of views.
Sources & details
The mutual reply addition applies to eligible original posts, not replies or reposts. The conditional exploration lift considers originals with fewer than 200 Home impressions, age up to two hours and authors up to 50,000 followers, plus other checks. Home impressions are not the public total-view count. The default out-of-network multiplier is 0.75, and can also apply to followed-account replies and reposts.
- Following and discovery sources ↗
- Mutual-follow reply addition ↗
- Original-post eligibility ↗
- Diversity and network multipliers ↗
- Following and recommendation visibility differ ↗
- Additional recommendation rules for replies ↗
- Low-impression lift defaults ↗
- A lift is conditional, not promised reach ↗
- Original posts and follower cap ↗
Engagement is only part of the decision.
A post can look engaging and still miss a particular person’s feed.
Personal filters
Blocks, mutes and muted words can stop a viewer seeing a post.
Recommendation rules
A post can stay visible on a profile while being excluded from recommendations. Detected spam or engagement bait can be one reason.
A varied mix
Your posts can compete with one another when a feed is assembled. X also makes room for other authors and topics.
The same-author rule is not a penalty on your second post of the day.
Sources & details
Same-author candidates can receive multipliers 1 → 0.625 → 0.4375 → 0.34375 within a candidate pool. This is separate from the number of posts per day. Detected engagement bait can receive a spam label, but unpublished classifier prompts prevent an exact wording checklist. Predicted negative feedback and actual safety-label filtering are separate mechanisms.
- Viewer blocks and mutes ↗
- Viewer muted keywords ↗
- Following and recommendation visibility differ ↗
- Additional recommendation rules ↗
- Detected bait can receive a spam label ↗
- Spam-high-recall drop rule ↗
- Same-author competition within a pool ↗
- Diversity and network multipliers ↗
- Selected scores survive; others can be zeroed ↗
- Predictions are weighted, not raw counts ↗
Four claims worth questioning.
- “No replies in the first hour = dead.”
- No universal reply deadline was found in the code we reviewed.
- “Followers first, then bigger test audiences.”
- Following and discovery sources are queried together. A fixed expanding ladder is not required.
- “A reply is worth exactly N likes.”
- The weights apply to predictions for a viewer, not a count of actual reactions.
- “My second post today gets penalized.”
- The same-author rule works within a selection pool, not a daily posting counter.
Practical takeaway: write something people want to read, reply to or share. Check your own results; the code does not provide a universal growth recipe.
Sources & details
This edition reviews X’s public For You code at revision 74d49a4ffb398949a5f9312f828d7112d7d31f00, committed 20 October 2026. Defaults and experiments can change; some rules and prompts are unpublished. This is code research, not an account diagnosis or a controlled reach experiment.
Based on X’s published For You code · 20 October 2026. Defaults can change. Sources are available in each section.