
The X Algorithm in 2026: What xAI Just Open-Sourced, and How to Actually Grow on X
The new X algorithm is one Grok-1 transformer scoring ~15 engagement actions per post. Follows are the strongest positive. Replies the author engages with come second. Small accounts (under 1K followers) get extra spam screening on replies — by name, in the code. Video over a duration threshold and a passing "banger" score unlock the rest. No tweepcred, no SimClusters, no link penalty in the open source — but every new post starts at MediumRisk until Grok safety-clears it. Below: the code receipts, plus a weekly playbook.
On May 15, 2026, xAI pushed the full source of X's For You algorithm to GitHub. The 2023 dump was a partial photo of a dying system. This one is the live engine — Rust, Python, a Grok-1 transformer, and a content-understanding service called Grox.
What did xAI actually open-source on May 15, 2026?
The release contains the end-to-end For You pipeline. Thunder (thunder/) serves recent posts from accounts you follow via in-memory gRPC. Phoenix Retrieval (phoenix/) is a two-tower model that pulls out-of-network candidates by embedding similarity. Both feed Home Mixer (home-mixer/) — the Rust orchestrator that filters, hydrates context, and scores everything with a Grok-architecture transformer predicting ~15 engagement actions per candidate. A new Python service called Grox (grox/) runs Vision-Language Models over every post for spam, safety, "banger" quality, and reply ranking. The README is blunt: "We have eliminated every single hand-engineered feature and most heuristics from the system." One thing is missing — the exact weight values live in a crate::params module that wasn't shipped. We know the signs and order of the signals, not the precise ratios. Every "reply is worth 150 likes" quote going around right now is reverse-engineered, not from the OSS release.
How does the For You feed score your post?
Every candidate runs through one formula in weighted_scorer.rs: Final Score = Σ (weight_i × P(action_i)) + NEGATIVE_SCORES_OFFSET. The Phoenix Ranker — a Grok-architecture transformer — predicts the probability you'll perform each of ~15 actions on a given post. Each predicted probability is multiplied by a weight, then summed. After that, the author diversity scorer attenuates repeat-author posts, and the OON scorer down-weights out-of-network candidates. There's no separate tweepcred, no SimClusters bucket, no hand-tuned topic affinity — the transformer reads your action history and the post content directly. The strongest positive predictions are follow-from-feed, author-engaged replies, and reposts; the strongest negatives are predicted "Not Interested" and block/mute/report. Likes sit at the bottom of the positive stack, so a post that earns hearts but no follows, replies, or shares is engineering itself into the floor. Here are the signals the ranker predicts:
| Signal | Sign | Notes |
|---|---|---|
| Follow author from feed | +++ | Strongest single positive — rarest action |
| Reply | ++ | Author-replied replies scored separately by Grok |
| Retweet / repost | ++ | |
| Quote post | + | |
| Profile click | + | Separate from link click |
| Share via DM | + | First-class signal |
| Share via copy link | + | Separate from DM share |
| Photo expand | + | |
| Click (link) | + | No hard-coded link penalty in the OSS |
| Video Quality View (VQV) | + | Gated by MIN_VIDEO_DURATION_MS |
| Dwell binary + continuous | + | Stacked |
| Favorite / like | + | Lowest-tier positive |
| Not Interested | − | Predicted "Not Interested" actively subtracts |
| Block / mute / report | −− |
Reverse-engineering during the release window cited rough ratios — author-replied reply ~150× like, repost ~20×, generic reply ~13.5× like, bookmark ~10× (source) — but these are external estimates, not from the OSS. Treat them as directional, not literal.

What does the algorithm actually reward?
Here are the code receipts. A few things are unambiguous in the source, with or without exact weights.
- Follows from the feed dominate.
FOLLOW_AUTHOR_WEIGHTis the rarest positive — exactly why a single new follow off a post outranks dozens of likes. - Replies the author engages with carry extra weight. Reply quality is independently scored by Grok in
reply_ranking.pyon a 0–3 scale, with a separate prompt for replies to large accounts. Low-effort "this" or emoji-only replies score near zero regardless of likes. - Video above the duration threshold.
VQV_WEIGHTonly fires aboveMIN_VIDEO_DURATION_MS; sub-threshold video earns zero on that signal. - The "banger" screen. Every post runs through
banger_initial_screen.py, which returns aquality_score(0–1), aslop_score, and anis_image_editable_by_grokflag. Pass threshold isscore >= 0.4; below that, your post is treated as screen-fodder. - Profile clicks, DM shares, and copy-link shares are first-class signals. Each has its own weight. A bio that earns curiosity clicks is a ranking input, not vanity.
- The face-pile has a 1K floor.
following_replied_users_hydrator.rsgates the "people you follow replied to this" social-proof badge withVIEWER_FOLLOWERS_THRESHOLD: i64 = 1000— if you're under 1K followers, that boost is invisible to your audience.
What kills your reach in the new algorithm?
Suppression isn't one button. It's a stack of filters, demotions, and learned negative predictions — and a few fire silently on every fresh post.

Predicted negative actions subtract. If the transformer predicts you'll get "Not Interested"-ed, blocked, muted, or reported, those probabilities multiply by negative weights and subtract before sorting. Silent, probabilistic — the closest thing to a learned shadow ban in the codebase.
The VFFilter. vf_filter.rs drops any candidate carrying a SafetyResult(action: Drop). No notification — the post is just gone for that viewer.
Brand-safety MediumRisk labels. brand_safety.rs is the explicit "freedom of reach" demotion list: NSFW_HIGH_PRECISION, NSFW_TEXT, NSFA_KEYWORDS_HIGH_PRECISION, NSFA_COMMUNITY_NOTE, GROK_NSFA, GORE_AND_VIOLENCE_HIGH_PRECISION, and a flat DO_NOT_AMPLIFY. Anything tagged here keeps in-network reach but loses out-of-network distribution.
Cold-start suppression. Per the PTOS_CUTOFF_TWEET_ID rule (L51–54 of brand_safety.rs), new posts default to MediumRisk until Grok safety-clears them. Every fresh post pays a "prove you're safe" tax in the first few minutes.
Author diversity decay. author_diversity_scorer.rs applies multiplier = (1-floor) * decay^position + floor (L36-38). Your second post in a viewer's session gets exponentially attenuated. Your third gets crushed.
Out-of-network handicap. OON candidates are multiplied by OON_WEIGHT_FACTOR < 1. Reach starts in the follower pool — breaking out requires overpowering that fractional handicap.

Why does the algorithm treat small accounts differently?
This is the most explicit "small account penalty" code in the repo. In task_spam_detection.py, users in reply trees are bucketed by follower count: lte_100, lte_500, lte_1000, gt_1000. The spam VLM runs separately on the lte_1000 bucket, and when it flags a reply, the code literally logs "Reply Spam Found for lower than 1000 follower bucket." There's a dedicated metric counter for it. Replies from accounts under 1,000 followers face an extra spam screen bigger accounts don't get — mass-replying from a fresh account runs straight into a filter that's named after you in the code. Combined with the 1K viewer threshold on the face-pile, the gap between sub-1K and post-1K reach is larger than most creators realize. The fix isn't to stop replying — it's to make every reply count. Grok's 0–3 scale rewards substance and additivity, so a handful of high-effort replies under a big account beats a hundred drive-by ones.
What's new in 2026 vs. the 2023 algorithm?
The biggest shift: ranking is now a single Grok-1 transformer instead of a stack of hand-engineered features. No tweepcred scalar, no SimClusters, no explicit topic affinity — the transformer learns it all from your action history. All media (video, audio, image) gets multimodal embeddings (v5), so visual content has parity with text in candidate generation. Grox is new — VLM-based spam, safety, banger quality, and reply ranking with a dedicated prompt for replies to large accounts. Community Notes is now a ranking signal — NSFA_COMMUNITY_NOTE is in the MediumRisk list. There's a new "Safe Gap" ads blender, a new-user cluster for cold-start, and an is_image_editable_by_grok flag on every post. One counter-intuitive finding: there's no hard-coded link penalty in the open code. Legacy 2023 advice that "links kill reach" is unverified by this release.
Jacob C. Edmunds gave a creator-side read on what the new system feels like in practice — useful contrast to the code view:
Your 2026 growth playbook for X
Translate the code into weekly action. Every point maps to a specific signal or filter above — push positive predictions higher (follows, author-engaged replies, DM shares, VQV) while staying clear of the gates that drain reach (author-diversity decay, the lte_1000 spam screen, MediumRisk, the already-seen bloom).
- Post 3–5 standalone posts per day, no more. Author-diversity decay punishes burst-posting in any single viewer session. Spread posts so different sessions catch different posts.
- Reply substantively to 5–10 larger accounts in your niche. Aim for replies that earn a like or reply back from the author — those carry weight under the 0–3 reply-ranker. If you're under 1K followers, quality is the entire game.
- Ship one video per week longer than
MIN_VIDEO_DURATION_MS(treat ~60 seconds as a conservative guess until xAI ships the constant). VQV only fires above the threshold. - Treat your bio as a ranking input. Profile clicks are a first-class signal. A bio that promises something specific earns them.
- Optimize for follow-from-feed. Pin your strongest post. Make the next step clear. A single new follow outweighs dozens of likes.
- Track DM shares and copy-link shares as KPIs, not likes. They're separate, higher-weight signals.
- Engage with replies on your own posts in the first hour. Author-replied replies get separate Grok scoring.
What should you stop doing immediately?
Each of these maps to a specific filter or decay function in the code — not stylistic preferences, but things the ranker actively penalizes or ignores. Most are residue from old 2023-era growth advice.
- Stop burst-posting in a single hour. Diversity decay halves your second post and crushes the third in the same viewer session.
- Stop reply-guy spam from a small account. The
lte_1000bucket is named in code, runs an extra VLM screen, and tracks a metric counter every time it flags one of your replies. - Stop using engagement pods. The transformer reads post content, not just early engagement. Old "first 30 minutes" pod boosts don't translate.
- Stop reposting your own content within hours. The already-seen bloom filter delivers one impression per user, ever. Mass-RTs are a no-op.
- Stop chasing likes. Likes are the lowest-tier positive. Track follows, replies, DM shares, and profile clicks instead.
- Stop assuming links tank reach. Nothing in the open code penalizes a link. Click is positive. If your link posts underperform, it's the post — not the URL.
Start writing for the new X ranker with Postory
Want every post optimized for the new X ranker before you hit publish? Postory's AI writes for X's exact scoring signals — reply-bait, video length thresholds, mutual-follow context, the works. It reads your account's recent performance and adapts each draft to the post types that actually earn follows and DM shares for you specifically. To go deeper on what's making it through the ranker right now, Postory's social media analyzer breaks down which of your past posts hit on the signals the new algorithm rewards.
Try Postory free — write posts the new X algorithm actually wants to surface.
FAQ
Q: Is the May 2026 release the complete X algorithm?
Mostly, but not entirely. The full pipeline (Thunder, Phoenix Retrieval, Home Mixer, Grox) is shipped, along with a downloadable mini Phoenix model checkpoint. The exact weight values used in production live in a crate::params module that wasn't included, and the trained Phoenix coefficients aren't public. You can see the architecture, the signals, and the filters — but not the precise scoring multipliers.
Q: Do links still hurt reach on X in 2026?
There is no hard-coded link penalty anywhere in the open-source release. CLICK_WEIGHT is positive. If a link demotion exists, it was learned by the transformer rather than written as a rule. Posts with links can absolutely perform — the issue is almost always the post itself, not the URL.
Q: How do I know if I'm shadow-banned on X?
The closest thing to shadow-banning in the code is the Visibility Filter (VFFilter) dropping anything tagged SafetyResult(action: Drop), plus the MediumRisk label list demoting reach for NSFW, NSFA, gore, or DO_NOT_AMPLIFY tags. If your impressions collapsed without an obvious cause, check whether recent posts could trip those classifiers. Our shadow-ban recovery guide walks through the diagnostics.
Q: Does posting time still matter on X in 2026?
Less than it used to. Posts now keep getting distribution for up to ~24 hours after publish, instead of the old "first 30 minutes decide everything" model. Time still matters for news-driven niches, but for evergreen content the timing premium has shrunk meaningfully — author-diversity decay matters more than clock time now.
Q: How is the 2026 X algorithm different from the 2023 leak?
The 2023 dump described hand-engineered features, tweepcred, and SimClusters heuristics. The 2026 release replaces all of that with a single Grok-1 transformer predicting engagement probabilities across ~15 actions per post. Grox is new, multimodal embeddings v5 cover all media, Community Notes is now a reach-demoting label, and there's an explicit "banger" quality screen. Our Twitter algorithm guide covers the older architecture in detail.
Related articles

How Does the Twitter/X Algorithm Work?
A plain-English breakdown of the Twitter algorithm in 2026 — what signals it rewards, why replies beat likes, and how to actually get more reach.
Apr 22, 2026

What Does It Mean to Boost a Post on LinkedIn?
Wondering what it means to boost a post on LinkedIn? Here's how boosting works, what it costs, and when (or if) you should actually do it.
Apr 25, 2026

What to Comment on LinkedIn Posts?
Stop typing "Great post!" on LinkedIn. Here's exactly what to comment on different post types — with templates that drive visibility.
Apr 25, 2026