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.

SignalPolarity2023 weight (public)2026 weight
Favorite (Like)positive0.5withheld
Replypositive13.5withheld
Repostpositive1.0withheld
Photo expandpositivewithheld
Click (open post)positive11.0withheld
Profile clickpositive12.0withheld
Video quality viewpositive0.005withheld
Sharepositivewithheld
Share via DMpositivewithheld
Share via copy linkpositivewithheld
Dwellpositivewithheld
Quotepositivewithheld
Quoted clickpositivewithheld
Quoted video viewpositivewithheld
Dwell time (continuous)positivewithheld
Click dwell time (continuous)positivewithheld
Follow authorpositivewithheld
Not interestednegativewithheld
Block authornegativewithheld
Mute authornegativewithheld
Reportnegative-369.0withheld
Not dwelled (scroll-past)negativewithheld

Every signal explained → · The weights story →

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

All myths, with receipts →

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.