XThe X Algorithm
The numbers

X's own parameters, and the arithmetic.

The feed runs on values X publishes. Here they are, unedited, with one plain sentence each and the division that turns them into something you can hold in your head. Nothing on this page is an opinion, and nothing is behind a paywall.

Read from X's published configuration, commit 8b25829717a4f104dd04403ee7d0253c5fedb1b7, on September 18, 2026. A like is 0.5, so every figure in the right-hand column is that row's value divided by 0.5.

-234.0one report
0.5one like
-468-234.0 ÷ 0.5, so one report cancels 468 likes

What a reader can do for you

Every one of these is a weight X adds to a post's score when that reader is likely to do it. The column on the right is that weight divided by the weight of a like, which is how the book talks about them.

ParameterWhat it isX's valueIn likes
ReplyWeight Someone replies to your post. 5.0 +10
BidirectionalFollowReplyWeightBoost Added on top of a reply when you and that person follow each other. 15.0 +30
ShareViaCopyLinkWeight Someone copies the link to your post and sends it somewhere else. 20.0 +40
ShareViaDmWeight Someone sends your post in a message on X. 5.0 +10
QuoteWeight Someone quotes your post. 5.0 +10
ShareWeight Someone uses the share button. 2.0 +4
FollowAuthorWeight Someone follows you from the post. 4.0 +8
RetweetWeight Someone reposts you. 1.0 +2
FavoriteWeight Someone likes it. This is the unit everything else is measured in. 0.5 +1
ClickWeight Someone opens the post itself. 0.4 +0.8
OpenLinkWeight Someone opens a link in your post. 0.2 +0.4
VideoOpenWeight Someone opens a video. 0.07 +0.14
PhotoExpandWeight Someone expands a photo. 0.05 +0.1
DwellWeight Someone stops and reads rather than scrolling past. 0.05 +0.1
ProfileClickWeight Someone opens your profile from the post. 0.0 0
PostUnexploredWeight A small nudge for showing a reader something they have not seen before. 0.02 +0.04

What a reader can do against you

Negative weights. These are subtracted, and they are far bigger than anything above, which is the single most important fact on this page.

ParameterWhat it isX's valueIn likes
ReportWeight Someone reports your post. -234.0 -468
MuteAuthorWeight Someone mutes you. -58.8 -118
NotInterestedWeight Someone taps "not interested in this post". -43.2 -86
BlockAuthorWeight Someone blocks you. -31.2 -62
NotDwelledWeight Someone scrolls straight past without stopping. -0.02 -0.04

How far outside your followers it travels

What happens to a post shown to people who do not follow you.

ParameterWhat it isX's valueIn likes
OonWeightFactor Everything a non-follower does counts this much of what a follower doing the same thing counts. 0.75
TopicOonWeightFactor The same again, for posts pulled in by topic. 0.5
EnableOonRescoreForInNetworkRepliesRetweets Whether replies and reposts inside your network get rescored this way. true

How often you can appear

Limits on one author filling somebody's feed.

ParameterWhat it isX's valueIn likes
AuthorDiversityDecay How hard each extra post by the same author is pushed down. 0.5
AuthorDiversityFloor The lowest that pushing down can go. 0.25
EnableAuthorDiversity Whether that rule is on. true

New posts and new accounts

What the feed does before it knows anything about a post or a reader.

ParameterWhat it isX's valueIn likes
ColdStartMaxPostAgeSecs How old a post can be and still be treated as new. In hours: see the note under this table. 172800
LowImpressionsMaxPositionRatio How far up the feed a post with almost no impressions is allowed to sit. 0.85
EnableViewerColdStart Whether a reader with no history gets the cold-start path. true
NewUserMinEngagementFilterMaxAccountAgeSecs How long an account counts as new for the engagement filter. 1800

172800 seconds is 48 hours.

The machinery

Numbers that shape the feed without being about any one post.

ParameterWhat it isX's valueIn likes
MaxPostsToCache How many posts are held ready per request. 750
ExcludeServedTweetIdsNumber How many already-seen posts are kept out. 100
EngagementSignalsMaxPerType How many signals of each kind are carried into scoring. 15
AdsTimeGapTSec The spacing used when ads are slotted in. 4.0
VMRankerDppTheta How strongly the ranker pushes for variety in what it picks. 0.65

What this does not tell you

These are the weights, not the whole machine. They say what one action is worth once a post is being scored for one reader. They do not say which posts get pulled in to be scored in the first place, what the models predict, which rules can hide a post before any of this runs, or what happens when an account is labelled. Those are the parts the book is for.

Everything else in the file, unsorted and unexplained (88 more)
AdsTimeGapClampHi2.0
AdsTimeGapClampLo0.5
AuthorIsControlfalse
AuthorIsTreatmentfalse
AuthorPhoenixMoeEnabledfalse
BidirectionalFollowDwellWeightBoost0.0
ColdStartBetaAlpha00.75
ColdStartBetaBeta049.25
ColdStartImpressionScale1.0
ContActiveSecs5mResidualNormWeight0.0
ContClickDwellTimeWeight0.0
ContDwellTimeWeight0.004
EnableAdAdjacentServedFilterfalse
EnableAdsBrandSafetyVerdictV2false
EnableAdsInjectionLoggingtrue
EnableAdsSourcetrue
EnableAiTrendFeedbackContextfalse
EnableAllAuthorFollowHydrationtrue
EnableAuthorServedMetricsExperimentBucketfalse
EnableBidirectionalFollowHydrationtrue
EnableCachedPoststrue
EnableCdwellOnImprfalse
EnableColdStartThompsonSamplingfalse
EnableContextFeaturestrue
EnableEngagementCountsHydrationtrue
EnableEntryIdRandomHashfalse
EnableExplicitEngagementSignalstrue
EnableFavHoldoutfalse
EnableFeedSurveyfalse
EnableFollowingRepliedUsersFacepilefalse
EnableImplicitEngagementSignalstrue
EnableInferredGenderHydrationtrue
EnableInventoryHoldoutfalse
EnableIpFeaturetrue
EnableJetfuelFrameMlbCarouselfalse
EnableJetfuelFrameNflfalse
EnableJetfuelFrameNflTimelinePinnedfalse
EnableJetfuelFrameNflTimelineRotationfalse
EnableJetfuelFrameSoccerfalse
EnableJetfuelFramesfalse
EnableMultiplicativePostUnexploredfalse
EnableMutualFollowJaccardHydrationfalse
EnableNewUserMinEngagementFilterfalse
EnablePhoenixMOESourcefalse
EnablePhoenixRequestCacheSideEffecttrue
EnablePhoenixRetrievalFallbackfalse
EnablePhoenixRetrievalStatsExperimentBucketfalse
EnablePhoenixScoreStatsExperimentBucketfalse
EnablePhoenixSourcetrue
EnablePromptstrue
EnablePublishSeenIdsToKafkatrue
EnableQuotedVqvDurationCheckfalse
EnableRankingtrue
EnableResponseDiversityStatsExperimentBucketfalse
EnableRetrievalSequenceHydrationtrue
EnableScoringSequenceHydrationtrue
EnableSemanticIdHydrationtrue
EnableServedFilterAllRequeststrue
EnableSimclustersSourcetrue
EnableTopicFeedbackContextfalse
EnableTweetMixerSourcefalse
EnableUrtMigrationComponentstrue
EnableUserInstalledAppsHydrationtrue
EnableUserInstalledAppsV2false
EnableVMRankertrue
EnableWhoToFollowModuletrue
EnableXaiVfClienttrue
LogSlateContextfalse
MultiplicativePostUnexploredAlpha0.0
MultiplierPreOffsetfalse
NewUserAgeThresholdSecs0
NewUserMinEngagementFilterMaxResurrectionAgeSecs1800
NewUserMinEngagementFilterUseRatiofalse
NewUserMinEngagementThreshold0.0
PhoenixMoeCodivertViewerIsControlfalse
PhoenixMoeCodivertViewerIsTreatmentfalse
PhoenixRankerNewUserHistoryThreshold0
PhoenixRequestCacheSideEffectTtlSeconds10800
PhoenixRetrievalNewUserHistoryThreshold0
PostUnexploredWeightInNetworkOnlytrue
QuotedClickWeight0.05
QuotedVqvWeight0.0
ShadowTrafficDefaultPercent0.3
UseEngagementCounterViewCountForImpressionBoosttrue
UseXdsForUastrue
VMRankerEnableFallbackfalse
VqvWeight0.0
WeightPerturbationSigma0.0

The book is the other half. This page is the numbers. The book tells you what to do about them. It is updated every month, and updates are free.

See what it costs