How the X Algorithm Checkup works
Methodology
Everything runs in your browser. The archive is a .zip file; a browser-native ZIP reader (DecompressionStream) locates entries by name and decompresses only an allowlisted set of filenames (tweets.js and its numbered parts). Every other file in the archive, direct-messages, follower, following, ad data and the rest, is never opened. The Under the Hood JSON is read the same way: it is a small, aggregated per-label report (which labels were applied, to how many posts, and X's own description and stated effect for each), and only recognized fields are mapped into the tool's internal model, plus per-post created date, favorite count, retweet count, reply flag, link flag, hashtag count and text length from the archive. Raw objects, post text, and user or follower IDs are discarded immediately after mapping and never enter application state or leave the browser.
All scoring is deterministic arithmetic against constants verified in github.com/xai-org/x-algorithm on 2026-08-15. There is no AI model call anywhere in the analysis path, free or gated, and no per-user cost to run it.
The honesty contract
This tool never answers yes or no to "am I shadowbanned." X's export shows which labels were applied. It does not confirm or deny shadowbanning, and neither do we. A label is X's own statement; anything beyond that would be a guess dressed up as a result.
X's export reports how many posts carried a label in the period, not which posts, so this tool cannot show why any label was applied and never claims any post caused any label. X open-sourced ranking logic and constants, not the trained model: there is no checkpoint to download (phoenix/README.md). This tool checks your files against the published logic; it cannot run X's production ranking, and neither can anyone else outside X.
The weights are coefficients on model-predicted probabilities, not an exchange rate. We do not convert them into "worth N favorites" framing anywhere in this tool, only cited arithmetic against the published constants, by file path, so you can verify it yourself.
What is free and what is gated
Free, no account: file parsing for both inputs, how many of your posts carried a label and how many account-level labels X reports from Under the Hood, the archive's headline behavior stats, and the honesty box. The honesty box is part of the free result on purpose, it is the product's differentiation, not a disclaimer to bury behind email.
Email unlocks, in the same browser tab: every label X reported with its own description and stated effect verbatim (plus a pointer to the specific rule in X's open-source code where we could verify one), the complete per-post behavior table, and remediation notes ranked by the verified negative constants. Nothing derived from your file is ever sent to our servers to compute the gated view, it was already computed client-side before you entered an email.
Limitations
Under the Hood is a pilot; if a future export adds fields this tool doesn't recognize yet, it degrades gracefully rather than breaking or inventing a result. It reports counts and percentages per label for the whole period, not per post, so it cannot say which specific post carried which label. The archive's engagement counts are a snapshot at export time, not a history. Neither file contains impressions, and the archive contains no reply counts, so several published weights (reply, quote, link-copy share) appear only as explanation copy, never as a computed number.
Frequently asked questions
Can this tool tell me if I am shadowbanned?
This tool never answers yes or no to "am I shadowbanned." X's export shows which labels were applied. It does not confirm or deny shadowbanning, and neither do we. A label is X's own statement; anything beyond that would be a guess dressed up as a result.
What is the Under the Hood export?
It is a pilot feature from X that lets qualifying accounts download a JSON file listing the visibility labels X applied to that account over the past month. It is the closest thing to ground truth about visibility that exists, but it is pilot-gated: X requires 10+ posts a month, an account at least a year old, and inclusion in the pilot.
What can the standard X data archive show, if I do not have Under the Hood?
The standard archive is universal, but it contains no visibility labels, no impressions and no reply counts. This tool uses it for a behavior audit only: post count, a weighted engagement score using the two published constants the archive supports (favorite 0.5, retweet 1.0), reply share and link share of your own output. It cannot tell you whether your reach was limited.
Does my file get uploaded anywhere?
No. Both files are parsed with browser-native code in your own tab. The parser extracts only an explicit allowlist of fields, DMs, followers, following and ad data files inside the archive are never opened. This is enforced by the code that ships to your browser, which you can inspect, not just by this sentence.
Is the weighted engagement score a full ranking score?
No. It is 0.5 x favorites + 1.0 x retweets, the two engagement counts the archive contains, weighted by the two published constants that apply to them. The published formula also weighs replies (5.0), quotes (5.0) and link-copy shares (20.0). Your archive does not contain those counts, so this score understates posts that earned replies and shares.
Does a report really cancel out hundreds of favorites?
No, and stating it that way is a documented misreading of the source. The published weights are coefficients on model-predicted probabilities, not a conversion rate between real engagements, a comment in the X source code says so directly. What is verifiable is the arithmetic: per home-mixer/params/param.rs, one report (-234.0) outweighs 468 favorites (+0.5 each) as raw coefficients. That is not the same claim as "a report cancels 468 likes" on any real post.