Strategy
The X (Twitter) Algorithm in 2026: The Real Weights, Straight From the Source Code
By Sébastien de Bollivier · · 12 min
In short — X published the actual blend weights of the For You feed on 13 August 2026. A copy-link share is worth 40 likes. A like is the unit of account. Dwell time is worth almost nothing. Here is what the source code says, and what it means for what you post.
On 13 August 2026, X published the ranking weights of the For You feed. Not a description of them — the parameters themselves, in home-mixer/params/param.rs. The headline numbers: a share via copy link is weighted 40× a like, a reply 10× (40× for an original post from a mutual follow), a repost 2×, and dwell time close to zero. A predicted report costs the equivalent of 468 likes. Most of what circulates about “the X algorithm” was written before this drop and contradicts it. Here is what the code actually says.
Compiled by PurrPlan, the AI teammate that creates and schedules content across 12 platforms — read directly from the xai-org/x-algorithm repository.
What Was Published, and What It Replaces
X open-sourced the For You pipeline in January 2026, but the January release described the architecture and left the numbers out. The August 13th update adds the part everyone was guessing at: the configuration parameters, including the weights used to blend predicted actions into a single score, plus the visibility filtering systems and the real Phoenix training code.
The scoring rule itself is one line:
Final Score = Σ (weight_i × P(action_i))
Phoenix, a transformer, predicts a probability for each action a viewer might take on a post. RankingScorer multiplies each probability by its weight and adds them up. The post with the highest sum ranks first.
This is the single most important thing to understand, and the thing every summary of this release gets wrong: the weights apply to predicted probabilities, not to actions that already happened. “A copy-link share is worth 40 likes” does not mean that when someone copies your link you receive 40 likes’ worth of credit. It means that when the model looks at your post and estimates the chance a given viewer will copy its link, that estimate counts 40× more than its estimate that they will like it.
The practical difference is everything. You are not farming actions after the fact. You are writing posts that read, to a model trained on billions of sessions, like the kind of post people copy and send elsewhere.
The Positive Weights
Straight from param.rs, with the like as the unit of account:
| Predicted action | Weight | Relative to a like |
|---|---|---|
| Share via copy link | 20.0 | 40× |
| Reply, on an original post from a mutual follow | 20.0 (5 + 15 boost) | 40× |
| Reply (normal) | 5.0 | 10× |
| Quote | 5.0 | 10× |
| Share via DM | 5.0 | 10× |
| Follow author | 4.0 | 8× |
| Share (generic) | 2.0 | 4× |
| Repost | 1.0 | 2× |
| Favorite / like | 0.5 | 1× |
| Click (expand / open post) | 0.4 | 0.8× |
| Open link | 0.2 | 0.4× |
| Photo expand / video open / video quality view | 0.05 each | 0.1× |
| Quoted-post click | 0.05 | 0.1× |
| Continuous dwell time | 0.004 | tiny, per unit |
| ”Post unexplored” (in-network only) | 0.02 | almost nothing |
And the ones set to zero, which are as informative as the ones that are not:
| Action | Weight | What it means |
|---|---|---|
| Binary dwell | 0.0 | in the code, not used in the blend |
| Profile click | 0.0 | predicted, then not ranked on |
| Mutual-follow dwell boost | 0.0 | tested in the July A/B, not shipped |
| Bookmark | — | in the taxonomy and in viewer history, no ranking weight |
The Negative Weights
Negative feedback is rare, so it is weighted brutally to compensate. The code comment says this explicitly: the weights “reflect a combination of how much an action is valued in ranking and typical propensities of these actions across the X network.”
| Predicted action | Weight | Equals this many likes |
|---|---|---|
| Report | −234.0 | 468 likes |
| Mute author | −58.8 | 118 likes |
| Not interested | −43.2 | 86 likes |
| Block author | −31.2 | 62 likes |
| Not dwelled | −0.02 | noise |
Read that against the positive table. One person predicted to report your post cancels roughly twelve copy-link shares. This is the mathematical case against bait, against manufactured outrage, against posting to an audience that did not ask for your topic: the downside is an order of magnitude steeper than the upside, and it is applied to a prediction, before anyone lifts a finger.
Five Things Everyone Says That the Code Contradicts
The reason this release matters is that the received wisdom about X reach was largely inherited from the 2023 code drop and from confident guessing. Five claims do not survive.
“Dwell time is the king signal.” Continuous dwell time weighs 0.004 per unit and binary dwell is 0.0 — not used. Holding someone’s eyes on a post is worth close to nothing. Getting them to copy the link is worth 20.
“External links kill your reach.” The published open_link weight is +0.2. Positive. There is no link penalty in the blend, at any point. Note the direction of the whole design: share_via_copy_link at 20.0 is the highest positive weight in the file, and copying a link is by definition an action that takes content off-platform. The model rewards portable content. (Visibility filtering is a separate system and can still act on spam — but that is not a link tax.)
“Bookmarks are the secret signal.” Bookmarks are recorded in the taxonomy and in viewer history. They carry no ranking weight.
“Profile clicks compound your growth.” profile_click is predicted, then multiplied by 0.0. What is ranked on is follow_author at 4.0 — the follow itself, not the visit.
“The first hour decides everything.” There is no velocity term anywhere in the blend. No engagement-rate feature, no “first 60 minutes” multiplier. Phoenix scores a post per viewer from that viewer’s history and the post’s content. What genuinely is time-bound sits elsewhere: posts older than 48 hours are dropped by AgeFilter, and the new-author boost only applies to posts under 24 hours old. Timing still matters — it just does not work the way the folklore says (we rewrote our best time to post on X guide around the real mechanism).
The Multipliers That Decide Who Sees You
Three adjustments run after the blend, and they explain more about your reach than any individual weight.
Out-of-network discount (×0.75). A post from an account the viewer does not follow is multiplied by 0.75. In a topic feed the factor drops to 0.5. Crucially, the same discount applies to replies and reposts from accounts the viewer does follow — which is why your reply to a big account rarely spreads and your original post does.
Author diversity (decay 0.5, floor 0.25). Each post after your first in a given feed is multiplied by a decaying factor, down to a floor of 0.25. Posting twenty times a day does not multiply your reach by twenty; in a single viewer’s feed, your later posts are competing at a quarter of their score.
Bidirectional follow boost (+15). This is the change people felt in July without knowing its name. For an original post written by someone the viewer mutually follows, the reply weight goes from 5.0 to 20.0. It does not apply to replies or reposts. X shipped it at 20 on 13 July 2026, then lowered it to 15 on 24 July after users complained they were seeing too little World Cup discussion from accounts they did not follow. The repo documents the diff, commit by commit.
New-author cold start. Posts from authors with 1,000 or fewer followers, under a 1,000-impression threshold, that are less than 24 hours old, get lifted toward positions 15–16 of the feed. If you are small, the system has an explicit on-ramp for you — and it expires after a day.
What This Means for What You Post
The weights point somewhere very specific, and it is not where most advice points.
Write posts that are worth forwarding, not posts that are worth applauding. The top of the table is copy-link sharing and DM sharing. Both are private acts: someone sends your post to one person because it is useful to that person specifically. A reference, a number, a method, a warning. Applause content — the dunk, the relatable observation — collects likes, which the model prices at 0.5.
Ask things your mutuals will answer. With the bidirectional boost, an original post that your mutual follows are likely to reply to is scored at 20.0 on that signal — tied with copy-link sharing for the highest weight in the file. Your actual network is the leverage point, not strangers.
Stop optimising for retention tricks. Hooks engineered to make people stop and stare buy you a 0.004 signal. The same effort spent making the post genuinely quotable buys you a 5.0 or a 20.0.
Post fewer, better. Author diversity means your fifth post of the day is scored at a quarter of its worth in any given feed. The 20-posts-a-day advice was already dubious; the decay factor makes it arithmetic.
Never risk the report. At −234, one predicted report undoes an enormous amount of good work. Bait, engagement farming and picking fights with audiences that did not opt in are not just distasteful, they are quantitatively bad trades.
And keep publishing original posts. Replies and reposts from followed accounts are discounted at 0.75, get no bidirectional boost, and are ineligible for the cold-start lift. The system is built around original posts.
The Honest Caveats
Three, because precision matters more than a clean story.
These are the default values in the open-source parameter file. X runs continuous A/B tests through feature switches — the bidirectional boost was 0, 5, 10, 15 and 20 for different users within two weeks. Your feed is not necessarily running the defaults.
The blend is only one stage. Visibility filtering — a separate system, also published in this release — decides whether a post can be shown at all, using labels attached by other models. A post can be perfectly optimised for the blend and still be dropped there.
And ranking is not distribution. VMRanker reorders the result afterwards, ads and recommendations are injected by the blending pipeline, and retrieval decides which posts get scored in the first place. The weights tell you what the system values. They do not tell you the whole story.
The Checklist
- Write at least one post per week that someone would copy and send to a colleague — a number, a method, a reference
- Make original posts your default format; keep replies for conversation, not for reach
- Ask questions your mutual follows can actually answer (the +15 boost lives there)
- Stop counting likes as your success metric — they are the unit of account, not the goal
- Publish 3–5 times a day at most; the diversity floor eats the rest
- Include the link if the link is the point — there is no link tax in the blend
- Avoid anything that reads as bait to a slice of your audience; a report is 468 likes
- If you are under 1,000 followers, post fresh — the cold-start lift expires at 24 hours
- Review which of your posts got quoted and DM’d, not which got liked
The hard part is not knowing this. It is executing it across a full schedule while still being present for the conversations your posts start.
Try PurrPlan free — write, schedule and track posts on X and 11 other platforms, and see which formats actually earn the signals that count.
The Bottom Line
For three years, X advice was archaeology on a 2023 code dump plus superstition. Since 13 August 2026 it is arithmetic, and the arithmetic says something unfashionable: the algorithm rewards content people find useful enough to send to one specific person, and it prices applause at almost nothing.
That is a harder standard than writing hooks. It is also a much more stable one, because it is the same standard that makes content worth publishing in the first place.
Sources: xai-org/x-algorithm — home-mixer/params/param.rs, home-mixer/scorers/ranking_scorer.rs, docs/BIDIRECTIONAL_BOOST_CHANGE.md. Written by Sébastien de Bollivier.
FAQ
What are the real X algorithm weights in 2026?
X published them in home-mixer/params/param.rs on 13 August 2026. Share via copy link is 20.0, reply is 5.0 (20.0 for an original post from someone you mutually follow), quote is 5.0, share via DM is 5.0, follow author is 4.0, generic share is 2.0, repost is 1.0, and a like is 0.5. On the negative side, a report is -234.0, a mute is -58.8, 'not interested' is -43.2 and a block is -31.2. Taking the like as the unit, a copy-link share is worth 40 likes and a report costs 468.
Does dwell time still matter on X?
Barely. Continuous dwell time carries a weight of 0.004 per unit, and binary dwell is set to 0.0 — not used in the blend at all. The idea that 'dwell time is the new king' does not survive contact with the published parameters. What the code rewards is an action that leaves the app: copying the link to send it somewhere else.
Do external links hurt reach on X?
Not in the ranking blend. The published open_link weight is +0.2 — positive, not negative. There is no link penalty anywhere in the scoring code. Visibility filtering can still act on spam, and a link is not a magic boost either, but the widely repeated claim that 'X suppresses posts with links' is not supported by the code X shipped.
What is the bidirectional follow boost on X?
Rolled out in July 2026 and documented in the repo, it adds a boost to the reply weight for original posts written by accounts you mutually follow. It started at 20, was cut to 15 on 24 July 2026 after World Cup feedback, which takes the reply weight from 5.0 to 20.0 for those posts. It does not apply to replies or reposts, only to original posts.
How much does negative feedback cost on X?
A lot, and asymmetrically. A predicted report is weighted at -234.0, which is 468 likes. A mute is 118 likes, a 'not interested' tap is 86, a block is 62. Because these weights apply to predicted probabilities, a post that reads as bait to a slice of the audience is being penalised before anyone actually taps anything.