The definitive guide to maximizing your reach on X (Twitter), based on reverse-engineering the open-source algorithm.
Complete reference for all 19 actions the algorithm predicts and weights.
The X algorithm predicts the probability of 19 different user actions and combines them with weights:
Final Score = Σ (weight_i × P(action_i))
Actions that INCREASE your post’s score:
| # | Action | Code Name | Description | Relative Weight |
|---|---|---|---|---|
| 1 | Like | favorite |
User likes the post | ⭐⭐ Medium |
| 2 | Reply | reply |
User replies to post | ⭐⭐⭐ High |
| 3 | Retweet | retweet |
User retweets | ⭐⭐ Medium |
| 4 | Quote Tweet | quote |
User quote tweets | ⭐⭐⭐ High |
| 5 | Share | share |
User shares post | ⭐ Low-Medium |
| 6 | Share via DM | share_via_dm |
User shares via direct message | ⭐ Low |
| 7 | Share via Link | share_via_copy_link |
User copies link | ⭐ Low |
| 8 | Click | click |
User clicks on post | ⭐ Low |
| 9 | Profile Click | profile_click |
User clicks author’s profile | ⭐⭐ Medium |
| 10 | Follow Author | follow_author |
User follows after seeing post | ⭐⭐⭐ High |
| 11 | Photo Expand | photo_expand |
User expands photo | ⭐ Low |
| 12 | Video View | video_quality_view |
User watches video (quality) | ⭐⭐ Medium |
| 13 | Dwell | dwell |
User stops to read (binary) | ⭐ Low |
| 14 | Dwell Time | dwell_time |
Time spent reading (continuous) | ⭐ Variable |
| 15 | Quoted Click | quoted_click |
User clicks quoted content | ⭐ Low |
Actions that DECREASE your post’s score:
| # | Action | Code Name | Description | Relative Weight |
|---|---|---|---|---|
| 16 | Not Interested | not_interested |
User clicks “Not interested” | ❌ Negative |
| 17 | Mute Author | mute_author |
User mutes you | ❌❌ Strong Negative |
| 18 | Block Author | block_author |
User blocks you | ❌❌❌ Very Strong |
| 19 | Report | report |
User reports post | ❌❌❌❌ Devastating |
Based on code analysis:
| Action | Estimated Impact |
|---|---|
| Not Interested | -1× a like |
| Mute | -5× a like |
| Block | -10× a like |
| Report | -20× a like |
Key insight: One block undoes 10 likes. One report undoes 20 likes.
reply, quote, follow_author
These indicate deep engagement and intent.
retweet, share, share_via_dm
User willing to put your content in front of others.
favorite, profile_click, video_quality_view
User is interested but passive.
click, photo_expand, dwell, quoted_click
Basic attention metrics.
not_interested, mute, block, report
Actively hurts your score.
// Only applies if video exceeds minimum duration
if video_duration_ms > MIN_VIDEO_DURATION_MS {
apply(vqv_score, VQV_WEIGHT)
} else {
// VQV weight = 0, not counted
}
Implication: Short video clips don’t get the VQV bonus.
Unlike other binary actions, dwell time is continuous:
dwell_score: Binary (did user stop?)
dwell_time: Continuous (how long in seconds?)
Both are weighted and contribute to score.
| Component | Source File |
|---|---|
| Weight application | home-mixer/scorers/weighted_scorer.rs |
| Score extraction | home-mixer/scorers/phoenix_scorer.rs |
| Action definitions | xai_recsys_proto::ActionName |
| Continuous actions | xai_recsys_proto::ContinuousActionName |
MAXIMIZE:
├── Reply (⭐⭐⭐)
├── Quote (⭐⭐⭐)
├── Follow (⭐⭐⭐)
├── Retweet (⭐⭐)
├── Like (⭐⭐)
└── Video View (⭐⭐) [if > min duration]
MINIMIZE:
├── Report (❌❌❌❌ -20×)
├── Block (❌❌❌ -10×)
├── Mute (❌❌ -5×)
└── Not Interested (❌ -1×)
Next: Filter System →