The X algorithm in May 2026
Ten-article deep dive on the xai-org/x-algorithm repo: the Phoenix transformer, the 19 engagement heads, OON retrieval, negative signals, voice as an embedding, and what the rewrite means for creators on X.
Article 2
How Phoenix ranks every post: a creator's guide to the 19 engagement heads
X.AI's open-sourced Phoenix model does not score posts on a single "engagement" number. It predicts 19 separate user actions in parallel: favorites, replies, quotes, reposts, photo expands, clicks, profile clicks, video quality views, three share variants, two dwell variants, follow-author, plus four negative actions and an implicit not-dwelled signal. A final weighted sum decides feed position. This article walks each head from the phoenix/run_pipeline.py source: which UI gesture trains it, which weight it pairs with in home-mixer/scorers/weighted_scorer.rs, and what content patterns light it up. By the end, a creator understands why a post that gets 500 likes can rank below one with 80 likes and a 12-second dwell. We close with a quick framework for designing posts that fire multiple heads, not one.
May 20, 2026 · 16 min read
Article 3
The negative-signal economy: how one mute outweighs 50 likes on X
Most algorithm advice is additive: "do this, ship that." The math of the 2026 X ranker is subtractive. Net-negative posts get pushed through a different score-offset branch in weighted_scorer.rs where the combined score is rescaled by (combined + NEGATIVE_WEIGHTS_SUM) / WEIGHTS_SUM × NEGATIVE_SCORES_OFFSET. One predicted mute or not-interested by the model overwhelms dozens of predicted likes. This article traces every negative signal: the four explicit weight terms, the implicit not_dwelled_score, the four hard-kill filters that run upstream of any scoring, and the off-voice-drift to mute pipeline. We close with a creator-specific section: what content patterns trigger followers to mute, why voice drift is the single biggest negative-signal driver, and how to detect drift before publish.
May 21, 2026 · 13 min read
Article 4
Your voice is an embedding: how Phoenix encodes creator identity
Phoenix does not "see" your account as a username. It sees you as a hashed author ID combined with a post embedding, projected into a learned space. Every viewer who has interacted with you has a history sequence that contains those projections, paired with the action they took. When Phoenix scores any new candidate from you, the candidate-isolation mask lets that candidate attend to the viewer's full history but not to the other candidates in the batch. Net effect: your voice is encoded in two places: the author embedding itself, learned at training time, and the distribution of your posts in viewers' history sequences. Drift either of those and the model's prediction of you collapses. This article makes the math intuitive for a non-ML creator, and explains exactly what "voice fidelity" means in Phoenix-native terms: tight distribution in the post-embedding space, anchored by a stable author embedding.
May 22, 2026 · 17 min read
Article 5
Dwell time is the new like: the 4 dwell heads ranking your posts
The 2023 ranker had one weighted dwell-related term. The 2026 ranker has four. dwell_score is the discrete recap-dwell head (CLIENT_TWEET_RECAP_DWELLED, index 11). dwell_time is its continuous-regression sibling. click_dwell_time is dwell-after-click, a far stronger trust signal than the click itself. not_dwelled_score is the implicit penalty for scroll-past. Video has its own quality-view head (vqv_score, index 13) gated by MIN_VIDEO_DURATION_MS. This article unpacks each, explains why dwell is harder to game than likes (it is conditioned on history, not on social proof), and gives a writing playbook for posts that halt scroll: hook density, line-break rhythm, and the "second-line payoff" pattern. Voice tools that optimize headline-only metrics will systematically underperform on dwell.
May 23, 2026 · 13 min read
Article 6
Out of network is the new in-network: how Phoenix retrieval surfaces unfollowed creators
Three of the twelve home-mixer sources are dedicated to surfacing posts from accounts the viewer does not follow: phoenix_source.rs (general OON retrieval), phoenix_moe_source.rs (mixture-of-experts variant), and phoenix_topics_source.rs (topic-keyed retrieval). All three call a two-tower model that embeds user history and candidate posts into a shared space and returns the top-K via dot product. A single OON_WEIGHT_FACTOR in oon_scorer.rs rescales those candidates against in-network ones for the final blend. This article explains the two-tower math, why OON is no longer a small fraction of the feed, and how a creator gets surfaced to non-followers. We finish with a concrete playbook: write embedding-distinctive copy, not generic engagement copy. The OON retrieval lane is the largest single growth surface a creator has on X in 2026.
May 24, 2026 · 13 min read
Article 7
48 hours in Thunder: why X recency is a window, not a boost
"Recency boost" is a myth that survived from 2020 Twitter advice into 2026. The 2026 algorithm has no recency multiplier in weighted_scorer.rs. What it has is a recency window: Thunder's post_store.rs retains posts for a default of 2 days, after which they fall out of the in-network candidate pool entirely. tweet_mixer_source.rs applies a similar age cutoff via MAX_POST_AGE. After that, posts can still surface via OON Phoenix retrieval but only if their embedding is strong enough. Combined with the three-layer impression bloom (previously-seen, previously-served, previously-seen-backup), recency in 2026 is binary: in the window or out of it. This article kills the multiplier myth, explains the window architecture, and gives a posting-cadence playbook that respects the 48-hour reality and the diversity scorer's per-author caps simultaneously.
May 25, 2026 · 12 min read
Article 8
Why X feeds reject your third post of the day: author diversity and DPP
The home-mixer applies two diversity passes that no creator-facing article has explained. First, author_diversity_scorer.rs sorts candidates by weighted score, then walks the list applying an exponential decay multiplier per author occurrence: (1 - floor) * decay^position + floor. The first post from a creator gets the full score; the second gets decay; the third gets decay²; fast approaching floor. Second, vm_ranker.rs applies a Determinantal Point Process rerank at the top of feed when theta > 0, explicitly maximizing diversity-adjusted score across the visible top-max_selected_rank slots. Combined: a creator who posts 10 times a day has 7 of those posts hard-capped near the diversity floor. This article quantifies the decay curve, explains DPP in plain language, and rewrites the "how often to post" question into the right shape: post fewer times, with higher per-post voice distinctiveness.
May 26, 2026 · 12 min read
Article 9
The 5 ways X steals your feed slots before organic content gets ranked
Creators chase top-10 placement assuming there are 10 slots. There are not. Every rendered For You feed includes a who-to-follow module of up to 3 users, one or more ads spaced by MIN_POSTS_FOR_ADS, optional full-cover or half-cover prompts that take the top slot, optional push-to-home heroes if the user arrived from a notification, and cached-posts continuation slots from the prior session. By the time organic candidates are placed, the visible top-10 is often top-6 organic. This article inventories every non-organic source in home-mixer/sources/, the slot quotas where documented, and the safe-gap blending math from home-mixer/ads/safe_gap_blender.rs. We finish with a session-strategy section: when followers see your post, how much of the surrounding feed is theirs and not X's.
May 27, 2026 · 11 min read
Article 10
VoiceMoat vs Tweet Hunter, Typefully, Hypefury: which one writes for the 2026 algorithm
Three of the major AI tweet writers were built when the X ranker was a heuristic-plus-GBDT pipeline scoring each post on a single weighted scalar. Their templates, viral hooks, and engagement maximizers are calibrated to that world. In May 2026, X.AI open-sourced a Grok-derived transformer ranker that scores 19 separate engagement heads, applies negative-signal weights of equal magnitude, isolates candidates from each other in the attention mask, and conditions every score on the viewer's history sequence. The new moat is voice consistency across that history sequence, because consistency compounds per-creator across all 19 heads while drift triggers mute and not-interested with asymmetric penalty. This article compares Tweet Hunter, Typefully, Hypefury, and VoiceMoat against six 2026-algorithm criteria. The conclusion is structural, not feature-list: only one of the four is built on the voice-fidelity assumption the new algorithm rewards.
May 28, 2026 · 13 min read