[

[

x algorithm series

]

]

The 5 ways X steals your feed slots before organic content gets ranked

·

·

11 min read

By Prateek Singh, founder of VoiceMoat

By Prateek Singh, founder of VoiceMoat

Summarize with AIClaudeChatGPTPerplexityShareShare

Creators chasing "top-10 placement" on X are usually chasing a number that does not exist. The visible top-10 of a typical For You feed render is not ten organic candidates competing for ten slots. It is a mix that includes one or more ads, a who-to-follow module of up to three users, occasional prompt cards, push-to-home heroes if the viewer arrived from a notification, and cached-posts continuation slots from the previous session. By the time organic candidates from Phoenix's scoring layer reach the rendered feed, the visible top-10 is often a 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. Companion to A1: the May 2026 X algorithm, which walks the architectural shift, and A3: out of network is the new in network, which covers the organic OON retrieval lane.

The twelve home-mixer sources, by type

The home-mixer pipeline assembles each feed render from twelve candidate sources. They split into four categories.

The twelve home-mixer candidate sources, by category

Source

Category

Slot quota or trigger

thunder_source.rs (documented)

organic in-network

unbounded inside Thunder's 48-hour window

phoenix_source.rs (documented)

organic OON (general)

top-K from two-tower retrieval, K not in source

phoenix_moe_source.rs (documented)

organic OON (MoE)

expert-routed top-K

phoenix_topics_source.rs (documented)

organic OON (topic-keyed)

top-K per topic ID

ads_source.rs (documented)

non-organic ad

interleaved per safe-gap blender

who_to_follow_source.rs (documented)

non-organic module

max 3 users, exclusion list of last 200 surfaced

prompts_source.rs (documented)

non-organic prompt

4 types: INLINE, FULL_COVER, HALF_COVER, RELEVANCE_PROMPT

push_to_home_source.rs (documented)

non-organic hero

fires when viewer arrived from a notification

tweet_mixer_source.rs (documented)

auxiliary mix

candidates gated by MAX_POST_AGE

cached_posts_source.rs (documented)

session continuation

fires when viewer resumes prior session

scored_posts_source.rs (documented)

support

intermediate scored-list source

(two additional sources) (inferred)

(not enumerated in this pass)

remaining sources not detailed in public inventory references

Source: home-mixer/sources/ inventory

Four of the twelve are organic candidate sources (Thunder plus three Phoenix retrieval variants). Five are non-organic surfaces (ads, who-to-follow, prompts, push-to-home, cached-posts continuation). The remaining three are support and auxiliary pools. The split is the structural starting point for understanding what creators are competing for: organic posts compete with each other for the slots that survive after the non-organic surfaces have taken theirs.

Who-to-follow: one module, three users, two-hundred-user memory

home-mixer/sources/who_to_follow_source.rs exposes two named constants relevant to creators: MAX_WHO_TO_FOLLOW_USERS = 3 and EXCLUDED_USER_IDS_LIMIT = 200. The first caps the module at three suggested accounts per render. The second tracks the last 200 user IDs the viewer has already seen in this module and excludes them from re-surfacing.

Two practical implications. First, the who-to-follow module occupies one feed slot per render, displaying up to three accounts. Each of those accounts is competing for that slot via a separate ranking process not detailed in the open repo (likely involving graph signals, shared-interest models, and viewer-following affinity). Second, the 200-user exclusion memory means recommended accounts rotate. A creator appearing once in a viewer's who-to-follow module is excluded from that viewer's next several encounters with the module, until the exclusion list rolls over.

For creators thinking about follower growth, this surface is substantively different from organic feed placement. It is its own ranking lane, scored on different signals, with hard caps on appearances. Optimisation for the visible post unit (the focus of this series) does not affect who-to-follow placement directly.

Ads: the safe-gap blender

home-mixer/ads/safe_gap_blender.rs handles the interleaving of ad candidates with organic candidates in the final feed list. The blender enforces a MIN_POSTS_FOR_ADS minimum: a fixed number of organic posts must appear between consecutive ads. The specific value is not in the public release.

The blending mechanism is straightforward: as the rendered feed is assembled, the blender counts organic posts since the last ad inserted, and once the count crosses the minimum, the next eligible ad slot is filled with the highest-scoring ad candidate. The ad candidates themselves come from home-mixer/sources/ads_source.rs and are scored by their own ad-relevance pipeline, distinct from the organic Phoenix scoring.

For organic creators, ads occupy slots that would otherwise hold organic candidates. The math works out to roughly one or two ads visible in a typical scrolled feed pass, depending on the MIN_POSTS_FOR_ADS value and the depth of the scroll. Each ad takes one slot that an organic post could have occupied.

Prompts: four types, four behaviours

home-mixer/sources/prompts_source.rs exposes four prompt types: INLINE_PROMPT, FULL_COVER, HALF_COVER, and RELEVANCE_PROMPT. Each has a different render behaviour.

The four prompt types and their feed-render behaviour

Prompt type

Render behaviour

Slot impact

INLINE_PROMPT (documented)

appears inline in the feed scroll as a card

one slot

FULL_COVER (documented)

occupies the entire top position with a full-width card

displaces the top organic slot entirely

HALF_COVER (documented)

covers approximately half the visible area in a high position

displaces a high-attention slot

RELEVANCE_PROMPT (documented)

context-aware prompt tied to viewer state or recent action

varies

Source: home-mixer/sources/prompts_source.rs

The full-cover prompt is the most disruptive for organic distribution. When triggered, it takes position zero of the feed, pushing all organic candidates one slot lower. Position-zero attention is disproportionately valuable in any ranked feed (the click and dwell heads fire most reliably at the top), so a full-cover prompt effectively removes the highest-value organic slot from the render.

Prompts fire conditionally based on viewer state (new-user onboarding, inactive-period reactivation, opt-in flow continuation), not on every feed render. The percentage of renders that include a prompt is not in the public source. From the creator side, the prompt layer is an intermittent slot tax: rarely visible, but when visible, claims a high-attention slot.

A subtle implication for creators trying to reach new viewers via OON retrieval: new-user feed renders are more prompt-heavy than active-user renders. Onboarding prompts, suggested-topics prompts, and follow-recommendation prompts are all more likely on a viewer's first several sessions. New-user OON retrieval (gated by PhoenixRetrievalNewUserHistoryThreshold, walked in A3: out of network is the new in network) also operates on a different candidate pool than power-user OON. The combined effect is that organic candidates have fewer slots and a modified retrieval lane when reaching newer viewers. The audience-growth math therefore differs from the audience-engagement math; creators optimising for new-follower acquisition face a different slot allocation than creators optimising for existing-follower engagement.

Push-to-home: notification heroes

home-mixer/sources/push_to_home_source.rs fires when the viewer arrived at the For You feed from a notification (a mention, a reply, a like, a follow). The source injects a notification-related hero candidate at or near the top of the feed.

The mechanic is contextual: a viewer who taps a notification expects to land on the related content. Push-to-home's job is to surface that content immediately rather than burying it in the standard ranking. The hero candidate is typically the post that triggered the notification, plus optionally a related cluster.

For organic creators, push-to-home is largely transparent (it operates on the viewer's arrival context, not on candidate competition). The one exception: a creator's post that generated the viewer's notification gets surfaced for them through this path, which is its own implicit reach amplifier for posts that earn replies or mentions. Replies and quotes that generate notifications drive return visits that surface the creator's content through push-to-home.

Cached-posts continuation

home-mixer/sources/cached_posts_source.rs fires when the viewer's session resumes after a brief gap (closing and reopening the app within a window, or returning to the feed from another tab). The source surfaces candidates from the previous session's scored list, picking up where the viewer left off.

The mechanic preserves session continuity. Without it, a viewer who closed the app mid-scroll would lose their place and start over with a fresh feed pass. With it, the previous session's continuation candidates appear first, then the standard pipeline takes over.

For creators, cached-posts is mostly a continuity feature, but it has one subtle implication: posts that performed well enough to be in a viewer's recent session list get a second chance to be served if the viewer returns. The signal that decides which posts get included in the cached set is downstream of Phoenix scoring, so high-scoring posts get the continuity benefit.

The real organic top-10

Putting the surfaces together: in a typical scrolled feed render where the viewer is an active long-time user (no full-cover prompts, no push-to-home, no cached continuation), the top-10 visible slots break down roughly as follows.

Typical feed render slot composition by surface (top-10 positions): Organic in-network (Thunder): Slot count in typical render 50, Slot count when prompts and push fire 32 relative slot share; Organic OON (Phoenix retrieval): Slot count in typical render 22, Slot count when prompts and push fire 16 relative slot share; Ads: Slot count in typical render 14, Slot count when prompts and push fire 14 relative slot share; Who-to-follow: Slot count in typical render 8, Slot count when prompts and push fire 8 relative slot share; Prompts / push-to-home: Slot count in typical render 6, Slot count when prompts and push fire 30 relative slot share

Typical feed render slot composition by surface (top-10 positions)

Left column: standard render, dominated by organic candidates. Right column: render with prompts or push-to-home firing, where non-organic surfaces take a larger share.

The takeaway: the visible top-10 is rarely ten organic candidates. The standard case is closer to six or seven organic candidates plus a mix of non-organic surfaces. When prompts or push-to-home fire, the organic share drops further. Creators competing for "top-10 placement" are actually competing for top-6-or-7 placement in a contended slot pool.

What changed from 2023 to 2026 in slot architecture

The 2023 home-mixer used a smaller, more tightly-coupled set of candidate sources. In-network and a single out-of-network source covered organic; ads were interleaved by a simpler rule; the who-to-follow surface existed but at lower frequency; prompts were a small set of onboarding-only cards. The total source count was roughly half what the 2026 home-mixer runs.

The 2026 expansion is structural, not incremental. The three OON retrieval variants (general, MoE, topic-keyed) replace what was one OON source in 2023. The prompts module quadrupled (four types vs the 2023 one or two). Push-to-home is a 2026 addition; the 2023 stack did not have a dedicated notification-arrival hero injection. Cached-posts continuation as a first-class source is also new.

The net effect on organic competition: in 2023, a typical visible top-10 might have been seven or eight organic posts plus an ad and a who-to-follow card. In 2026, the same top-10 is often six organic posts plus the same ad and who-to-follow card plus an occasional prompt or push-to-home hero. The organic share dropped while the non-organic surface count rose.

This is the broader-than-creators-realise story of 2026 feed architecture. The Phoenix transformer is more sophisticated than the 2023 MaskNet, but it has fewer slots to work with, and the slot mathematics constrain what the better scoring can deliver in raw impression terms. A more accurate Phoenix prediction on candidate quality is worth less when there are fewer organic slots for the high-quality candidates to occupy.

What this means for cadence and content strategy

Three implications fall out of the slot inventory.

First, the organic competition is denser than implied by raw candidate-count statistics. A creator's post does not compete with all candidates the home-mixer considers; it competes with the candidates that survive the slot allocation to non-organic surfaces. The effective bar is higher than impression-volume statistics suggest.

Second, replies and mentions have a compounding visibility mechanism. Posts that generate notifications drive return visits that surface the post via push-to-home. The mechanic favours posts that drive interaction (replies in particular) because each interaction becomes a potential push-to-home trigger for the interacting viewer. This connects directly to the the reply head in A2: reply has the highest per-action weight in the 2023 reference, and each reply also triggers a push-to-home pathway for the viewer who replied. The compounding effect makes replies even more valuable than their raw weight suggests.

Third, slot scarcity reinforces the diversity-decay argument from A7: why X feeds reject your third post of the day. The organic-only slots inside the top-10 are typically six or seven. The diversity decay caps how many of those can come from a single author. Combined: a creator's marginal post past the second or third of the day is competing for a tiny slice of an already-bounded slot pool, against the decay multiplier driving its score toward floor. The "post fewer, higher-quality" reframe is the only architecturally viable strategy for serious creators in 2026.

Operational rules

Treat ads, who-to-follow, and prompts as fixed taxes on the slot pool. They take their share regardless of organic strategy. Acceptable, not optimisable.

Invest in posts that generate replies and mentions, not just likes. Each reply or mention generates a push-to-home pathway. The compounding visibility is downstream of the engagement, but the mechanic is real.

Recognise the visible top-10 is functionally a top-6 organic contest. The architectural ceiling on organic placement is lower than impression-volume framing suggests. Optimise per-post quality accordingly.

Do not over-index on top-slot heuristics. Position-zero placement is unreliable as a target because full-cover prompts and push-to-home heroes can override it. Targeting consistent top-three placement across many feed renders is a more architecturally-aligned strategy than targeting position zero on any single render.

Build for the reply-into-push-to-home loop. Posts that earn replies generate notifications, which generate push-to-home triggers for the replying viewer. That viewer returning to the feed surfaces the original post (or related cluster) at the top of their next render. The mechanic is not a single-impression bump but a recurring visibility pathway that compounds while the conversation stays active.

The slot-competition mechanics described in this article are the non-Phoenix portion of the For You feed assembly. The Phoenix scoring, the the 19 engagement heads (A2), the OON retrieval lane (A3: out of network is the new in network), and the diversity decay (A7: why X feeds reject your third post of the day) together describe how organic candidates score and rank. This article describes what those candidates are competing against once they reach the rendered feed. The structural conclusion is consistent across all of the series: voice consistency, embedding distinctiveness, and cadence discipline are the three levers creators have. A10: VoiceMoat vs Tweet Hunter, Typefully, Hypefury closes the series by scoring the four major writing tools against exactly these levers.

Frequently asked questions

Frequently asked questions

How many organic slots are really in the X For You feed?

Fewer than the visible ten. Each render can include a who-to-follow module of up to 3 users, ads spaced by MIN_POSTS_FOR_ADS, full- or half-cover prompts, a push-to-home hero if you arrived from a notification, and cached continuation slots. A typical visible top-10 is often only six or seven organic posts.

What non-organic sources compete for slots in the X feed?

Five: ads_source.rs, who_to_follow_source.rs (MAX_WHO_TO_FOLLOW_USERS is 3), prompts_source.rs (INLINE, FULL_COVER, HALF_COVER, RELEVANCE), push_to_home_source.rs, and cached_posts_source.rs. A FULL_COVER prompt claims position zero entirely.

How do ads get placed in the X feed?

safe_gap_blender.rs interleaves ads with organic posts, enforcing a MIN_POSTS_FOR_ADS minimum number of organic posts between consecutive ads. The specific minimum is redacted in the public source.

How does replying help the original creator on X?

The reply head compounds with push-to-home: a reply triggers a notification, which triggers a push-to-home hero on the replying viewer's return, surfacing the original post again. Replies buy a second placement, not just one. This compounding is inferred from the documented sources.

AI disclosure

AI disclosure

This article was drafted with AI assistance and human-edited by Prateek Singh. All technical claims are sourced to the xai-org/x-algorithm repository; file paths are cited inline.

More in the series

X Algorithm

The May 2026 X algorithm: why voice wins when the ranker becomes a transformer

In May 2026, X.AI open-sourced the next-generation recommendation algorithm under the xai-org/x-algorithm repository. It is not a re-host of the 2023 Twitter release. It is a complete rewrite. The 2023 stack of hand-engineered features, MaskNet heavy-ranker, SimClusters embeddings, TwHIN graph signals, and RealGraph follow-affinity scoring has been retired. In its place: a single Grok-derived transformer named Phoenix that predicts 19 separate engagement actions per candidate, conditioned on the viewer's history sequence, with a candidate-isolation attention mask. The implications for creators are structural, not tactical. Voice consistency now compounds at the ranker level because every candidate from a creator is independently scored against the viewer's per-creator history pattern. Voice drift collapses scoring across the entire follower base, not just the post that drifted. This cornerstone walks the architectural change, the new scoring math, and what it means for anyone choosing how to write on X in 2026.

13 min read

·

·

X Algorithm

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, each paired with a WEIGHT constant in home-mixer/scorers/weighted_scorer.rs (FAVORITE_WEIGHT, REPLY_WEIGHT, and 17 more): 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, 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.

16 min read

·

·

X Algorithm

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.

13 min read

·

·

X Algorithm

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.

12 min read

·

·

X Algorithm

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.

13 min read

·

·

The whole series

The X algorithm in May 2026: all ten articles

Read ›

Read ›

[

ready to start?

]

Create more.
Stay unmistakably you.
Grow from there.

3-day trial from $1 · Cancel anytime · Your writing stays private

[

ready to start?

]

Create more.
Stay unmistakably you.
Grow from there.

3-day trial from $1 · Cancel anytime · Your writing stays private

[

ready to start?

]

Create more.
Stay unmistakably you.
Grow from there.

3-day trial from $1 · Cancel anytime · Your writing stays private