How Twitter's Recommendation System Actually Works

The algorithm isn't a single model. It's a pipeline of multiple models working together, each handling a different job in the feed generation process. When you open the app, the system retrieves candidate tweets from millions of possibilities, scores them on relevance, reshuffles the results, and then displays them. That's the simplified version. The actual pipeline is far messier. I spent about eighteen months working on engagement prediction models at a company that supported mid-tier accounts. I watched what happened when tweets went viral and when they didn't. The pattern wasn't consistent, and that's the point. Twitter's algorithm prioritizes signals that correlate with user retention more than signals that correlate with "quality" in any traditional sense. The retrieval stage is where most people misunderstand what's happening. The system doesn't score every tweet against every user. It uses approximate nearest neighbor search in high-dimensional space to find roughly 1,500 candidates from a pool of billions. Those candidates come from several sources: accounts you interact with frequently, accounts in your network graph, trending topics, and a small number of exploratory tweets pushed to test whether you might care about something new. The exploratory tweets are intentional noise. They exist to discover preferences you haven't expressed yet.

After retrieval comes scoring. Each candidate gets a predicted engagement probability from a model trained on features like author authority, recency, media type, conversation context, and your historical interaction patterns with that author. The model outputs a score for likes, retweets, replies, and reads separately. The final ranking combines those into a single utility value, but the weighting between engagement types isn't public and has shifted several times since 2022. I remember one specific case that took me three weeks to figure out. A client had a posting pattern that consistently underperformed despite having good engagement rates. Their tweets got replies and retweets from a small core audience, but they never broke into wider distribution. The issue wasn't the content. It was the timing relative to their followers' activity windows combined with a low velocity of early engagement. Twitter's algorithm uses a time-decay function on initial engagement signals. If a tweet doesn't accumulate a threshold of interactions within roughly the first twenty minutes after posting, the model depresses its score for subsequent users who haven't previously interacted with that author. My client's followers were spread across three time zones, so engagement arrived too slowly. The workaround was simple but unintuitive: post during the overlap window of the two largest follower time zones and intentionally hold a tweet for two hours before posting to ensure a higher concentration of active followers at launch. This increased initial velocity enough to cross the threshold, and distribution expanded within forty-eight hours. I measured it across twelve accounts with varying follower counts, and the pattern held consistently. Here's something most people don't realize about the ranking model. Engagement bait doesn't actually help anymore in the way it used to. The model has been specifically trained to downweight engagement that appears manipulative. Tweets with excessive questioning, fake urgency, or engagement farming language get reduced scoring. The signal detection is based on linguistic patterns and account behavior history, not just the raw engagement count. Accounts that rely on bait often see their overall distribution degrade over six to eight weeks as the model learns to treat their content as lower priority regardless of engagement metrics.

Another counter-intuitive finding: reply chains sometimes hurt more than they help. When a single tweet generates a long thread of replies, the model interprets this as high engagement but also as content that kept users on the platform in a narrow conversation rather than exploring broadly. For accounts trying to grow reach, threads that consume all engagement in replies without generating secondary actions like retweets or profile visits tend to plateau quickly. The algorithm deprioritizes them for distribution beyond the initial follower base. The exception is when the original tweet itself gets retweeted or quoted, which signals broader interest and overrides the reply-only signal. The personalization layer is where the black box gets darkest. Two users following the same accounts will see completely different feeds because the model learns individual behavior patterns at the session level. There's a short-term component that adjusts based on what you interacted with in the last hour and a long-term component built from months of data. Neither is adjustable from the outside. You can influence the short-term component by being active, but the long-term component is locked to your historical pattern. This means new accounts or accounts with minimal activity face a harder initial challenge because there's less personalization signal to work with, and the model defaults to broader trending content rather than account-specific distribution. The algorithm also has explicit filters that remove content before it enters the ranking pipeline. These include promoted content demotion, duplicate content detection, and policy-based removal. Promoted content demotion is separate from the organic model. Ads that the algorithm classifies as low-quality or repetitive get pushed down in the feed, but they still occupy space. This is why some users report feeling like the feed is "full of ads" even when the ad percentage hasn't changed mathematically.

Get the Full Details

Unpacking the Black Box: Explaining Algorithms and AI - Workshop for ...
Unpacking the Black Box: Explaining Algorithms and AI - Workshop for ...

For anyone trying to work with this system, the most useful approach is treating it as an optimization problem rather than a mystery. Track your own data. Note posting times, engagement velocity within the first thirty minutes, and the ratio of replies to retweets to profile visits. Use that data to adjust. The algorithm responds to signal strength, not strategy. If you post consistently during high-activity windows and generate rapid initial engagement through content that encourages multiple types of interaction, the model will distribute your content further. If you post randomly and get slow engagement, the model treats your content as lower priority regardless of content quality. There's no way to game the retrieval stage. The only control you have is over the scoring inputs: who follows you, how your audience behaves, what your content looks like in the feature space the model uses, and the velocity and type of engagement you generate in the first twenty minutes. Everything else is noise.