Under The Hood X Report Analyzer
Creator Guide 02

Why Good Posts Sometimes Get Low Reach

A good post can get low reach on X because content quality alone does not determine recommendation. The open-source X recommendation architecture shows a multi-stage system: posts must first become candidates, pass eligibility filters, be evaluated for a particular user, receive predicted engagement scores, compete with other candidates, and then survive selection and final filtering. (GitHub)

So a useful way to think about reach is: Good content can still have low reach if the recommendation system doesn't find enough suitable opportunities to show it to the right users.

The Journey From Post to Reach

YOUR POST
Candidate Retrieval
Eligibility
User + Post Context
Phoenix
Predicted Engagement
Weighted Scoring
Candidate Competition
Diversity / Adjustments
Selection
Final Filtering
FOR YOU

The current open-source pipeline documents these stages, including candidate retrieval, filtering, Phoenix scoring, weighted scoring, author diversity, out-of-network scoring, selection and post-selection processing. (GitHub)

1. Good Doesn't Automatically Mean Relevant

You may genuinely think a post is excellent. But X's recommendation system isn't asking: “Is this a good post?” It's closer to: “How relevant is this post to this particular user, and what are they likely to do with it?”

Phoenix uses user engagement history and candidate information when making its predictions. The model predicts multiple actions for each candidate, including likes, replies, reposts, clicks, dwell, follows and negative feedback. (GitHub)

Great post + Wrong audience
Low predicted relevance
Limited recommendation

A post can be excellent for one audience and uninteresting to another.

2. The Post Has to Become a Candidate

Before X can rank your post, it needs to enter the candidate pool. The current architecture retrieves candidates through multiple sources, including Thunder for in-network posts and Phoenix Retrieval for out-of-network posts. (GitHub)

This creates an important distinction: A post can be good without necessarily becoming a candidate for every user. Candidate retrieval is therefore one possible bottleneck between publishing and recommendation.

3. Your Followers Don't Automatically See It

Having followers doesn't guarantee that all of them receive every post. The For You system is personalized. Posts compete for recommendation opportunities based on the viewer's context and predicted behavior.

10,000 followers ≠ 10,000 guaranteed impressions

A follower may already have seen the post, may not be interested in the topic, or the post may simply not rank highly enough among the candidates being considered for that viewer. The current architecture includes filters for previously seen and previously served posts as well as other eligibility conditions. (GitHub)

4. A Great Post Can Lose the Candidate Competition

Even if your post is eligible and relevant, it doesn't exist alone. X has many candidates competing for the same recommendation opportunities. The current pipeline scores candidates and then selects the top candidates. (GitHub)

Your post → Strong
Post B → Stronger
Post C → Strong
Post D → Very strong
Post E → Stronger

Your post can be objectively good and still lose the ranking competition. This is one of the simplest explanations for “This is my best post, so why did it get fewer impressions?” Your quality doesn't determine the quality of the competing candidates.

5. X Predicts Future Actions

The current Phoenix model doesn't simply rank posts by their existing likes. It predicts multiple possible actions for the viewer (Like, Reply, Repost, Photo expansion, Click, Profile click, Video viewing, Share, DM share, Copy-link share, Dwell, Quote, Follow, Not Interested, Block, Mute, Report). (GitHub)

So a post can be high quality from a human perspective while still producing relatively weak predicted behavior for a particular viewer.

6. Existing Engagement Isn't the Same as Predicted Engagement

Suppose your post has 500 likes. That is an observed result. Phoenix is doing something different: predicting whether a particular viewer is likely to like the post. The current ranking code explicitly produces separate probability outputs for different actions. (GitHub) Therefore, existing likes ≠ predicted Like probability, and high existing engagement ≠ guaranteed future recommendation.

7. A Post Can Have Strong Likes but Weak Other Signals

Imagine a hypothetical post with High P(Like) but Low P(Reply), Low P(Repost), Low P(Click), and Low P(Dwell). Another post might have Medium P(Like) alongside High P(Reply), High P(Repost), and High P(Dwell). The recommendation system can distinguish these action profiles. The current architecture combines predicted actions through weighted scoring rather than treating every engagement as identical. (GitHub)

8. Negative Feedback Can Work Against Recommendation

The model also predicts negative actions (Not Interested, Block author, Mute author, Report). (GitHub) The open-source scoring architecture uses negative weights for these types of predictions. (GitHub) That means a post can generate some positive engagement while also being predicted to create negative feedback.

9. Some Users May Already Have Seen It

The current candidate pipeline includes PreviouslySeenPostsFilter and PreviouslyServedPostsFilter. These filters can remove candidates that the user has already encountered or that have already been served during the session. (GitHub) This matters when analyzing reach: a post can continue to be good while having fewer new recommendation opportunities.

10. Your Post May Be Competing Against Newer Content

The feed is constantly changing. Even if your post performed well earlier, new candidates enter the system. Your post starts as a strong candidate, but as new candidates arrive, competition changes and your relative ranking changes. Therefore, an early period of strong reach doesn't guarantee continued distribution.

11. Author Diversity Can Affect Distribution

The current architecture includes an Author Diversity Scorer that adjusts repeated-author scores. (GitHub) If a candidate pool contains multiple posts from Creator A, simply showing the highest-scoring posts could result in too many posts from one creator. Author diversity helps construct a more varied feed.

12. Out-of-Network Recommendations Have Their Own Adjustments

The current architecture includes an OON Scorer for out-of-network content. (GitHub) This matters because a post from someone you don't follow is competing through a recommendation pathway that is different from simply seeing a post from an account you already follow. A good post may have limited out-of-network expansion simply because its predicted relevance isn't broad enough.

13. Some Posts Are Good but Highly Niche

Suppose you post: “A technical breakdown of a very specific database optimization.” It might be excellent, but the number of users likely to care about that subject could be relatively small compared with a broad AI tools post. So content quality ≠ audience size. A niche post can be highly successful within its intended audience without generating enormous impressions.

14. Timing Is Not the Same as an Algorithm Penalty

Creators often conclude: “I posted at the wrong time, so X killed my reach.” The open-source recommendation architecture does not establish a universal posting-time formula that guarantees or prevents recommendation. Timing can affect the candidate environment—what other content is competing for attention—but you shouldn't claim “Post at 7:00 PM and your score increases by 30%.”

15. A Good Post Can Be Filtered

The recommendation pipeline has filters before and after scoring (duplicates, old posts, self-posts, previously seen/served posts, muted keywords, blocked/muted authors, ineligible subscription content, and post-selection visibility/deduplication checks). (GitHub) Therefore, not every post that could theoretically rank actually reaches the ranking stage.

16. Quality Is Not a Public Algorithm Variable

There is no public variable called post_quality = 94 that creators can inspect. The system learns from user behavior and other model inputs. So instead of asking “How does X judge whether my writing is good?” it's more accurate to ask “What does the model predict users will do with this content?” (GitHub)

17. Why Your “Best Post” Can Lose to a Worse Post

Imagine Your Post has a human quality of 9/10 with Medium predicted relevance, while Another Post has a human quality of 7/10 with High predicted relevance. For a particular user, the second post may be the better recommendation candidate because recommendation isn't a literary competition—it's a personalized prediction problem.

18. Low Reach Doesn't Automatically Mean a Penalty

A post can receive low reach because it wasn't retrieved, wasn't relevant to enough viewers, competing candidates scored higher, users had already seen it, it encountered eligibility filters, predicted engagement was weaker, negative feedback predictions reduced its ranking, author diversity affected selection, or out-of-network competition was strong. (GitHub) Low reach by itself does not prove shadowbanning, suppression, or an account penalty.

19. The Reach Diagnostic

For Under The Hood Analyzer, this is the most useful way to diagnose a low-reach post:

POST
Was it retrieved?
Was it eligible?
Was it relevant?
What actions were predicted?
How did it rank?
How strong were competing posts?
Were diversity/OON adjustments applied?
Was it selected?
Did final filters pass?
REACH

This is much more useful than simply asking: “How many likes did it get?”

20. What Creators Should Actually Optimize

The open-source architecture suggests a useful direction:

Key Takeaway

A good post can get low reach because X optimizes recommendations for individual users, not for an objective measure of content quality. The current open-source architecture shows that candidate retrieval, user relevance, predicted engagement, competition, filtering, diversity and selection all sit between publishing a post and receiving recommendation-driven impressions. (GitHub)

So when a great post underperforms, the better question isn't “Why didn't X reward my post?” It's “At which stage did this post fail to create enough recommendation opportunities?” That is the Under The Hood way to investigate low reach.

Official Open-Source References