X algorithm weights: what’s public, what’s withheld
Short version: every 2026 weight is secret. The scorer
reads all 22 constants from crate::params — a module that does not exist in
the repo (home-mixer/scorers/ranking_scorer.rs). The only weight values ever
published are from the 2023 heavy ranker in the frozen
twitter/the-algorithm. Every article and tool
quoting exact current numbers — “a reply is worth 150 likes” — is recycling
those. Verified 2026-07-31.
| Signal (2026 head) | Polarity | 2023 LEGACY-2023 |
|---|---|---|
| Favorite (Like) | positive | 0.5 |
| Reply | positive | 13.5 |
| Repost | positive | 1.0 |
| Photo expand | positive | — |
| Click (open post) | positive | 11.0 |
| Profile click | positive | 12.0 |
| Video quality view | positive | 0.005 |
| Share | positive | — |
| Share via DM | positive | — |
| Share via copy link | positive | — |
| Dwell | positive | — |
| Quote | positive | — |
| Quoted click | positive | — |
| Quoted video view | positive | — |
| Dwell time (continuous) | positive | — |
| Click dwell time (continuous) | positive | — |
| Follow author | positive | — |
| Not interested | negative | — |
| Block author | negative | — |
| Mute author | negative | — |
| Report | negative | -369.0 |
| Not dwelled (scroll-past) | negative | — |
The receipt
The scorer’s own imports, verbatim from
home-mixer/scorers/ranking_scorer.rs at commit 0bfc279:
use crate::params::*; // ← this module is NOT in the repository let favorite = params.get(FavoriteWeight); let reply = params.get(ReplyWeight); let retweet = params.get(RetweetWeight); // …all 22 constants load from the withheld params service at runtime
The complete 2023 public table
For the record, all ten constants the 2023 heavy ranker ever made public — including
the ones with no direct 2026 head, which is why some rows above show “—”.
LEGACY-2023 Source: twitter/the-algorithm
(the-algorithm-ml heavy-ranker weights, frozen at c54bec0).
| 2023 engagement | Weight | 2026 equivalent head |
|---|---|---|
| Favorite | 0.5 | favorite |
| Retweet | 1.0 | retweet |
| Reply | 13.5 | reply |
| Good profile click | 12.0 | profile_click |
| Video playback ≥50% | 0.005 | vqv (redefined) |
| Reply engaged by author | 75.0 | none — folded into the learned reply head |
| Good click (conversation + dwell) | 11.0 | click + click dwell |
| Good click v2 (profile dwell) | 10.0 | none — nearest is profile_click |
| Negative feedback | −74.0 | split into not_interested / block / mute |
| Report | −369.0 | report |
The part nobody says out loud: this is a transparency regression
The 2023 open-sourcing was praised for exactly one thing above all others — it published the actual engagement weights, the first time a major platform had shown its scoring coefficients. The 2026 release publishes the formula’s shape (Σ weightᵢ × P(actionᵢ)) and withholds every coefficient.
It compounds: xAI’s own headline claim is that they “eliminated every single hand-engineered feature and most heuristics.” Removing the interpretable features while withholding the weights moves the system further from outside inspection, not closer — the learned parts are opaque by nature and the tunable parts are now secret. The governance shifted too: the 2023 repo invited issues and pull requests; this one has issues, PRs, discussions and wiki all disabled, three squashed commits authored by “CI agent,” and a license change from AGPL-3.0 to Apache-2.0. It is a publication, not a project.
That is the honest frame for this whole page: the only real weights that have ever existed publicly are the 2023 ones below, and they are three years stale.
What the 2023 numbers still tell you
Directionally, the 2023 stack priced conversation and identity far above applause: a
reply at 13.5 vs a like at 0.5 (27×), a profile click at
12, and a report at −369 — one predicted report erased about
738 likes’ worth of score. The 2026 formula keeps the same shape (separate heads
for each action, explicit negatives), so the structure still argues for
substance over bait — but treat every exact ratio as history, not fact.
The demo weights are not production
The May 2026 runnable pipeline ships illustrative weights in
phoenix/run_pipeline.py (fav 1.0, reply 0.5, repost 0.3, dwell 0.2) — sample
code, contradicting the 2023 ratios, and explicitly not what production uses. If a tool
“scores” you with those, it’s scoring you with a code comment.
What the released model implies (measured, not guessed)
Weights are withheld, but predicted probabilities aren’t: the Lab ran the released checkpoint on 50,000 real posts. Per impression, a predicted reply is ~345× rarer than a predicted like and a quote ~770× rarer — so the high 2023-style weights on conversation actions were compensating for rarity. Full tables, age curves and the backtest are on the Lab page.
When this changes
Musk pledged (July 2026) to open the full codebase with third-party verification. The day real weights land in public code, this table gets a third column and the changelog gets its biggest entry. Until then, distrust precision.