This is part three of my “Under the Hood” series, where I dig into how X decides who gets to see your posts.
If you haven’t read the first two parts yet, you may want to start there:
- X Isn’t Banning Nudity, But It May Be Hiding Adult Creators
- What Happens When an Adult Creator Stops Posting Nudity on X?
Those first two stories focused heavily on adult-content labels and what X’s own Under the Hood reports revealed about my account.
This time, I wanted to zoom out.
I recently completed a full current-code audit of the X recommendation algorithm, which X has made publicly available on GitHub. For documentation purposes, I ran this audit on October 26, 2026. GitHub listed the repository as updated October 23, while the visible commit history showed the latest algorithm sync on October 22.
And yes, some of the numbers have changed.
X Does Not Simply Count Likes
The first thing you need to understand is that X does not award a fixed number of “points” every time someone likes, replies to, shares, or reports your post.
The system predicts how likely a specific person is to take different actions on your post. It then multiplies those predicted probabilities by a set of weights and combines them into a ranking score. X explicitly warns that these weights apply to predicted probabilities, not raw engagement counts.
So when I say:
Copy-link sharing currently has a coefficient roughly 30 times the size of the like coefficient.
That does not mean one person copying your link is literally worth 30 likes.
It means the ranking coefficient attached to the predicted probability of someone copying your link is roughly 30 times larger than the coefficient attached to the predicted probability of someone liking your post.
That matters.
The Current X Ranking Weights
These are the current defaults published in X’s code:
| Predicted action | Current weight | Approx. relative to like |
|---|---|---|
| Copy-link share | 20.0 | 30.3× |
| Reply | 5.0 | 7.6× |
| Quote | 5.0 | 7.6× |
| DM share | 5.0 | 7.6× |
| Follow author | 4.0 | 6.1× |
| Generic share | 2.0 | 3.0× |
| Repost | 1.0 | 1.5× |
| Like | 0.66 | 1× |
| Click/open post | 0.30 | 0.45× |
| Open link | 0.20 | 0.30× |
| Photo expand | 0.05 | 0.08× |
| Video open | 0.02 | 0.03× |
| Dwell | 0.05 | not directly comparable |
| Continuous dwell | 0.006 | continuous predicted value |
| Click + dwell | 0.40 | continuous predicted value |
| Not interested | -52.272 | very large negative |
| Block author | -31.2 | very large negative |
| Mute author | -58.8 | very large negative |
| Report | -234.0 | extremely large negative |
| Not dwelled | -0.02 | small negative |
The current code confirms a 0.66-like coefficient, 20 for copy-link sharing, 5 for replies, quotes, and DM shares, 4 for a follow, and the much larger negative weights attached to reports, mutes, blocks, and “Not interested.”
The obvious takeaway is that likes are useful, but they are not the strongest signal X is trying to predict.
A post that people are likely to send privately, quote, reply to, or copy the link to can be much more valuable to the ranking system than a post that simply collects passive likes.
Negative Reactions Matter A Lot
The negative side of the equation is even more dramatic. A report currently carries a coefficient of -234. A mute is -58.8, “Not interested” is -52.272, and a block is -31.2.
Again, that does not mean one report literally cancels out hundreds of likes.
X explains that these negative actions are much rarer than likes, so their coefficients have to be much larger for the model’s predictions to meaningfully affect the final score. X also says reports from bad actors do not simply apply the same penalty to everyone because recommendations are personalized to each viewer.
This is why clickbait that annoys people can backfire even when it initially gets attention.
Getting someone to stop and look is not necessarily enough. If X predicts that the same person is likely to mute you, block you, report you, or hit “Not interested,” that can pull the score in the opposite direction.
The First Two Hours Really Do Matter
One of the most interesting parts of the current code is something called AuthorColdStart.
This system is designed to give qualifying fresh posts from smaller and mid-sized accounts an opportunity to appear much higher in a viewer’s feed.
The current defaults include:
- 50,000 followers or fewer
- fewer than 200 Home impressions
- a maximum post age of 7,200 seconds, or two hours
- target positions around 15 to 16
- cold-start boosting enabled
- Thompson sampling enabled
Those numbers are all published directly in X’s current parameter file.
That means the first two hours of an original post can matter disproportionately.
It is important, however, to say 200 Home impressions, not simply “200 views.” The code is specifically looking at Home-feed exposure for this feature.
Replies and Reposts Do Not Qualify
The cold-start code also answers another important question.
A qualifying post has to be an original post. Replies and reposts are excluded from this system.
That lines up with another part of X’s feed architecture.
X uses an OONRetweetReplyFilter that removes replies and reposts from out-of-network recommendation candidates. In plain English, replies and reposts are much more limited when it comes to traveling beyond people who already follow you.
That does not make replies useless.
Replies can still build relationships, keep existing followers engaged, and create conversations. But if your goal is discovery, the code gives original posts a much clearer path to people who do not already follow you.
Early Engagement Quality Matters
X’s cold-start system does not simply pick any qualifying new post and push it.
When Thompson sampling is enabled, the system uses early favorite counts and Home impressions to help decide which eligible fresh post gets the opportunity. That means early engagement efficiency matters, not merely the raw number of likes.
A post with 15 likes from 100 early impressions can potentially look very different from a post with 15 likes from 2,000 impressions.
This gives creators a good reason to post when their actual audience is online instead of publishing important original posts when nobody is around to react.
Engagement From a Group Chat Does Not Count the Same Way
This may be one of the most important pieces of code for anyone who participates in engagement groups.
X explicitly says that an action must occur on a post that was served in Home Timeline in order to count in the recommendation system.
The code even gives coordinated group-chat navigation as an example. If someone directly navigates to a post through a shared link rather than encountering it in their Home feed, that activity does not have the same ranking impact.
That means sending your post into a Telegram group, Discord server, retweet group, or private chat and asking everyone to rush over and like it is not necessarily manufacturing the recommendation signal people think it is.
X appears to have specifically designed the system to make that kind of coordinated manipulation less useful.
Don’t Make Your Own Posts Compete With Each Other
X also applies what it calls author diversity.
When multiple posts from the same author compete in the same feed request, each additional post receives a progressively smaller multiplier.
The published values work out approximately like this:
| Same author in one feed request | Multiplier |
|---|---|
| First post | 100% |
| Second post | 62.5% |
| Third post | 43.75% |
| Fourth post | 34.4% |
| Additional posts | approaches 25% floor |
That does not mean your literal second tweet of the day automatically loses 37.5% of its reach.
The reduction applies when several of your posts are competing against one another inside the same viewer’s candidate set. The effect resets with a new feed request.
Still, there is an obvious practical lesson here.
If you have three really important original posts, dumping all three within a few minutes of each other may cause them to compete for the same people’s feeds. Giving strong posts room to breathe makes more sense than treating X like a firehose.
Your Post Has About 48 Hours in For You
X also applies an age filter.
Posts older than approximately 48 hours are removed from this For You recommendation pipeline.
That does not mean a two-day-old post disappears from X.
People can still find it through your profile, search, direct links, replies, notifications, or other surfaces. But its normal opportunity to continue circulating through this particular For You candidate pipeline is essentially over.
That puts even more importance on the first few hours and the first day of a post’s life.
X Recently Added FairShare
Another newer change is worth mentioning.
Around October 21 and 22, X added a FairShare ranking filter designed to change what happens when there are more candidate posts than the system can score.
Previously, candidate ordering could cause some types of posts near the back of the combined candidate pool to be cut disproportionately before they were ever scored.
FairShare instead preserves roughly the same proportional share from the different candidate sources when the candidate pool has to be trimmed.
That matters because a post that never reaches the scoring stage has no chance of being recommended.
It doesn’t guarantee new posts more reach, and it doesn’t change the ranking weights themselves. It simply gives candidate sources a fairer chance to make it into scoring.
Likes Still Matter, But They’re Not the Whole Game
If you only looked at X from the outside, you might assume the goal is simple: Get as many likes as possible. The current code says the reality is much more complicated.
X is predicting whether someone is likely to:
- reply
- quote
- share privately
- copy the link
- follow you
- click
- read
- keep looking
- block you
- mute you
- report you
- tell X they aren’t interested
All of those predictions contribute to what happens next. A post can have plenty of likes and still perform poorly if the system expects other viewers to ignore it or react negatively.
So What Should Creators Actually Do?
Based on the current code, I would focus less on chasing raw likes and more on making strong original posts that generate meaningful interaction.
Post when your real audience is online, especially if the post is important enough that you want it to benefit from the first two-hour cold-start window. Write things people might genuinely reply to, quote, copy, or send to someone privately.
Do not publish five important original posts at once and make them compete with one another.
Do not assume engagement groups are giving you the algorithmic boost you think they are.
And do not overlook the negative side of the equation. A post that generates attention while also generating mutes, blocks, and “Not interested” actions may be doing more harm than the visible engagement numbers suggest.
And Then There Is the Adult Creator Problem
For adult creators, however, there is one more layer. Ranking and visibility are not the same system.
X’s own documentation separates the part that decides where a post ranks from the visibility-filtering system that decides whether the post is eligible to be shown at all.
That distinction is exactly what I have been documenting in the first two parts of this series.
My own Under the Hood reports showed that my account carried a NsfwAdmin label. As a result, 100% of my posts were being hidden from recommendations to people who did not already follow me, even though only a tiny percentage of those posts were individually classified as likely or possible adult content.
So an adult creator can theoretically do everything “right.”
- They can publish an original post.
- They can post at the perfect time.
- They can earn replies, quotes, copy-link shares, and long read times.
- They can qualify for X’s cold-start system.
- They can survive candidate filtering and rank well.
And then an account-level visibility label can still stop that post from being recommended to non-followers.
That may be the single most important lesson from this entire Under the Hood series.
The X algorithm is not one score. It’s a funnel.
You first have to get into the candidate pool. Then you have to survive the filters. Then you have to rank competitively. Then you have to survive visibility enforcement.
A strong ranking score can help you move through that funnel. But it cannot help if the final door is already locked.
I’ll keep researching what ranks and what hurts you as an adult content creator as new data comes in each month (I’m in month 3 of the research for my “under the hood” series), but for now, this information might help along the way. At least I hope it helps clear up some of the confusion.