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.
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.
| Parameter | What it is | X's value | In 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.
| Parameter | What it is | X's value | In 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.
| Parameter | What it is | X's value | In 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.
| Parameter | What it is | X's value | In 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.
| Parameter | What it is | X's value | In 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.
| Parameter | What it is | X's value | In 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)
AdsTimeGapClampHi | 2.0 |
AdsTimeGapClampLo | 0.5 |
AuthorIsControl | false |
AuthorIsTreatment | false |
AuthorPhoenixMoeEnabled | false |
BidirectionalFollowDwellWeightBoost | 0.0 |
ColdStartBetaAlpha0 | 0.75 |
ColdStartBetaBeta0 | 49.25 |
ColdStartImpressionScale | 1.0 |
ContActiveSecs5mResidualNormWeight | 0.0 |
ContClickDwellTimeWeight | 0.0 |
ContDwellTimeWeight | 0.004 |
EnableAdAdjacentServedFilter | false |
EnableAdsBrandSafetyVerdictV2 | false |
EnableAdsInjectionLogging | true |
EnableAdsSource | true |
EnableAiTrendFeedbackContext | false |
EnableAllAuthorFollowHydration | true |
EnableAuthorServedMetricsExperimentBucket | false |
EnableBidirectionalFollowHydration | true |
EnableCachedPosts | true |
EnableCdwellOnImpr | false |
EnableColdStartThompsonSampling | false |
EnableContextFeatures | true |
EnableEngagementCountsHydration | true |
EnableEntryIdRandomHash | false |
EnableExplicitEngagementSignals | true |
EnableFavHoldout | false |
EnableFeedSurvey | false |
EnableFollowingRepliedUsersFacepile | false |
EnableImplicitEngagementSignals | true |
EnableInferredGenderHydration | true |
EnableInventoryHoldout | false |
EnableIpFeature | true |
EnableJetfuelFrameMlbCarousel | false |
EnableJetfuelFrameNfl | false |
EnableJetfuelFrameNflTimelinePinned | false |
EnableJetfuelFrameNflTimelineRotation | false |
EnableJetfuelFrameSoccer | false |
EnableJetfuelFrames | false |
EnableMultiplicativePostUnexplored | false |
EnableMutualFollowJaccardHydration | false |
EnableNewUserMinEngagementFilter | false |
EnablePhoenixMOESource | false |
EnablePhoenixRequestCacheSideEffect | true |
EnablePhoenixRetrievalFallback | false |
EnablePhoenixRetrievalStatsExperimentBucket | false |
EnablePhoenixScoreStatsExperimentBucket | false |
EnablePhoenixSource | true |
EnablePrompts | true |
EnablePublishSeenIdsToKafka | true |
EnableQuotedVqvDurationCheck | false |
EnableRanking | true |
EnableResponseDiversityStatsExperimentBucket | false |
EnableRetrievalSequenceHydration | true |
EnableScoringSequenceHydration | true |
EnableSemanticIdHydration | true |
EnableServedFilterAllRequests | true |
EnableSimclustersSource | true |
EnableTopicFeedbackContext | false |
EnableTweetMixerSource | false |
EnableUrtMigrationComponents | true |
EnableUserInstalledAppsHydration | true |
EnableUserInstalledAppsV2 | false |
EnableVMRanker | true |
EnableWhoToFollowModule | true |
EnableXaiVfClient | true |
LogSlateContext | false |
MultiplicativePostUnexploredAlpha | 0.0 |
MultiplierPreOffset | false |
NewUserAgeThresholdSecs | 0 |
NewUserMinEngagementFilterMaxResurrectionAgeSecs | 1800 |
NewUserMinEngagementFilterUseRatio | false |
NewUserMinEngagementThreshold | 0.0 |
PhoenixMoeCodivertViewerIsControl | false |
PhoenixMoeCodivertViewerIsTreatment | false |
PhoenixRankerNewUserHistoryThreshold | 0 |
PhoenixRequestCacheSideEffectTtlSeconds | 10800 |
PhoenixRetrievalNewUserHistoryThreshold | 0 |
PostUnexploredWeightInNetworkOnly | true |
QuotedClickWeight | 0.05 |
QuotedVqvWeight | 0.0 |
ShadowTrafficDefaultPercent | 0.3 |
UseEngagementCounterViewCountForImpressionBoost | true |
UseXdsForUas | true |
VMRankerEnableFallback | false |
VqvWeight | 0.0 |
WeightPerturbationSigma | 0.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