I Read Every Line of X Algorithm. Here's How to Go Viral in 2026
Based on a deep code analysis of the May 15, 2026 @X "For You" algorithm release. Released by @elonmusk
X just dropped a massive update to its open-source algorithm. Almost nobody read the code.
I did.
What used to be "Twitter's Heavy Ranker" is now a system called Phoenix, powered by a Grok-based transformer. A single AI now decides what you see by predicting 19 different engagement actions for every post.
If you don't understand how this AI thinks, you'll keep posting into the void.
Let's break it down.
The 5 Second Mental Model
Every time someone opens For You, X runs this exact pipeline:
- Pulls candidates from your network (Thunder) and outside it (Phoenix Retrieval).
- Runs 14 filters that can kill your post before scoring.
- The Phoenix transformer predicts probabilities for 19 actions.
- A weighted scorer combines them into one number.
- Three multipliers crush or boost that number.
- Top results win the feed slot.
That's it. Your job is to maximize the high-weight actions and avoid the multipliers that destroy reach.
🟢 Best Things You Can Do
These are the actions Phoenix rewards most. Listed from highest impact to lowest.
1. Get Replies (REPLY_WEIGHT)
The single most rewarded positive action in the code. A reply means someone stopped scrolling to type. Phoenix treats it as the strongest signal that content is conversation worthy.
Tactic: Ask questions. Post hot takes. Leave thoughts incomplete.
2. Get Follows From The Post (FOLLOW_AUTHOR_WEIGHT)
When someone follows you after seeing a post, the post gets credit. This is why "build a profile worth following" beats "build one viral tweet."
Tactic: Make every post answer "why follow this person for more?"
3. Get Profile Clicks (PROFILE_CLICK_WEIGHT)
Profile clicks are a high value action because they compound into follows. Unique perspectives and signature styles drive curiosity clicks.
4. Get Quote Tweets (QUOTE_WEIGHT)
Better than a regular repost because people add their own spin. Hot takes, bold frameworks, and predictions generate quote chains.
Bonus: if someone clicks into your quoted post, you get a second positive weight via QUOTED_CLICK_WEIGHT.
5. Get Shared via DM (SHARE_VIA_DM_WEIGHT) 🆕
New in 2026. This is the hidden god tier signal. When someone privately messages your post to a friend, X treats it as the strongest possible "this is worth sharing" signal.
Tactic: Make people think "X needs to see this". Personal insights, niche memes, screenshots that feel sendable.
6. Get Shared via Copy Link (SHARE_VIA_COPY_LINK_WEIGHT) 🆕
Also new as a separate weight. Anything that travels outside the app earns reward.
7. Get Retweeted (RETWEET_WEIGHT)
Pure amplification signal. Especially powerful from large accounts.
8. Score on Video Quality Views (VQV_WEIGHT × duration gate)
Critical: this weight is multiplied by zero if your video is shorter than MIN_VIDEO_DURATION_MS. The bucket boundaries in the code reveal the tiers: ≤10s, 10–60s, >60s.
Tactic: Aim for 10–60 second videos with actual substance. A 6 second clip is invisible to this signal.
🟡 Medium Impact Actions
Real signals, but lower weight per action.
9. Continuous Dwell Time (CONT_DWELL_TIME_WEIGHT) 🆕
Phoenix predicts how many seconds a user will spend on your post. The model is normalized against a 30 second scale, so every second up to ~30 counts.
Tactic: Long, dense, well structured posts win. Threads, carousels, captioned videos.
10. Photo Expand (PHOTO_EXPAND_WEIGHT)
When users tap your image to expand it. Reward images that beg for a tap: text inside image, comparisons, charts, screenshots.
11. Generic Clicks (CLICK_WEIGHT)
Clicks into the conversation, links, or thread expansion. Tease information rather than dumping it all at once.
12. Dwell Discrete Signal (DWELL_WEIGHT)
Did the user dwell on the post at all (binary signal, separate from continuous dwell time)?
13. Likes (FAVORITE_WEIGHT)
Yes, likes are last among the positives. They're cheap engagement, so the weight is the lowest of all the positive actions. They still count, they just don't carry a tweet alone.
🔴 Things That Destroy Your Reach
Negative actions are subtracted from your score. Listed from most destructive to least.
1. Reports (REPORT_WEIGHT — Nuclear)
The largest negative weight. Even unfounded reports tank visibility platform-wide. Phoenix is trained to predict the probability a post will be reported and downranks anything that looks reportable.
2. Block Author (BLOCK_AUTHOR_WEIGHT — Severe)
Strongly signals your content is actively unwanted by similar users.
3. Mute Author (MUTE_AUTHOR_WEIGHT — Heavy)
Future posts get heavily downranked for users with similar profiles to the muter.
4. Not Dwelled (NOT_DWELLED_WEIGHT) 🆕
New in 2026. If users predictably scroll past without dwelling, Phoenix actively subtracts. Bait posts that get auto scrolled now actively hurt you, not just underperform.
5. Not Interested (NOT_INTERESTED_WEIGHT)
The mildest of the negatives. Still a penalty.
The Three Multipliers That Can Crush You
After Phoenix scores your post, three multipliers can murder it.
1) Out-of-Network-Penalty - (OON_WEIGHT_FACTOR ≈ 0.5–0.75)
If you're not followed by the viewer, your score gets multiplied by this factor. Your content needs to be ~2× as engaging as in network content just to break even.
2026 twist: there's now a separate TopicOonWeightFactor (gentler) and a NEW_USER_OON_WEIGHT_FACTOR (more lenient for new accounts).
Tactic: Post things that classify cleanly into a topic. The Topic OON penalty is softer than the For You penalty.
2) Author Diversity Decay - (× decay^position + floor)
For each additional post from you in the same session, your score gets multiplied by a decay factor with a floor:
- 1st post: 100% of score
- 2nd post: ~60–70%
- 3rd post: ~40–50%
- 4th post: ~30–40%
- 10th post: floor (~20%)
One exceptional post beats five mid ones. Spamming kills your own reach.
3) Video Duration Gate - (VQV × 0 or × full)
The Video Quality View weight is multiplied by zero if your video is under MIN_VIDEO_DURATION_MS. A short clip doesn't just underperform, it earns nothing from the video signal.
The 14 Filters That Kill You Before Scoring
Before Phoenix even sees your post, these 14 filters can drop it:
- duplicate posts
- posts older than MAX_POST_AGE (~24–72h)
- your own posts
- already seen posts (bloom filter)
- already served posts
- posts containing muted keywords
- posts from blocked/muted authors
- posts from authors you've been blocked by
- paywalled content you can't access
- ineligible topic posts
Plus 3 post scoring filters that drop NSFW, gore, violence, and duplicate conversation branches.
Brutal detail: in conversation dedupe, only the highest scoring branch survives. Don't put your best line in reply #3, put it in the root post.
The Banger Screen: Yes, There's a Quality Gate 🆕
The most underrated finding in the 2026 release: there's an entire Python service called Grox that runs a Grok vision model against your post.
It scores your post 0–1 on quality. The threshold to be flagged as a "banger" is 0.4.
It also returns a slop_score, yes, X literally measures how sloppy your post looks, plus content tags and a has_minor_score.
What loses points: generic LLM-flavored posts, "Here are 7 lessons from..." templates, endless emoji bullet lists with no substance, ultra generic engagement bait.
What wins: concrete, novel, well written posts with rich visuals matched to substantive text.
The 1,000 Follower Cliff Is Real
Multiple things change at exactly 1K followers:
The spam comment classifier explicitly buckets replies by follower count: ≤100, ≤500, ≤1000, >1000. Under 1K, your replies are presumed spam by default. Over 1K, you're treated as trustworthy.
The FollowingRepliedUsersHydrator only activates for viewers with ≥1,000 followers, showing them which friends already replied to a post.
Growth strategy: get to 1K followers as fast as possible. Real cliff, real consequences.
The "People Like Us" Score 🆕
Brand new in 2026: X now computes a MinHash Jaccard similarity between the viewer's follow set and the author's follow set.
Translation: posts from accounts that follow similar people to you score better, even if you don't follow each other.
This is why niche communities (crypto Twitter, AI Twitter, fight Twitter) have such strong viral mechanics. Massive mutual follow overlap inside the cluster.
Tactic: follow people in your niche. You're not just building your network, you're encoding your "identity vector" into the algorithm.
Killing Common Myths (With Code)
"Crypto/NFT/political content is shadowbanned."
False. Phoenix is topic agnostic. There's no topic suppression in the code. BUT the brand safety system flags NSFW, gore, hate, violent content, etc. And that absolutely kills reach.
"Hashtags help discovery."
False for For You. No hashtag feature exists in Phoenix. They only help with search.
"External links tank your reach."
Not in the code. No link penalty exists. But links can hurt dwell time and NOT_DWELLED is a real penalty.
"Blue checks get an automatic boost."
Not in the scorer. No "if subscriber: score × 1.5" line anywhere. Subscription status is tracked but not used as a direct multiplier in the public code.
"Post at peak hours."
Partly true. Peak hours give initial engagement velocity. But Phoenix's post age bucketing has 80 hourly buckets, a slow burn 3 AM tweet can still win.
The 2026 Playbook
What to actually do, based on a literal reading of the code:
✅ Optimize for share via DM. It's the highest rewarded new signal of 2026.
✅ Cross 1,000 followers as fast as possible.
✅ Post videos longer than 10 seconds. Ideally 10–60.
✅ Pick a clear topic and stay in it. Topic feeds have a softer OON penalty.
✅ Write for dwell time, not just likes. Up to ~30 seconds of attention counts.
✅ Post 1–2 great items per day. The diversity decay kills posts 4+.
✅ Make images worth tapping. PHOTO_EXPAND is a real positive weight.
✅ Reply to your own root post in the first hour. It feeds engagement upstream.
❌ Don't reply spam from a small account. The spam classifier is built for it.
❌ Don't post tiny videos. The VQV weight goes to zero.
❌ Don't quote tweet flagged content. Brand-safety verdicts cascade.
❌ Don't repost yourself within days. The bloom filter remembers.
❌ Don't post AI slop. The Grok screener flags it.
Final Word
The algorithm rewards content that makes specific people take specific actions.
Not aesthetic posts. Not "good takes." Not effort.
Actions.
Every post is a bet on a probability distribution. Phoenix asks: "Out of the 19 things this viewer might do, which is this post most likely to trigger?"
Your job is to engineer for the high weight actions and avoid the high penalty ones.
Master that and the algorithm pays.
Share this with one person who still says "their reach is throttled." It usually isn't. The algorithm is just doing exactly what the code says it does.











