How to go Viral on the New X Algorithm
A Visual Guide to X’s Open Source Release
No matter what you do, don’t get reported. Better to get blocked than to get muted. Spending time reading doesn’t matter anymore. We investigated the full open-source X algorithm release. This is the tip of the iceberg.
These scores come from the “Phoenix” app, a part of the X algorithm that predicts how likely users are to block, like, copy the link, or interact with a tweet in other ways.1 Based on those odds, it gives the post a score.
There’s a sharp dropoff in importance after the first six. The best ways to increase tweet scores are link copies and replies. These scores form part of a byzantine filter that sifts through all the tweets on the site to give you the few you end up reading.
The results of three apps are combined to craft the home feed. “Phoenix is the first.” “Thunder” retains tweets from previous sessions. And “Simclusters”, a feed from accounts similar to yours, is the third. There’s a hard cap to each: 1200 for Thunder, 1000 for Phoenix, and 800 for Simclusters.2
Simclusters - the algorithmic version of “This Part of Twitter” - is back and makes up nearly a third of the algorithm. It finds tweets from mutuals, people with similar followers, and people with similar interests to add to your feed.3 To figure out a person’s interests, Simclusters weighs a combination of their posts and likes. And to figure out a post’s interests, it weighs the interests of the people liking the posts.
These scores are constantly recalculated. As time passes, the weight of older posts exponentially decreases with a half-life of eight hours.4
The highest-weighted tweets from each app make it into the home feed. But the algorithm isn’t done yet. The “Home Mixer” reranks tweets based on a set of hardcoded penalties. There are 25% penalties for replies and for tweets from non-followers. These two penalties are increased to 50% if the reader is scrolling through topics.5
Finally, an exponential decay is given to multiple tweets from the same user, with a 75% maximum penalty.
All of these penalties are independent, so a reply from a non-followed account will have two 25% penalties.
There’s a special filter on political topics that rewards consistency in posting the same kind of content. Topics like Politics, Elections, News and the Iran War, can be set to three different consistency filters, which remove everyone who doesn’t spend 50%, 75%, or 90% of their most recent tweets talking about that topic.6 There are two hidden lists — V0 and V1 — of special accounts to promote under certain filters. Despite open-sourcing this penalty, X has not released these special lists.
| Mode | Value | Rule | What the release establishes |
|---|---|---|---|
Unfiltered | 0 | Keep every topic label | Unknown mode names also resolve here |
CuratedV0 | 1 | Keep a topic when the author appears in its V0 curated category | The author lists are outside the repository |
CuratedV0V1 | 2 | Use the imported V1 author-to-category map | Membership and selection standards are outside the repository |
PostBased90Pct | 3 | The topic appears in at least 90% of the author’s recent qualifying posts | Analyzes up to 15 posts |
PostBased75Pct | 4 | The topic appears in at least 75% of the author’s recent qualifying posts | Analyzes up to 15 posts |
PostBased50Pct | 5 | The topic appears in at least 50% of the author’s recent qualifying posts | Primary checked-in default |
For two hardcoded topics — “Iran War” and “Stocks and Economy” — this filter is forcibly applied, even if the user isn’t browsing through a topic.7
Bit by bit, X is becoming more transparent. Part of that process means revealing the ham-fisted filters and hardcoded numbers. The X algorithm is full of eccentricities to use to your advantage. Instead of revealing hidden manipulation, they reveal an embarrassing pattern of poor code quality and gameable algorithm choices.
Nonetheless, X remains the most open social media algorithm to date. For that reason, there’s more than ever to learn about it.
Footnotes
Phoenix supplies the action predictions; Home Mixer applies the published weights in the primary scoring defaults and ranking implementation.
The checked-in source caps are defined together in the Home Mixer parameters; the SimClusters source also imposes its own 800-candidate cap.
SimClusters builds account clusters in the KnownFor updater, aggregates viewer interests from follows and favorites in InterestedIn, and retrieves posts through the Home source.
The streaming SimClusters configuration sets the post-vector half-life to eight hours.
The primary multiplier defaults and ranking code define the out-of-network, topic-request, reply/repost, and author-diversity reductions.
Mechanism Score retained Reduction Scope Standard out-of-network original 0.750000 25% Posts by accounts outside the viewer’s follow graph Topic-request out-of-network original 0.500000 50% Topic-filtered requests In-network reply or repost 0.75 / 0.50 25% / 50% Treated like out-of-network content; topic requests use 0.50 Same author: first item 1.000000 0% Formula: 0.75 × 0.5k + 0.25, where k counts earlier items by that author Same author: second item 0.625000 37.5% Same author: third item 0.437500 56.25% Same author: fourth item 0.343750 65.625% Same author: fifth item 0.296875 70.3125% Same author: long-run floor 0.250000 75% The six mode values and the post-based index builder show the 50%, 75%, and 90% tests across typically the author’s 15 most recent qualifying posts.
The candidate processor defines the US–Iran War and Stocks and Economy topic IDs, tags, and index suffixes.
| Action or factor | Weight | Effect of a +0.01 prediction change | Condition |
|---|---|---|---|
| Report | −234 | −2.34 | Prediction head |
| Mute author | −58.8 | −0.588 | Prediction head |
| Not interested | −43.2 | −0.432 | Prediction head |
| Block author | −31.2 | −0.312 | Prediction head |
| Share by copy link | +20 | +0.2 | Prediction head |
| Reply · mutual original | +20 | +0.2 | Effective base +5 and conditional +15 |
| Reply · ordinary | +5 | +0.05 | Base reply context |
| Share by direct message | +5 | +0.05 | Prediction head |
| Quote | +5 | +0.05 | Prediction head |
| Follow author | +4 | +0.04 | Prediction head |
| Share | +2 | +0.02 | Prediction head |
| Repost | +1 | +0.01 | Prediction head |
| Favorite | +0.5 | +0.005 | Prediction head |
| Post click | +0.4 | +0.004 | Prediction head |
| Open link | +0.2 | +0.002 | Prediction head |
| Photo expand | +0.05 | +0.0005 | Prediction head |
| Video open | +0.05 | +0.0005 | Prediction head |
| Video-quality view | +0.05 | +0.0005 | Viewer has fewer than 10,000 followers; video is longer than 10 seconds |
| Quoted-post click | +0.05 | +0.0005 | Prediction head |
| Post unexplored | +0.02 | +0.0002 | Additive; in-network only |
| Not dwelled | −0.02 | −0.0002 | Prediction head |
| Dwell time | +0.004 | +0.00004 | Continuous-value head |