# Twitter Algorithm Explained

> What the ranking model weighs, what the open-sourced code revealed, and which of the usual optimisation advice holds up.

- Source: https://tweetsweep.com/blog/twitter-algorithm-explained
- Published: 2024-08-29
- Updated: 2026-08-16
- Reading time: 5 min

---
## Ranked For You timeline

The timeline for For You is ranked (not in the order posts were published). In 2023 the version of the recommendation code that X made public is more than a little similar to the pipeline; pull candidates, score them, filter, mix. You're only chronological when you move over to Following. What you see outside of that are posts as a scored list which the model believes you will be engaged with, drawn from people both in and out of the accounts you follow. That combination is why a random stranger's post can outrank a friends.

We did not freeze the weights with open-sourcing. It was pretty much a 'stages' and not production numbers - so it is all public repo stuff. Look at 2023: a map of the shape, not like a spec you can reverse-engineer tweet by tweet. You also treated the actual product essentially the same way in For You from a prioritization standpoint: candidates in, scores out, and then a mix biased even heavier towards predicted conversation than recency. Since a post never makes it into the candidate set, no score can rescue it. As the first rule, ranking never starts from a real time of your full following list on every refresh.

## Candidate sources and scoring

Processor grade, who two pool of candidate Posts that appear on your timeline are for accounts you follow. Non-follow posts are from accounts you currently do not follow, typically through actions by people you do follow or through interest groupings that the model hypothesized for you in advance. These two pools are scored by the model that predicts how likely you will respond, like it, retweet it, click the profile and hang around. You filter muted or blocked, or reported authors before the mix. This mixture is why you see accounts that you do not follow in a timeline you did not ask for. That second pool is large.

Scoring is not just a raw count of the number of likes. Using separate estimates of several actions and weighting them. An engaged comment is more valuable than a predicted like. An expected click through to the profile is a very strong positive. Performing a Post takes time, which becomes real signal, not waste. Once scores are handed out, the mixer shuffles together in-network and out-of-network items so a feed displayed on your home screen isn't simply a classical following list — it is not at all like an obvious discovery list either. The out-of-Network half can not be switched off within For You.

## Engagement weights

Replies mean far more than likes. More yet, a reply that you then respond to is worth even more, as the model expressly rewards durable dialogue. Likes are cheap and noisy. Reposts sit between the two. We like profile clicks and dwell time because they represent attention that did not bounce. To make a post go viral just write something a reader can respond to in one sentence — & then answer them. That is the reason that loop is what the scorer searches for on home timeline. A like without a click is a weak vote.

This same weighting system is also applied when others are viewing your post within their For You mix. In fact, the predicted reply elevates your mood more than the predicted like. A thread that ends in the comments after a single message does worse than a short post that pulls three back-and-forth replies. If a quote post starts a new conversation, then it can help – not just if they dunk. Monitor the notifications tab shortly after you hit publish: replies in the first hour arrive as an input for the model while your post is still eligible to reach a wider audience.

## Negative signals and outbound links

Negative signals outweigh positives. Three seconds of swiping interest earns a post more than a like, but an uninterested tap, mute, block or report loses it even more. Those actions also stick to the author, ruining his or her chances that subsequent posts find their way into others' candidate pools. Not interested appears on the post menu in your home screen. When the subject-matter is off-key for them, when the tone makes them baited or they felt like they're seeing the same angle solely far too often in one go, it's what folks use.

That said, external links are usually suppressors of reach. A click that goes off of X is time loss news feed, which the model deems a less desirable outcome than a click that lands within some photo, video or thread. If the purpose of a post is a URL, put the context in the text and give up some for a better For You bullet, or make another post that replies to your main post after it has generated conversation. Outrage clicks and hate mail generates mutes that cancel those engagement bait likes and reposts.

## Publisher controls

Write consistently in one topic area, this will give the model a solid cluster to place you against. Moving around from sports to finance to personal drama, there is nothing in out-of-network distribution for it to latch onto. Reply to replies on your own posts That ensures the conversation score remains high and teaches the model that there is a pulse on the thread. Post when your real readers are awake, which you know from existing replies and profile visits coming in, not some average best time chart. Go with the hour when your answers already come.

Avoid engagement bait. Well, the likes that it creates are nowhere near the negative signals. One of the things that subscription is selling and literally does for non-replies: a ranking boost for verified people — not just any glory rumor, but a concrete lift (real because confirmed!) — but it won't help when replying or fix what is effectively 'a pile of mutes.' Images, video bumps, and thread that are too easy to read all win against a naked link. Dont delete and repost that same post to simul game recency. The account-level record remains in the row below each new item. The tick is a multiplier, not a replacement.

## Account history and cleanup

Account-level signals accumulate. Your past history of posts that attracted mutes, blocks, and reports carry over into how these posts are treated in the future. Speaking of For You, a profile that’s primarily an account for a time you are no longer in will also have the follow immediately lost after clicking through from For You. You can use author features and not just post features, so the pile of yesterday is not passive. So if a stranger opens your profile and just goes, even that dwell failure is another negative against you (not just the old tweet they saw either). Authors are persistent across new posts.

One of the few structural changes you can hope for is clearing that history. In one run at a time, TweetSweep bulk-deletes posts by day range or keyword. Need to drop a year, career or phrase without sitting in the X app tapping delete? When a range is gone, new posts takes place on a clean author document and a biography that fits what you post now. If the concern is for an entire era, do the date cut first and then a keyword pass if some residual terms still appear when users search your account.
