Why does posting more not give me more reach?

Because two adjustments in the live code make your posts compete — with the wider network, and with each other. Posts shown to people who don't follow you are multiplied down by an out-of-network factor, so escaping your follower bubble means clearing a structural handicap. And within any single feed build, an author-diversity pass sorts your candidate posts best-first and decays each additional one toward a floor — so on a given refresh only your strongest post gets full value. Posting more does not multiply your reach; it divides attention across posts that are throttling one another.

"Post more to grow" is the most common advice on the platform, and the live code complicates it in two specific, measurable ways. Neither is a penalty. Both are scoring adjustments that sit right after the weighted scorer, and both shape how far a post travels.

Out of network, you start behind

Every candidate post is tagged as in-network (the viewer follows you) or out-of-network (they don't). A dedicated scorer multiplies the out-of-network ones down, with a comment stating the intent in one line:

home-mixer/scorers/oon_scorer.rs · L7, L20–L23@ 0bfc279
 7// Prioritize in-network candidates over out-of-network candidates
20let updated_score = c.score.map(|base_score| match c.in_network {
21    Some(false) => base_score * p::OON_WEIGHT_FACTOR,
22    _ => base_score,
23});
CODE-CURRENT0bfc279verified 2026-06-12
Out-of-network candidates have their score multiplied by an OON_WEIGHT_FACTOR, with the code comment stating the intent: 'Prioritize in-network candidates over out-of-network candidates.' The factor's value is in the withheld params module.
xai-org/x-algorithm — home-mixer/scorers/oon_scorer.rs, intent comment (L7) and multiplier (L20\–L23)as of the May 15, 2026 release

Reaching your own followers is the easy case; the model is built to favor it. Reaching beyond them — the thing people mean by "going viral" — means your post's score is multiplied by a factor designed to hold out-of-network content back. You can still break out, but you break out against a headwind, which is why a post that does fine with your audience can still fail to travel.

Your posts compete with each other

The second adjustment is the one that directly answers "why doesn't posting more help." Within a single feed response, an author-diversity scorer sorts all candidates best-first, then walks them and multiplies each additional post from the same author down by a geometric decay toward a floor:

home-mixer/scorers/author_diversity_scorer.rs · L29–L31@ 0bfc279
29fn multiplier(&self, position: usize) -> f64 {
30    (1.0 - self.floor) * self.decay_factor.powf(position as f64) + self.floor
31}
CODE-CURRENT0bfc279verified 2026-06-12
Within a single feed response, candidates from the same author are sorted best-first and each subsequent one is multiplied by (1 \− floor) \× decay^position + floor \— a geometric decay toward a floor, so only an author's top-scored post receives full value per feed load. The decay and floor constants are in the withheld params module.
xai-org/x-algorithm — home-mixer/scorers/author_diversity_scorer.rs, multiplier (L29\–L31) and per-author application (L52\–L65)as of the May 15, 2026 release

Read position as "how many of your posts already came before this one in this feed build." Your best post sits at position zero and takes the full multiplier. Your second post is decayed once, your third twice, each toward the floor. The feed is being diversified so a single author can't dominate one viewer's timeline — which means flooding the zone doesn't stack reach, it spreads a fixed budget thinner across posts that are damping each other.

Signal by signal

in the codein plain englishwhere xDoctor surfaces it
OON_WEIGHT_FACTOR on out-of-networkBreaking past your followers is a structural climb, not a default. Posts earn their way out of network.Coach · Reach profile
author-diversity decay by positionOnly your top post per feed gets full value. The second and third are damped — quantity divides, it doesn't multiply.Coach · Cadence
sorted best-first before decayThe decay falls on your weaker posts, not your best — so one strong post beats three average ones.Coach · Peak posts

What the code doesn't say

▲ What the code doesn't say

How steep either effect is. OON_WEIGHT_FACTOR, AUTHOR_DIVERSITY_DECAY, and AUTHOR_DIVERSITY_FLOOR all resolve to the withheld params module, so we can tell you the out-of-network handicap and the per-post decay exist and how they're shaped, but not how punishing they are. "Never post more than N times a day" is not a number this code provides — the mechanism is real, the threshold is invention.

UNKNOWN0bfc279verified 2026-06-12
The numeric values of the current weights are not included in the open-source release: weighted_scorer.rs references a params module (e.g. p::FAVORITE_WEIGHT, p::REPLY_WEIGHT) whose values are not present anywhere in the published repository.
xai-org/x-algorithm (verified by direct inspection of the full repository tree at the pinned SHA) — home-mixer/scorers/weighted_scorer.rs references crate::params; no params definitions with weight values exist in the releaseabsence verified at the pinned SHA; values may be published in a future release

What to do with this

Concentrate, don't flood. Because your posts are sorted best-first and only the leader keeps full value per feed, one strong post outperforms three mediocre ones competing against each other. And because out-of-network reach is a climb, the posts worth spending your daily attention on are the ones with a real chance of earning the engagement that overcomes the handicap — which is exactly what xDoctor's peak detection and reach diagnostics are built to find in your own history. The scoring formula sets the value of a post; this page is about how that value survives contact with the rest of your timeline.

← Reach problems