X (formerly Twitter) recently released details of its recommendation system, opening up over 400,000 lines of code that power the “For You” feed. This wasn’t just a minor update, it was the first time creators and users got to peek behind the curtain at how the platform truly works. These rules explain why some posts go viral overnight, why others flop, and what makes certain accounts consistently visible while others struggle to grow. If you’re serious about building an audience, understanding this algorithm is no longer optional – it’s essential!

Every account on X has a hidden reputation score that determines how widely posts are distributed. This score acts like a secret popularity rating that shapes everything from whether your tweets show up in timelines to how your replies rank.
Here’s how it works:
Think of this score like a credit rating. A high score means the system trusts you more, and your posts get shown more often. A low score keeps you invisible, no matter how good your content might be.
X once claimed it was phasing out old systems, but TweetCred is still in play. This hidden scoring system evaluates your behavior:
In practice, this means that unverified accounts need 10x more engagement to get the same reach as verified ones. Many creators find themselves stuck because they don’t know this hidden rule is holding them back.
Code Snippet:
These snippets come from Twitter/X’s algorithm codebase. They show how the system tracks negative feedback signals given by users against content or accounts.
def getLastNegativeFeedbackTime(userId: Long): Stitch[Option[Time]] = {
val enabledNegativeSignalTypes = Seq(
SignalType.AccountBlock,
SignalType.AccountMute,
SignalType.TweetSeeFewer,
SignalType.TweetReport,
SignalType.TweetDontLike
)
// negative signals
val maybeNegativeSignals =
enabledNegativeSignalTypes.map { negativeSignal =>
SignalRequest(
maxResults = Some(1), // Only most recent needed
signalType = negativeSignal
)
}
}
def getLastNegativeFeedbackTime(userId: Long): Stitch[Option[Time]] = {
val enabledNegativeSignalTypes = Seq(
SignalType.AccountBlock,
SignalType.AccountMute,
SignalType.TweetSeeFewer,
SignalType.TweetReport,
SignalType.TweetDontLike
)
// negative signals
}
In addition to reputation scores, X quietly tags content with invisible labels that can drastically shrink distribution. A few examples:
Creators often see their reach vanish for weeks without knowing why – these hidden tags are usually the reason.

If users take the following negative actions upon your content, you are penalized through the algorithm for three months in total:
def getLastNegativeFeedbackTime(userId: Long): Stitch[Option[Time]] = {
val enabledNegativeSignalTypes = Seq(
SignalType.AccountBlock,
SignalType.AccountMute,
SignalType.TweetSeeFewer,
SignalType.TweetReport,
SignalType.TweetDontLike
)
// negative signals
val maybeNegativeSignals =
enabledNegativeSignalTypes.map { negativeSignal =>
SignalRequest(
maxResults = Some(1), // Only most recent needed
signalType = negativeSignal
)
}
}
Critical Impact: One virulent post that causes negative actions can ruin your reach for a full quarter. The system does not recognize or differentiate between an authentic feedback and a collision of attacks.
Some rules of the algorithm that can get you penalized or deboosted are:
/** Configure from a config file, validate the configuration. */
public TweetTextScorer(String configFile) {
TweetProcessingConfig.init(configFile);
// get dampings
checkWeightRange(offensiveTermDamping = TweetProcessingConfig
.getDouble("offensive_term_damping", DEFAULT_OFFENSIVE_TERM_DAMPING));
checkWeightRange(offensiveNameDamping = TweetProcessingConfig
.getDouble("offensive_name_damping", DEFAULT_OFFENSIVE_NAME_DAMPING));
// get weights
checkWeightRange(lengthWeight = TweetProcessingConfig
.getDouble("length_weight", DEFAULT_LENGTH_WEIGHT));
checkWeightRange(readabilityWeight = TweetProcessingConfig
.getDouble("readability_weight", DEFAULT_READABILITY_WEIGHT));
checkWeightRange(shoutWeight = TweetProcessingConfig
.getDouble("shout_weight", DEFAULT_SHOUT_WEIGHT));
checkWeightRange(entropyWeight = TweetProcessingConfig
.getDouble("entropy_weight", DEFAULT_ENTROPY_WEIGHT));
checkWeightRange(linkWeight = TweetProcessingConfig
.getDouble("link_weight", DEFAULT_LINK_WEIGHT));
}
Algorithms has its own set of rules and if your tweet doesn’t follow them then there is a huge chance your account will either get penalized or deboosted.
userRules = Seq(
AbusiveRule,
LowQualityRule,
ReadOnlyRule,
CompromisedRule,
SpamHighRecallRule,
DuplicateContentRule,
AbusiveHighRecallRule,
EngagementSpammerNonFollowerWithUqfRule,
EngagementSpammerHighRecallNonFollowerWithUqfRule,
DownrankSpamReplyNonFollowerWithUqfRule
)
Blue check verification has many competitive advantages like:
def recordViralContentStats(
candidates: Seq[ItemCandidateWithDetails],
statsReceiver: StatsReceiver,
clientId: String
): Unit = {
val viralContentCount = candidates.count { candidate =>
candidate.features.getOrElse(ViralContentCreatorFeature, false)
}
val viralContentInNetworkCount = candidates.count { candidate =>
candidate.features.getOrElse(ViralContentCreatorFeature, false) &&
candidate.features.getOrElse(InNetworkFeature, true)
}
val viralContentOutOfNetworkCount = candidates.count { candidate =>
candidate.features.getOrElse(ViralContentCreatorFeature, false) &&
!candidate.features.getOrElse(InNetworkFeature, true)
}
}
If you were verified under the old platform, you receive algorithmic benefits beyond the normal blue check benefits such as reach multipliers and penalties.

In general, algorithmically, the platform treats different content types dramatically different:
The video content has the strongest algorithmic multiplier if it meets the 10-Second Rule: If it keeps the viewer attention for more than 10 seconds in a video then it qualifies for:
The video can be optimized by following these:
It might not have much stronger dominance as compared to the videos but we have the 2-Seconds Dwell Time Trigger where basically the text posts where people stay on for 2 seconds or longer receive boosts from the algorithm. The text posts can be optimized by following these:
All type of engagement doesn’t hold the same percentage with the algorithm:
X prevents any one account or topic from dominating feeds with diversity filters:
If you want to succeed on X today, you need a strategy that aligns with the algorithm. Here’s a breakdown:
Also Read: A Guide on Social Network Recommendation System
The 2025 algorithm update changed the rules of growth on X. Reputation scores, hidden labels, and engagement multipliers now dictate who wins and who fades. Most users have no idea these mechanics exist—but those who learn them gain a huge advantage.
Success on X isn’t about posting more. It’s about posting smarter. Focus on value-rich content that sparks conversations, earns bookmarks, and builds trust. The algorithm rewards consistency, originality, and genuine community building. If you align your strategy with these rules, the system won’t hold you back – it will push you forward.