The definitive guide to maximizing your reach on X (Twitter), based on reverse-engineering the open-source algorithm.
Mistakes that hurt your algorithm score, based on how the system actually works.
Author Diversity Penalty:
Post 1: 100% score
Post 2: ~76% score
Post 3: ~59% score
Post 4: ~47% score
Bad approach:
9:00 AM - Tweet about topic A
9:15 AM - Tweet about topic B
9:30 AM - Tweet about topic C
9:45 AM - Tweet about topic D
Result: Each post scores lower than the last
Better approach:
9:00 AM - Quality tweet
3:00 PM - Quality tweet
9:00 PM - Quality tweet
Result: Each post gets full scoring potential
Source: author_diversity_scorer.rs
| Your gains | Their cost |
|---|---|
| 10 likes | 1 block = net negative |
| 20 likes | 1 report = net negative |
Scenario: You post controversial content for engagement
Result:
+ 500 likes
+ 100 retweets
- 10 blocks
- 2 reports
Math: The blocks and reports may outweigh the positive engagement
Source: weighted_scorer.rs - negative weights
The algorithm predicts engagement probability. A weak hook = low P(dwell), P(reply), P(like).
❌ Weak hooks:
"Just wanted to share some thoughts..."
"New blog post!"
"Thoughts on X?"
"Happy Monday everyone!"
✅ Strong hooks:
"I made $100K from one tweet. Here's exactly how:"
"Unpopular opinion: [bold claim]"
"90% of people get [topic] wrong. Here's why:"
"The biggest mistake I see in [niche]:"
Posts without engagement invitation = lower P(reply), P(quote).
Reply has ~2× the weight of a like.
❌ No hook:
"Just finished reading an interesting book about productivity."
[Ends with period. No invitation to engage.]
✅ With hook:
"Just finished reading an interesting book about productivity.
What's the best productivity book you've ever read? Looking for my next one 👇"
[Explicit invitation to reply]
Fake/inactive followers:
├── Never engage with your content
├── Algorithm sees low engagement rate
├── Future posts get lower distribution
└── Negative spiral
Account A: 1,000 real followers, 50 likes/post = 5% engagement
Account B: 10,000 fake followers, 50 likes/post = 0.5% engagement
Algorithm prefers Account A's engagement rate
The Two-Tower retrieval builds your embedding from your content history. Inconsistent topics = confused embedding = poor matching.
❌ Confused embedding:
Monday: Tech startup tips
Tuesday: Recipe for pasta
Wednesday: Political hot take
Thursday: Fitness advice
Friday: Crypto prediction
Result: Algorithm can't figure out who to show your content to
✅ Clear embedding:
Monday: SaaS growth tactics
Tuesday: Startup hiring tips
Wednesday: Founder mindset
Thursday: Fundraising insights
Friday: Product development
Result: Clear signal → matched to startup/SaaS audience
Source: phoenix/recsys_retrieval_model.py
Common engagement bait phrases often get:
❌ "Like if you agree!"
❌ "Retweet for good luck"
❌ "Follow for follow"
❌ "Drop a 🔥 if you want more"
Source: muted_keyword_filter.rs, vf_filter.rs
Not replying to comments:
Post with 50 comments, 0 author replies:
├── Conversation dies
├── Future engagement decreases
└── Algorithm sees declining interest
Post with 50 comments, 30 author replies:
├── Thread activity spikes
├── More people join conversation
└── Algorithm sees high engagement
Posts that are just links:
❌ Link-first:
"Check out my new article: [link]"
Result: Click = leave X = no further engagement tracked
✅ Value-first:
"I spent 40 hours researching [topic]. Here are the 5 key insights:
1. [Insight]
2. [Insight]
3. [Insight]
4. [Insight]
5. [Insight]
Full article with data: [link]"
Result: Dwell time + potential replies + then maybe click
Age Filter removes old posts. Posts at dead times:
Post at 3 AM:
├── 0 engagement first 4 hours
├── By peak time, post is "old"
├── Less distribution
Post at 9 AM:
├── Immediate engagement
├── Builds momentum
├── Algorithm amplifies
Source: age_filter.rs
| Mistake | Algorithm Impact | Fix |
|---|---|---|
| Post too frequently | Diversity penalty | Space 3-4+ hours |
| Trigger blocks | -10× per block | Stay authentic |
| Weak hooks | Low engagement prediction | Lead with value |
| No engagement hook | Low P(reply) | End with question |
| Buy followers | Low engagement rate | Grow organically |
| Off-topic content | Confused embedding | Niche down |
| Engagement bait | Muted/filtered | Earn engagement |
| Ignore replies | Miss engagement | Reply actively |
| Link-first posts | Low dwell time | Value first |
| Dead time posting | Age filter | Peak times |
| Back to: Rules | Checklists |