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.

NegativePositiveCenter line = 0

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.

Thunder, Phoenix and SimClusters feed candidates into the Home MixerThree boxes on the left are sized by their candidate caps. Thunder, labeled Following, sends 1,200 candidates. Phoenix, labeled Recent Activity, sends 1,000. SimClusters, labeled Interests, sends 800. Curved arrows join at the Home Mixer, which points to a person.ThunderFollowingPhoenixRecent ActivitySimClustersInterests1,2001,000800Home MixerRanking

These scores are constantly recalculated. As time passes, the weight of older posts exponentially decreases with a half-life of eight hours.4

Post A · hour 0Post B · hour 4Post C · hour 10
Simulation of three post balances fading with an eight-hour half-lifePost A begins with a balance of 1 at hour zero. Post B receives a balance of 0.8 at hour four. Post C receives a balance of 0.95 at hour ten. Each line loses half its value every eight hours.00.250.500.751.00048121620242832Post A entersPost B entersPost C entersHours since Post A entered the clusterRemaining cluster balance

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.

Score retained0.25 floor
Author diversity score multiplier for the first ten posts by the same authorThe first post retains a multiplier of 1, the second 0.625, the third 0.4375, and later posts approach a floor of 0.25.1.000.750.500.25long-run floor = 0.2512345678910Item number from the same authorScore retained

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.

ModeValueRuleWhat the release establishes
Unfiltered0Keep every topic labelUnknown mode names also resolve here
CuratedV01Keep a topic when the author appears in its V0 curated categoryThe author lists are outside the repository
CuratedV0V12Use the imported V1 author-to-category mapMembership and selection standards are outside the repository
PostBased90Pct3The topic appears in at least 90% of the author’s recent qualifying postsAnalyzes up to 15 posts
PostBased75Pct4The topic appears in at least 75% of the author’s recent qualifying postsAnalyzes up to 15 posts
PostBased50Pct5The topic appears in at least 50% of the author’s recent qualifying postsPrimary 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

  1. Phoenix supplies the action predictions; Home Mixer applies the published weights in the primary scoring defaults and ranking implementation.

  2. The checked-in source caps are defined together in the Home Mixer parameters; the SimClusters source also imposes its own 800-candidate cap.

  3. SimClusters builds account clusters in the KnownFor updater, aggregates viewer interests from follows and favorites in InterestedIn, and retrieves posts through the Home source.

  4. The streaming SimClusters configuration sets the post-vector half-life to eight hours.

  5. The primary multiplier defaults and ranking code define the out-of-network, topic-request, reply/repost, and author-diversity reductions.

    MechanismScore retainedReductionScope
    Standard out-of-network original0.75000025%Posts by accounts outside the viewer’s follow graph
    Topic-request out-of-network original0.50000050%Topic-filtered requests
    In-network reply or repost0.75 / 0.5025% / 50%Treated like out-of-network content; topic requests use 0.50
    Same author: first item1.0000000%Formula: 0.75 × 0.5k + 0.25, where k counts earlier items by that author
    Same author: second item0.62500037.5%
    Same author: third item0.43750056.25%
    Same author: fourth item0.34375065.625%
    Same author: fifth item0.29687570.3125%
    Same author: long-run floor0.25000075%
  6. 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.

  7. The candidate processor defines the US–Iran War and Stocks and Economy topic IDs, tags, and index suffixes.

Action or factorWeightEffect of a +0.01 prediction changeCondition
Report−234−2.34Prediction head
Mute author−58.8−0.588Prediction head
Not interested−43.2−0.432Prediction head
Block author−31.2−0.312Prediction head
Share by copy link+20+0.2Prediction head
Reply · mutual original+20+0.2Effective base +5 and conditional +15
Reply · ordinary+5+0.05Base reply context
Share by direct message+5+0.05Prediction head
Quote+5+0.05Prediction head
Follow author+4+0.04Prediction head
Share+2+0.02Prediction head
Repost+1+0.01Prediction head
Favorite+0.5+0.005Prediction head
Post click+0.4+0.004Prediction head
Open link+0.2+0.002Prediction head
Photo expand+0.05+0.0005Prediction head
Video open+0.05+0.0005Prediction head
Video-quality view+0.05+0.0005Viewer has fewer than 10,000 followers; video is longer than 10 seconds
Quoted-post click+0.05+0.0005Prediction head
Post unexplored+0.02+0.0002Additive; in-network only
Not dwelled−0.02−0.0002Prediction head
Dwell time+0.004+0.00004Continuous-value head