Check your post against X’s actual open-source algorithm
X open-sourced its Grok-era ranking pipeline in January 2026 (xai-org/x-algorithm). Every growth tool still sells you folklore about it. PhoenixCheck reads the code instead: the real scoring formula, the real filters, the real gates — every claim linked to the file it comes from, and every guess labeled as one.
Run the Post Checker → What’s actually knowable
Runs in your browser. No X API, no login, drafts never leave your device.
The score is a sum of 22 predictions — 15 for you, 5 against you
The ranking scorer (home-mixer/scorers/ranking_scorer.rs)
multiplies the Phoenix model’s predicted probability of each viewer action by a
per-action weight and sums them. Being scrolled past is an explicit negative
term. Every 2026 weight value is withheld from the repo — the last public numbers are
the 2023 ones below, and anyone quoting “current” exact weights is
recycling them.
| Signal | Polarity | 2023 weight (public) | 2026 weight |
|---|---|---|---|
| Favorite (Like) | positive | 0.5 | withheld |
| Reply | positive | 13.5 | withheld |
| Repost | positive | 1.0 | withheld |
| Photo expand | positive | — | withheld |
| Click (open post) | positive | 11.0 | withheld |
| Profile click | positive | 12.0 | withheld |
| Video quality view | positive | 0.005 | withheld |
| Share | positive | — | withheld |
| Share via DM | positive | — | withheld |
| Share via copy link | positive | — | withheld |
| Dwell | positive | — | withheld |
| Quote | positive | — | withheld |
| Quoted click | positive | — | withheld |
| Quoted video view | positive | — | withheld |
| Dwell time (continuous) | positive | — | withheld |
| Click dwell time (continuous) | positive | — | withheld |
| Follow author | positive | — | withheld |
| Not interested | negative | — | withheld |
| Block author | negative | — | withheld |
| Mute author | negative | — | withheld |
| Report | negative | -369.0 | withheld |
| Not dwelled (scroll-past) | negative | — | withheld |
Most “shadowbans” are filters, not weights
Before your post is ever scored it has to survive 17 pipeline filters — per-viewer muted keywords, block/mute graphs (blocks propagate through quote-posts), duplicate collapse, an age ceiling, and a trust-and-safety visibility layer whose enforcement code X kept private. Your own posts also compete with each other: the author-diversity decay multiplies your Nth-best post down toward a floor, per viewer, every session.
Myth vs code
X reads your content with an LLM now
The Grox layer runs Grok-VLM classifiers over every post:
spam screens (including reply-spam), safety screens, and — literally —
a “banger” initial quality screen
(grox/classifiers/content/banger_initial_screen.py).
Formulaic AI-slop phrasing is the easiest thing for an LLM screen to catch — which is
why the checker flags it.
We actually ran the released model — here’s what it can’t do
The 2.9 GB mini-Phoenix checkpoint runs on a laptop, so the Lab scored 50,000 real posts with it and joined 1,311 to live engagement. Headline: held within a single author’s posts, its predictions correlate with actual performance at ρ ≈ 0.00 — a coin flip. On the fair, reach-independent version of the test, a one-line question-mark regex beats the 770M-parameter model by 3.5× — and the model’s skill appears only for authors it has already memorized, which is exactly what you’d expect when 99.79% of its parameters are ID-lookup tables. No tool can honestly score your draft with “the real algorithm” — now with data.
This repo updates — we track every drop
xAI stated the algorithm repo gets refreshed roughly every four weeks, and in July Musk pledged full-codebase open-sourcing with third-party verification. The day the withheld weights become public, they’ll be on the weights page. Until then the changelog records exactly what each drop added.