02 / X Ranking Summary

I Read X's Open-Source Algorithm to Figure Out How to Get More Reach

I looked through X's open-source ranking logic with one question in mind: what actually increases reach? Short answer: early momentum matters, replies matter, Premium helps a lot, and likes are much weaker than most people think.

This is written from the perspective of someone trying to maximize reach, not someone trying to describe the system academically.

TL;DR

If you read one section, read this one.

Reach on X is not about shouting louder. It is about earning the next audience, step by step. Your post starts inside your own network. If it creates real conversation in the first hour, the Grok-powered Phoenix system quietly pushes it to strangers who are wired to care. Replies and back-and-forth threads are the rocket fuel. Premium multiplies everything. Negatives like blocks, reports, and not interested are catastrophic and asymmetric. Everything else is supporting cast.

That is the entire game.

I used to think reach was mysterious. One post would quietly fizzle; the next would find ten thousand people who were not even following me. It felt like luck, or secret sauce only the pros knew.

Then X open-sourced the January 2026 version of its algorithm, the one they call Phoenix, and I did what any builder would do: I read the code. Not the marketing slides. The actual Rust and JAX files on GitHub. What I found was not a list of tricks. It was a story about how attention actually moves through a network of half a billion people. Once you see the wiring, the game stops feeling random.

Let me show you how the machine is actually built.

The Two Worlds Inside Every Feed

Every time you open the For You tab, the system does something deceptively simple but brutally precise.

First it asks: who is this person right now? That is query hydration. It pulls your last ~128 engagements: likes, replies, time spent, follows, even posts you scrolled past without stopping. No manual topic selection. Just raw behavior compressed into a living profile.

Then it splits the universe into two parallel tracks. Thunder is the in-network world: real-time posts from people you already follow. Fast, memory-resident, Kafka-streamed. This is where almost every new post begins its life.

Phoenix is the out-network world: the real discovery engine. It uses a two-tower model, the same broad architecture used in recommendation systems at YouTube, Pinterest, and Airbnb.

One tower compresses your engagement history into a user vector. The other compresses every post into a candidate vector using SimClusters memberships, metadata, and author signals. Then the system computes the dot-product similarity between them. No keywords. No hashtags. Just semantic closeness.

That is how an educational thread about one-idea cards can show up for someone who has been saving personal-finance decks for months. The system is matching latent interests, not just explicit follows.

Underneath that sits SimClusters, which maps X's follow graph into roughly 145,000 inferred communities. You might belong partly to bootstrapped founder Twitter and partly to indie game dev Twitter without ever declaring either. Posts accumulate cluster scores based on who engages with them, and routing happens when your cluster memberships line up with the post's.

Once a few thousand candidates are gathered, they move to the Phoenix scorer. Grok reads the full post, or watches the video, combines that with your context, and predicts probabilities for many actions: like, reply, repost, dwell, profile click, follow author, block, report, and more. Then those probabilities get collapsed into one final score using weighted sums.

Positive weights push distribution up. Heavy negatives crush it. The Home Mixer sorts everything, applies diversity and recency rules, and ships the feed in under 1.5 seconds.

The Abstract Truths

Early momentum gates everything. The first 30-60 minutes decide whether Phoenix even bothers testing your post on strangers. You do not need to go viral immediately. You need to generate enough signal that the model raises its estimate of how worth-showing your post is.

Conversation beats broadcasting. A back-and-forth reply thread spikes dwell time, reply probability, and follow probability at the same time. Staying in your replies is not courtesy. It is part of the ranking mechanic.

Semantic fit beats raw popularity. The two-tower system does not care how many followers you have nearly as much as it cares whether your post belongs in a specific person's interest vector. A smaller account writing the right thing can outroute a larger account writing generic sludge.

Broad enough framing is a routing decision. SimClusters needs enough breadth to propagate your post into adjacent communities. This is not about dumbing down. It is about writing at the altitude that can travel.

Negatives are not symmetric with positives. A single not interested can cost far more than a like helps. Mutes, blocks, and reports are even worse. Reaching the wrong audience is not wasted effort. It is active damage.

Premium matters more than most people say out loud. The system appears to apply a 4x in-network boost and a 2x out-network boost. If your goal is reach, that is not a footnote. It is part of the machine.

The Math

The Heavy Ranker does not output reach. It outputs probabilities. The scorer multiplies each by a learned weight. The relative magnitudes are consistent enough to use directionally.

There are also post-score modifiers: a cluster-match bonus, an out-network penalty around 0.75x for accounts you do not follow, author diversity dampening around 0.625x for a second post from the same author, and recency decay with an 8-hour half-life.

ActionRelative weightWhat it implies
Author replies to a comment+75xThe single strongest signal. Turns a post into a conversation people stay for.
Repost+20xAmplifies to new networks via Phoenix retrieval.
Viewer reply+13.5x to +27xSparks the chain that creates the 75x author-reply event.
Profile click / Follow+8x to +12xChanges the relationship permanently.
Bookmark+10x to +11xStrong intent signal - worth returning to.
Dwell time~+10xTime-constant adjusted. Grok literally measures attention.
Like+0.5x to +1xWeakest positive signal. Used as the baseline.
Not interested-50x or worseCan grow exponentially worse. Trains the model against you specifically.
Mute / Block~-500 reach unitsHeavy author-level penalty.
Report~-1500 reach unitsCan materially damage distribution for the account.

One Example That Shows All of It

Two posts from the same account, same day.

Post A is a clean one-idea card about JavaScript closures. Insightful, well-designed. It gets 120 likes, 8 replies, and 3 reposts. The author does not reply back. It was posted at 2 a.m. when the audience was asleep.

Post B is the same idea framed differently: the one concept that finally made closures click for me, plus a teaser image. It is posted at peak time. Within 40 minutes it gets 40 likes, 25 replies, and the author responds to every thread with a substantive follow-up. Two people bookmark it. Three follow the account.

Post A stays in-network. Its score is roughly (120 x 1) + (8 x 13.5) + (0 x 75) = 228. After 48 hours of recency decay it is basically done.

Post B looks very different: (40 x 1) + (25 x 13.5) + (20 x 75) + (2 x 10) + (3 x 11) = 1,930. Before decay even matters, the conversation velocity is already pushing Phoenix to widen distribution. Same content. Completely different wiring outcome. The difference was 60 minutes of being present in the replies.

What You Do With This

Stop optimizing for likes. Start optimizing for the next distribution step.

Write for your current followers but frame at the level of the idea, not the subfield. Post when your real audience is awake. Stay in your replies because they are not cleanup, they are the mechanism. Use Premium without apology if reach is the goal. And never farm an audience that will mute or report you. The model remembers, and it compounds.

The system is not trying to be fair. It is trying to find posts that make specific people want to keep engaging. Once you stop fighting that and start building for it, reach stops feeling random.

If you are building something like ScrollLearn - short, focused, one-idea decks - you are already speaking the language this algorithm was rebuilt to reward.

Based on X's open-source algorithm releases, public research on SimClusters and TwHIN, and independent analysis of the engagement weight data. Not affiliated with X. Weights are directionally confirmed - exact constants are not fully public.