What X's feed code actually weighs
X publishes the code that ranks its For You feed at xai-org/x-algorithm. This page runs that scoring formula, ported line for line from the Rust, on ten made-up squawks. Move the weights on the right and watch the feed reorder. Open "Why here?" on any squawk to see which predicted actions put it there.
The squawks and their predicted probabilities are invented. In production a model named Phoenix predicts them for each viewer. The weights are the defaults hard-coded in X's source, and X can override them per viewer with a config it does not publish.
Receipts
Every statement below was re-derived by a script from the repo at commit 92f0918 (2026-10-15), and links to the exact line. If X changes a value, the check fails and the statement drops off this list.
- ✓ Copying a post's link is the single heaviest positive signal: weight 20. vm-ranker/params.rs#L34
- ✓ A predicted reply is worth 5. vm-ranker/params.rs#L4
- ✓ If you and the author follow each other, a reply gets +15 on top, so 20. vm-ranker/params.rs#L145
- ✓ A like is worth 0.5. Likes are cheap. vm-ranker/params.rs#L3
- ✓ A repost is worth 1. vm-ranker/params.rs#L5
- ✓ A quote post is worth 5. vm-ranker/params.rs#L41
- ✓ Sending it by DM is worth 5. vm-ranker/params.rs#L28
- ✓ Making you follow the author is worth 4. vm-ranker/params.rs#L84
- ✓ Opening a link is a small positive (0.2), not a penalty. vm-ranker/params.rs#L19
- ✓ A predicted report costs 234. vm-ranker/params.rs#L126
- ✓ A predicted mute costs 58.8. vm-ranker/params.rs#L120
- ✓ 'Not interested' costs 47.52. vm-ranker/params.rs#L108
- ✓ A predicted block costs 31.2. vm-ranker/params.rs#L114
- ✓ Posts from accounts you don't follow are multiplied by 0.75. vm-ranker/params.rs#L211
- ✓ Each extra post from the same author in your feed decays by 0.5... vm-ranker/params.rs#L175
- ✓ ...down to a floor of 0.25. vm-ranker/params.rs#L181
- ✓ There is a per-user weight-perturbation knob; its default is 0 (off). vm-ranker/params.rs#L157
- ✓ X's own code comment pre-empts the obvious reading: 234 / 0.5 = 468, and it says 'one report cancels 468 likes' is incorrect because weights multiply predicted probabilities, not counts. xai-value-model/scoring.rs#L37
- ✓ The For You request sets compute_value_model: true, so this weighted formula is on the published live path. home-mixer/scorers/vm_ranker_request.rs#L38
- ✓ Weights are resolved per viewer (the test resolves for country 'US') from a config that is not published, so the defaults above are not necessarily production values. vm-ranker/scoring/mod.rs#L198
- ✓ 89% of the Rust files sit outside any Cargo package: the repo does not build as published. (orphan_share check)
- ✓ The scoring crate imports xai_vm_ranker_proto, which is not in the repo. (proto_missing check)
Dated outside sources: X first published this repo on 20 January 2026. source (2026-08-13); Weights, filtering and training code landed on 13 August 2026; the repo updates most weekdays since. source (2026-10-10)