What does X know about you before ranking a single post?

Before any post is scored, a set of "query hydrators" load context about you, the viewer, into the ranking request. The released code names them: your followed, blocked, muted, and subscribed user IDs; your muted keywords; your recent impressions and served history; your follow-graph overlaps; your IP and country; and — behind feature flags — your demographics and an inferred-gender label. This is the context every post is then ranked against. Your feed is shaped as much by what the system loaded about you as by the posts themselves.

Ranking is personalized, which means before the first post is scored, the system assembles a profile of you — the viewer — to rank against. The released code calls these "query hydrators," and reading their names is the clearest answer to "what does the algorithm know about me."

The viewer profile

The core viewer features are a compact struct — and half of them are exclusion lists:

home-mixer/models/user_features.rs · L7–L14@ 0bfc279
 7pub struct UserFeatures {
 8    pub muted_keywords: Vec<String>,
 9    pub blocked_user_ids: Vec<i64>,
10    pub muted_user_ids: Vec<i64>,
11    pub followed_user_ids: Vec<i64>,
12    pub subscribed_user_ids: Vec<i64>,
13    pub follower_count: Option<i64>,
14    }
CODE-CURRENT0bfc279verified 2026-06-12
The per-viewer feature struct consumed by ranking contains six fields: muted_keywords, blocked_user_ids, muted_user_ids, followed_user_ids, subscribed_user_ids, and follower_count \— the viewer's muted keywords and block/mute lists are first-class ranking inputs.
xai-org/x-algorithm — home-mixer/models/user_features.rs, UserFeatures struct (L7\–L14)as of the May 15, 2026 release

The full hydrator set

Beyond that core struct, the release includes a whole family of query hydrators, each loading one kind of context:

hydratorwhat it loads
followed / blocked / muted / subscribed user IDsYour social graph and exclusion lists
muted keywordsWords that filter posts out of your feed
impressed / served historyWhat you've already been shown, so it isn't repeated
mutual-follow overlapGraph closeness between you and candidate authors
IP / country / languageLocale context for the request
demographics / inferred genderLoaded only behind feature flags — see the dedicated page

The demographic and inferred-gender hydrators are gated and deserve their own careful treatment; they get it on the demographics page. The rest load as standard ranking context.

CODE-CURRENT0bfc279verified 2026-06-12
The home mixer includes a family of query hydrators that load viewer context before ranking: followed/blocked/muted/subscribed user IDs, muted keywords, impressed and served history, mutual-follow overlap, IP/country, and (gated) demographics and inferred gender.
xai-org/x-algorithm — home-mixer/query_hydrators/ (followed_user_ids, blocked_user_ids, muted_user_ids, subscribed_user_ids, impressed_posts, served_history, mutual_follow, ip, user_demographics, user_inferred_gender)as of the May 15, 2026 release

Why it matters

Two things follow. First, your own actions shape your feed: every account you mute or block, every keyword you mute, becomes a permanent input. Second, the same machinery runs on the author side — when you post, the viewer's hydrated profile (their mutes, their blocks, their history) decides whether you're eligible to reach them. Your reach is partly a function of other people's loaded context, which you can't see.

What the code doesn't say

▲ What the code doesn't say

The weight each context feature carries downstream, and which optional hydrators are active in production. The hydrators show what's loaded; how heavily each shapes ranking lives in the withheld scoring parameters. The inputs are code-current; their exact influence is not.

UNKNOWN0bfc279verified 2026-06-12
The numeric values of the current weights are not included in the open-source release: weighted_scorer.rs references a params module (e.g. p::FAVORITE_WEIGHT, p::REPLY_WEIGHT) whose values are not present anywhere in the published repository.
xai-org/x-algorithm (verified by direct inspection of the full repository tree at the pinned SHA) — home-mixer/scorers/weighted_scorer.rs references crate::params; no params definitions with weight values exist in the releaseabsence verified at the pinned SHA; values may be published in a future release

What to do with this

Curate your own inputs — your mutes and blocks tune your feed permanently — and remember that on the publishing side, you're being ranked against context you can't observe. The controllable half is your content and your reputation signals, which is exactly what xDoctor measures from your archive.

← How the X algorithm works now