On August 13, 2026, X published the code behind its “For You” feed and added a tool that lets you check whether your own account or posts have been restricted. If you’ve ever wondered why a post seems to disappear, or why your reach suddenly drops, this is the first real way to check instead of just guessing.
What X put on GitHub

X posted the code to a public GitHub repository, xai-org/x-algorithm, free for anyone to look at, download, or reuse, under the Apache v2 license.
Here’s what that actually gets you:
- The real ranking code: the working code that pulls posts, scores them, and builds your feed, not a summary or a diagram of how it works, plus the actual weights behind that scoring.
- The visibility filtering system: for every post and viewer, it returns one of three answers, show it normally, show it behind a tap-through warning, or drop it entirely. A concrete example is already visible in the code: a filter that removes posts from accounts reported to Brazil’s Electoral Court ahead of the 2026 election, unless the viewer follows that account directly.
- A runnable mini version of Phoenix: not the production model. It’s a small transformer, 128 dimensions and 4 layers, described in the code itself as representative of the internal model “with the exception of specific scaling optimizations.” The sample transformer architecture is ported from xAI’s Grok-1 release, adapted for recommendation use with custom embeddings and an attention mask for candidate isolation, more on that below. It runs on JAX; the Rust code in the repository sits in the broader pipeline (home-mixer, candidate-pipeline), not inside Phoenix’s own training or inference path.
- Roughly 10 to 15 times bigger than the earlier 2026 release, which only covered part of the system.
Developers can also submit changes, called pull requests, and X’s own engineers decide which ones make it into the live algorithm.
What’s public vs. held back in X’s algorithm release
Public now | Still held back |
Core ranking and scoring code | Grox’s specific content-classifier prompts |
Visibility filtering rules (Allow / Interstitial / Drop) | Some individual rule-engine rules |
A runnable mini version of Phoenix (not the production model) | |
Scoring weights for each tracked action |
Grox is X’s internal content classifier, distinct from Grok, the xAI chatbot, easy to confuse given the similar name. X has said keeping these specific pieces private is meant to stop people from testing content against the rules before posting, which would defeat the point of having them.
How X’s Phoenix model scores your posts
The ranking code predicts a probability for a list of specific actions: things like favoriting, replying, sharing, clicking through to a profile, and watching a video, and on the negative side, marking a post not interesting, muting or blocking the author, or reporting it. Each action gets its own weight. The final score for a post is the sum of every weight multiplied by its predicted probability.
Why negative weights on X don’t mean what people think
Positive actions carry positive weights, and negative actions carry negative weights. X’s own documentation is explicit about one common misreading of this: the weights scale a predicted probability, not a raw count of how often something happens. A negative action having a much larger weight than a positive one doesn’t mean “one report cancels out hundreds of likes.” It means your own predicted likelihood of doing that thing, based on your own behavior, gets multiplied by a bigger number. That distinction is worth knowing, since it’s an easy thing to get wrong when reading about this release secondhand.
Passive attention counts in Phoenix’s scoring too
The code tracks 19 distinct actions, each with its own index in the scoring system: favorite is action 1, reply is 4, quote is 5, repost is 6, dwell is 11, video quality view is 13, and so on. The practical point is which of these count at all: dwell time and video quality view are tracked as first-class actions alongside visible engagement like likes and replies. Passive attention, how long you actually look at something, factors into the score even when you never tap anything.
Why “post when the X feed is quiet” isn’t real advice
There’s a design choice in Phoenix worth knowing here: candidates can’t attend to each other during scoring. Each post is evaluated against your own history and context, not against whatever else happened to be retrieved alongside it in that batch. A post’s score doesn’t change based on what else is competing for space in your feed at that moment, which directly undercuts the idea that timing your post around low competition changes how it gets scored.
Getting surfaced and getting ranked on X are separate problems
Scoring happens in two stages, not one. Retrieval narrows millions of candidates down to a few hundred using a two-tower model that compares your embedding against every post’s embedding. Ranking then scores that shortlist with the full transformer. Getting surfaced at all and getting ranked well once you are, are two different problems, with two different fixes.
How to check if a visibility-limiting label has been applied to your X account
- Open the new “Under the Hood” page in your X settings.

- Confirm you’ve posted at least 10 times in the past month. Fewer than that, and there’s nothing to check yet.
- Download your account’s JSON file. It lists whether any visibility-limiting labels, X’s own term for what most people call a restriction, were applied to your account or posts.
- Read it as a 30-day snapshot, not a permanent record. A label that shows up this month reflects recent activity, not a fixed status.
This is currently limited to a small group of accounts at least a year old, while X pilots it, before a wider rollout. If your account doesn’t qualify yet, that’s not a sign something’s wrong, it just means you’re not in the test group.
This matters because claims that Twitter (and now X) quietly limits certain accounts go back to 2018, when Republicans in Congress made that accusation and Twitter denied it. This is the first time account holders get a first-party way to check, instead of comparing screenshots and guessing.
Using X’s Under the Hood tool without writing code
If you’re not technical, X’s own suggestion is to download your JSON file, then paste it into an AI chatbot along with a link to the GitHub repo, and ask for a plain-language explanation of what the labels mean.
If you have a developer on your team, they can read the actual scoring and filtering code directly. For most social media managers, the AI-assisted route covers what you need: a plain answer to whether a label was applied, and what triggered it if the data shows enough to tell.
Run this check periodically, not just once. A single check only covers the last 30 days. Checking monthly, especially after changing something in your posting habits, is what actually helps connect a label to a cause.
What X hasn’t opened up
This release covers the ranking and filtering code specifically. It doesn’t extend to the rest of the company’s disclosures. xAI acquired X in March 2025, and SpaceX acquired xAI in February 2026. SpaceX’s S-1 filing on May 20, 2026 disclosed X’s monthly active user count, around 550 million, for the first time since October 2022, since X hasn’t had to report that kind of figure to the SEC directly on its own since going private.
So the algorithm being open doesn’t mean X as a whole disclosed more. You can now check your own account’s labels, but you still won’t get X’s internal reasoning for a specific moderation decision beyond what the JSON file shows.
What commonly triggers a visibility-limiting label on X
These aren’t line items pulled from the code, they’re general patterns platforms like X are known to watch for, based on how visibility filtering and account-level scoring work broadly:
- Shared devices or connections: running several accounts from the same device or network is one of the most common triggers, independent of what each account posts.
- Spam-like posting patterns: automated or repetitive-looking behavior is exactly what account-scoring systems are built to catch, the same reason auto-posting on X needs to look like normal activity, not a script running on a schedule.
- Repeated rule violations: a pattern of flagged content tends to weigh more than a single incident.
- Sudden shifts in behavior: posting volume or timing that changes sharply can look suspicious, the same reason chasing rapid follower growth too quickly draws attention.
- Coordinated activity across accounts: several accounts posting similar content in sync reads as a pattern, not a coincidence.
The transparency tool only reports on your own account’s labels. It won’t tell you which of these five was the actual cause.
Give each X account its own setup
The same five patterns above apply whether you’re running one account or twenty. Managing several accounts, for different clients or different brands, works best when each one keeps its own device and its own network connection, not because that’s about dodging a ban, but because that’s what makes an account’s activity look continuous and genuinely independent over time.
- Its own cloud phone: Multilogin gives each account an Android cloud phone, so accounts don’t share a device with each other.
- Its own proxy: each cloud phone can carry its own residential proxy from 150+ locations, keeping the network side just as separate as the device side.
- A pillar setup guide: for teams managing more than a couple of accounts, our guide to running multiple X accounts covers the setup end to end
Get started with Multilogin
Multilogin’s Free Plan has no time limit and no credit card required. It includes 5 browser profiles, plus a separate Android cloud phone, and a one-time allowance of 200 MB of proxy traffic and 30 mobile minutes to test the setup on a real account.
Run Unlimited Accounts Without Bans
Run your social media accounts on cloud phones & web browsers
FAQ
It predicts the probability of specific actions, like favoriting, sharing, or reporting a post, for a given viewer, then combines those predictions into one score using a set of weights. That scoring code, along with the visibility filtering system that decides whether a post is shown at all, is now public on GitHub.
Released August 13, 2026, it’s a major expansion of X’s ranking code, roughly 10 to 15 times larger than an earlier 2026 release. It includes the actual scoring weights, the visibility filtering rules, and a runnable mini version of the Phoenix ranking model. Grox’s specific content-classifier prompts and some individual rule-engine rules are held back, to keep the release from being used to game the rules.
Open the “Under the Hood” page in your settings and download your account’s JSON file. It lists whether any visibility-limiting labels were applied to your account or posts in the past month. You’ll need at least 10 posts in that period, and the tool is currently limited to a pilot group of accounts at least a year old.
There’s no published appeals process tied to this specific tool yet. The practical approach is checking what your JSON file shows, adjusting whatever pattern triggered it, and giving it time, since labels reflect the past 30 days rather than a permanent mark.
You can’t adjust it like a setting. What actually affects it is consistent posting behavior, avoiding the patterns visibility filtering is built to catch, and making sure any additional accounts you run don’t share a device or network connection with each other.
No. Download your JSON file and hand it to an AI chatbot along with a link to the GitHub repository for a plain-language read. Reading the code directly is only necessary if you’re building your own tools around it.
Yes. Each account’s JSON file only reports on that one account. If several accounts run from the same device, checking each one regularly is also how you’d notice a shared pattern before it affects the whole group.