60-second summary
- Strongest signal: copying a tweet link is worth +20 (40 times more than a like).
- The like barely counts: +0.5. Farming likes in 2026 is a waste of time.
- Mute is worse than block: -58.8 vs -31.2. Silence kills louder than noise.
- A single report = -234 points, or 468 likes annihilated in one tap.
- 48h max lifetime: nothing older enters For You.
- Same-author penalty: your 2nd tweet in a user's feed x0.625, the 3rd x0.44.
- Non-follower tax: x0.75 on anything seen by someone who doesn't follow you.
- Small account boost: under 1000 followers + under 24h can surface at slot 15-16, never 1.
How For You scoring works in 2026
Contrary to what most creators think, Grok doesn't assign a global quality score to your tweet. It does something much more granular: for each potential reader, it predicts what that specific person will do with your tweet. Then it multiplies each prediction by a fixed weight, and sums them up. The total is the tweet's value for that reader specifically. The tweet with the highest score climbs highest in that reader's feed.
In other words, the same tweet can score 12 with reader A and 0.4 with reader B, depending on what the model predicts each will do (copy the link vs just scroll). The score doesn't exist in absolute terms. It's rebuilt at every feed opening, for every (tweet, reader) pair.
The prediction model itself is a 2560-dimension transformer, 8 layers, looking at 1,022 items of reader history. Its weights are not in the repo. But the formula that applies weights on top of predictions is published openly, and that's what follows.
What the algorithm rewards: weights that lift a tweet
Here are the exact weights in descending order of impact. These are production values synced August 12, 2026, as exposed in the phoenix-rankall/ module.
| Reader's predicted action | Weight | Like equivalent |
|---|---|---|
| Copies the tweet link and shares it | +20 | 40 likes |
| Replies to an original tweet, if you mutually follow (5 + 15 bonus) | +20 | 40 likes |
| Quote-tweets | +5 | 10 likes |
| Replies (non-mutual) | +5 | 10 likes |
| Shares via DM | +5 | 10 likes |
| Follows you from this tweet | +4 | 8 likes |
| Taps the "share" button | +2 | 4 likes |
| Reposts | +1 | 2 likes |
| Likes | +0.5 | baseline |
| Taps the tweet (opens it) | +0.4 | 0.8 like |
| Opens an external link | +0.2 | 0.4 like |
| Expands photo / opens video / "quality" video view | +0.05 | 0.1 like |
| Taps a quoted tweet | +0.05 | 0.1 like |
| Keeps reading (dwell time, per tick) | +0.004 | negligible |
| Binary "dwell" yes/no | 0 | zero |
| Taps your profile | 0 | zero |
What kills a tweet: penalties
The negative weights are massive. A single predicted negative signal can wipe out dozens of predicted likes.
| Reader's predicted action | Weight | Likes canceled |
|---|---|---|
| Reports the tweet | -234 | 468 likes canceled |
| Mutes you | -58.8 | 117 likes canceled |
| Taps "Not interested" | -43.2 | 86 likes canceled |
| Blocks you | -31.2 | 62 likes canceled |
| Doesn't dwell (immediate bounce) | -0.02 | negligible |
Three systemic cuts after scoring
1. Same-author penalty in the same feed
Your first tweet in a reader's feed keeps its full score (multiplier 1). Your second tweet in the same feed is multiplied by 0.625. Your third by ~0.44. The penalty keeps dropping but floors at 0.25. Flooding a feed is explicitly coded against. Spacing your posts is an algorithmic decision, not just a nice editorial habit.
2. The 25% tax (non-follower)
If the reader doesn't follow you, your score is multiplied by 0.75 before ranking. That's the famous "in-network bonus" flipped. More counter-intuitive: the same tax applies to replies and reposts even if the reader follows you. Only original tweets from followed accounts keep full weight. Replies and reposts are structurally weaker, even in-network.
3. Similar-post reranking
After the initial score, a reranker with a θ = 0.65 threshold trims tweets that are too similar to one another. You can lose several slots in a feed simply because your tweet looks too much like the one just above. Two very similar threads on the same topic won't climb together, even if both score high individually.
How your tweet enters the candidate pool
For You is rebuilt at every app open. About 35 publications make the final feed you scroll. Before scoring, they must first enter the candidate pool via one of three channels:
- Thunder (in-network): live store of recent tweets from accounts the reader follows. Up to 1,200 candidates. Primary channel if you already follow each other.
- Phoenix retrieval (out-of-network): Grok finds semantically related tweets. Up to 1,000 candidates. This channel lets an unknown account surface.
- SimClusters (out-of-network): Twitter's 2020-era interest clusters (20 million users classified into 145,000 clusters). Still active in 2026. Up to 800 candidates.
Once in the pool, Grok scores every candidate together. It ignores the entry door, except for the -25% tax applied when the reader doesn't follow you.
Filters that can still kill a high score
Ranking and visibility are two separate systems. A tweet can score first in For You and be pulled from the feed right after by a visibility filter. Two regimes:
In-network (followers): softer filters. Only blocks, mutes, suspensions. NSFW often stays behind a warning rather than being hidden.
Recommendations (out-of-network): much stricter filters. Removed: spam, "Do Not Amplify", NSFW, compromised accounts, impersonation. A tweet may stay visible to your followers and disappear entirely from For You recommendations.
Video case: the small +0.05 credit for "quality view" only applies if the video exceeds 10 seconds of watch time. Below that, it counts as a plain play, near-zero positive signal.
10 hidden levers (exclusive from direct source-code reading)
Direct reading of files in the xai-org/x-algorithm repo surfaced ten mechanisms not mentioned in the summaries floating around. Each point below is verifiable in the code (exact file path indicated).
1. The Premium moat via UserCredV2
The user credibility PageRank (user-cred-v2/UserCredV2App.scala:174) uses Premium accounts as its exclusive seed (blue, gold, gray verified, verified org, affiliate). Translation: if you're not Premium, your credibility score only grows through follows and engagements you receive from Premium accounts. The formula (UserCredV2.scala:10-18): score = clamp(0, 100, 165.2 + 7.07 × ln(mass)). A score above 50 exempts you from most Botmaker anti-spam rules. Structural moat.
2. Grox "slop_score": AI-generated content detection
The grox/flows/upa/models.py pipeline runs a Gemma classifier on every tweet and emits a slop_score (generic low-value AI content), has_minor_score, isHighQuality, isSpam. A high slop_score feeds enforcement_user.yaml:52-56 which applies the SpamHighRecall label for 30 days. For anyone generating AI content at scale: this is the most hostile lever of 2026. Tweets must have structure, specific context, not be paraphrased templates.
3. Report is 3x heavier than in 2023
The -234 report weight is three times more destructive than in 2023 (where it was around -74). xAI massively increased the report signal's power. An account accumulating reports also sees its PageRank mass drop via agatha/scalding/labels/reports_per_fav/ on a 30-day window.
4. New-user friction: the 5-follow wall
A new account with fewer than 5 follows has an OON factor of 0.00001 (home-mixer/params/config.rs:38). In other words: its tweets barely ever surface to non-followers. The condition to "exit the sandbox" is following 5+ accounts and exceeding an engagement threshold (NewUserMinEngagementFilter). Order to respect for a fresh account: follow 5+ accounts, then post.
5. Topic feed OON penalty is x0.5 (not x0.75)
The non-follower tax is 25% in the main feed, but climbs to 50% in a topic feed (TopicOonWeightFactor, param.rs:267-271). A tweet seen from a topic is twice as devalued as one seen from the regular For You.
6. BDSM: 8 named behavioral detectors
The BDSM transformer (bdsm/README.md:23-40) runs 8 detection heads with explicit names: FollowBot, LikeBot, EngagementAmplifier, ReplySpamBot, TweetSpamBot, RTBot, MultiActionBot. Uses time-aware RoPE to detect burstiness and mechanical cadences. Avoid at all costs: constant intervals between actions, repeating sequences, dozens of actions per minute. The model uses 256 action types and 512-token sequences.
7. Coordinated inauthentic behavior
grox/flows/reply_spam/classifier_coordinated_spam.py and Botmaker AgathaSpamProduction__ApplySearchTopTweetLabel.bot detect groups of accounts replying in coordination on the same content. Trigger anchor_campaign_suspend (direct suspension) or anchor_campaign_user (SpamHighRecall). Typical target: collectives boosting the same threads in sync.
8. Pinning a low-quality link = 7 days of spam label
botmaker-rules/scarecrow/bot/PinnedLowQualityOrBadUrl.bot: pinning a tweet containing a link classified BAD or LOW_QUALITY (by internal Twitter tables) applies the SPAM_HIGH_RECALL label for 7 days, even if you change the pin afterward. Every new follow re-triggers this evaluation. Watch for shady URL shorteners, unmasked affiliate links, blacklisted sites.
9. Grok reply spam on high-viz conversation
A reply on a viral thread rated by Grok with a spamScore ≥ 0.97 triggers RISKY_HIGH_VIZ_REPLY for 14 days (botmaker-rules/scarecrow/bot/GroxTweetProcessor.bot). Exemptions: accounts with cred score ≥ 50 (engaged Premium), gray verified, root conversation authors. Practical translation: opportunistic replies on viral tweets are under active AI surveillance.
10. Under the Hood: audit your own labels
xAI opened a under-the-hood/ tool that lets each user see the labels applied to their account (SpamHighRecall, RiskyHighVizReply, DoNotAmplify, etc.). New in 2026. Go check your own status: if you're silently labeled, you can course-correct before your reach collapses.
sink_policy.yaml shipped with sentinel 9.99), and some Botmaker rules are explicitly withheld from the repo to prevent direct exploitation. About 20 rules published out of the total.What to do (in practice)
- Write originals that make people want to reply, quote, copy, and send to a friend. The trio quote + copy-link + mutual reply = the real jackpot. A tweet that makes someone say "I have to DM this to X" is worth a thousand tweets that just collect likes.
- Make the tweet itself worth a follow. A tweet that triggers a +4 (follow from tweet) is mechanically 8 times stronger than a tweet just collecting likes.
- Talk with your mutual followers. A reply on your original from a mutual is worth 20, not 5. Your community drives your reach, not strangers.
- Stay within 48 hours. Recycle by posting new stuff, don't hope for an old post to come back. Nothing older than 48h enters For You.
- If you're small (under 1000 followers), post originals within the first 24 hours. Aim for slot 15-16, not position 1. The system's real gift is this modest bump.
- Space out your publications. The 2nd tweet in the same feed is already worth 37.5% less. Three tweets in a row = the 3rd is worth almost nothing.
- Video: minimum 10 seconds. Below that, you lose the +0.05 per quality view.
What not to do anymore
- Farm likes. Nearly decorative at +0.5. Most creators (French and English) optimize the wrong signal.
- Farm profile visits. Weight zero. Zero.
- Farm dwell time. Binary dwell is zero. Continuous time counts for almost nothing.
- Use replies and reposts as a growth hack toward strangers. These get filtered out-of-network before even reaching the ranker. And even with your followers, they take a 25% haircut.
- Blast several tweets in a row. The same-author penalty hits hard and fast.
- Bait reports, mutes, or "not interested". Edgy content that triggers silent mutes does more damage than what it brings in engagement.
- Count on NSFW or spammy stuff for reach. Recommendations will drop you even if your followers still see your tweets.
- Wait a week. No tweet comes back from more than 48h.
FAQ
- Who published the X For You algorithm source code in 2026?
- xAI, the company that runs X, published the code on GitHub under the
xai-org/x-algorithmrepo on August 12, 2026. This is the second open-source wave after the firstthe-algorithmrepo from March 2023. 370,523 lines of code, full Phoenix + Grok + SimClusters architecture. - Which signal weighs the most in tweet scoring?
- Copying the tweet link is worth +20 points. It's the heaviest positive signal, tied with a mutual-follow reply on an original tweet (5 + 15 mutual bonus). A like is only worth +0.5 point, meaning 40 times less than a copy-link.
- Which signal kills a tweet the most?
- A report is worth -234 points, equivalent to 468 likes annihilated. A mute is -58.8, worse than a block (-31.2). Silent mute does more damage than a loud block. "Not interested" is -43.2.
- Does dwell time really count?
- Much less than most people think. Binary dwell (yes/no a user stays on the tweet) is worth 0 point. Continuous time is only worth +0.004 per tick. Spending 10 more seconds on a tweet is worth less than a single like.
- How long is a tweet eligible for For You?
- 48 hours max. Nothing older enters the candidate pool. No weekly best-of, no revival of older content. After 48h, a tweet is dead on For You and cannot rebound.
- How can a small account break through with For You?
- There's an explicit boost: fewer than 1000 followers, fewer than 1000 cumulated impressions, tweet under 24 hours old. This lifts an original tweet to slot 15 or 16, not position 1. The tweet must also score in the top 85% of the stack to benefit from this boost.
- Does the mutual boost apply to reposts and replies?
- No. The +15 bonus for a mutual-follow reply applies only to original tweets, not replies or reposts. xAI shipped a broader version in July 2026 then rolled it back after complaints during the World Cup.
- Does the Following tab use the same algorithm?
- No. The Following tab is a pure reverse-chronological feed, no weighting. This algorithm and its weights apply only to the For You tab.
- Do profile visits help my reach?
- No. Profile click is worth zero points in the formula. It's a totally ignored signal for For You ranking. Farming profile visits does nothing algorithmically, even if it can help your follow conversions.
- Do scores change based on the reader?
- Yes, totally. A tweet's score is rebuilt for every (tweet, reader) pair based on the model's behavioral predictions on that specific reader. The same tweet can score 12 with one reader and 0.4 with another. There's no absolute quality score.