X Open-Sourced Its Visibility System. Is Under the Hood a Shadowban Checker?

By CarryFeed13 min readPublished

On August 14, 2026, X announced two releases that belong together: more of the code that controls visibility in the For You timeline, and an account page called Under the Hood that reports visibility-limiting labels applied to an account or its posts.

This is the closest X has come to shipping an official shadowban checker. But calling it a complete shadowban test would erase the most useful lesson in the release: there is no single shadowban switch in the published pipeline. A post can rank poorly, be removed from recommendations to non-followers, be restricted to the author's profile, disappear from search, or be buried in replies for different reasons.

Under the Hood can provide first-party evidence for one important part of that problem. It does not replace a current, surface-by-surface visibility check.

Contents
  1. What X released
  2. Is it a shadowban checker?
  3. Ranking vs. filtering
  4. Labels and effects
  5. What the weights mean
  6. What it cannot prove
  7. Why scheduling matters
  8. A useful checking workflow
  9. FAQ

The release has two halves: decision code and your label report

The updated xai-org/x-algorithm repository now includes the systems that attach safety and integrity labels, the visibility-filtering rules that consume them, more ranking configuration, and the Under the Hood reporting jobs. X says some Grox prompts and bot-detection rules remain unpublished to reduce gaming.

That gap is why the report matters. The repository can show what a published label does after it exists; the account page can show whether one of the disclosed labels was actually applied to you. Neither half is as useful alone.

Code and report answer different questions
  1. Label producers

    Classifiers, account models, event rules, and enforcement services attach labels for spam, adult or violent content, malicious links, authenticity, and other policy states.

  2. Visibility filtering

    Rules combine those labels with viewer-specific context such as follows, blocks, mutes, age, and login state, then allow, drop, or place a notice in front of a post.

  3. Under the Hood

    A monthly report tells the authenticated account which supported labels appeared, how many posts carried a post label, or how many days an account label was active.

Yes for disclosed labels; no for the entire shadowban question

If by shadowban you mean “did X attach a disclosed label that limits my posts in recommendations?”, Under the Hood can answer with evidence no third-party checker has. If you mean “why did this post get 80 views?” or “why is my reply missing?”, the report is too narrow.

The serving code builds an aggregate report for a completed prior UTC month. It checks for at least 10 eligible posts and an account age of at least 365 days; X's announcement says the pilot initially reaches a randomized test group of otherwise eligible accounts. The implementation also labels the report as best-effort. See the report-serving source.

Under the Hood shows a label
Treat it as first-party evidence that the named label affected posts or the account during the report period. Read the label's stated effect before describing the restriction.
Under the Hood shows no supported labels
You can rule out the disclosed report labels for that period. You cannot conclude that every post was recommended, searchable, or prominently placed in replies.
The page is unavailable
That may mean the account is outside the pilot or fails an age, activity, or data-readiness check. It is not evidence of a shadowban.
The reach drop happened today
The monthly report is not a live incident monitor. Test the affected post's direct URL, Latest search presence, and reply placement while preserving the exact sample.

The code separates low ranking from limited visibility

This is the most important architectural distinction in the release. Phoenix predicts how likely a particular viewer is to like, reply, share, click, dwell, follow, mute, block, report, or take other actions on each candidate post. A scorer combines those probabilities. Visibility filtering happens as a separate decision path.

A low score means a post loses the ranking competition for that viewer. A visibility response can prevent a post from being shown even if it would otherwise score well. Both produce low reach in analytics, but only the second may generate one of the labels shown by Under the Hood.

A simplified For You request
  1. Retrieve candidates

    Thunder supplies recent posts from followed accounts; Phoenix retrieval and SimClusters add possible posts from outside the viewer's network.

  2. Remove ineligible candidates

    Pre-scoring filters remove duplicates, old or already-seen posts, muted keywords, blocked or muted authors, inaccessible subscriber posts, and other request mismatches.

  3. Predict and rank

    Phoenix predicts action probabilities, RankingScorer combines them, and later stages apply author diversity, network, cold-start, and reranking adjustments.

  4. Apply visibility decisions

    A post-selection hydrator asks the visibility service for a viewer-specific response; the feed drops posts the service says not to show.

“Limited” can mean four materially different outcomes

The public Under the Hood label map is more useful than a single red badge because it describes both why a label exists and what it changes. The effects are not interchangeable.

This matches X's broader enforcement documentation, which lists exclusion from search and timelines, profile-only discoverability, reply downranking, and feature restrictions as separate actions.

Hidden from recommendations to non-followers
Used by labels such as SPAM_HIGH_RECALL, MALICIOUS_URL, and several account-level NSFW or authenticity labels. Followers or direct-profile visitors may still see the post.
Restricted to the author's profile
Used by several Freedom of Speech, Not Reach labels for abuse, hateful conduct, violent speech, or civic integrity. This is much narrower distribution than a normal For You candidate.
Not shown on X or pending removal
SPAM, PDNA, and BOUNCE describe removal or pending-review states, not a subtle ranking penalty.
Warning and audience gating
Adult or graphic-media labels can add an interstitial and exclude underage, unknown-age, or logged-out viewers, while also limiting non-follower recommendations.

The published weights are model coefficients, not points awarded after a click

The August source publishes current defaults in param.rs. In the default weighted mode, the code gives reply and quote probabilities a weight of 5, repost 1, favorite 0.5, share 2, share by DM 5, copy-link share 20, and follow-author 4. Predicted negative actions carry large negative coefficients: not interested −43.2, block −31.2, mute −58.8, and report −234.

Do not translate that into “one reply is worth ten likes.” The scorer multiplies each coefficient by a model-predicted probability for one viewer and one candidate, then sums the terms. The ranking implementation also contains alternate value modes, request-level adjustments, and subsequent rescorers. X says repository defaults are refreshed toward primary production values, while experiments can still change what a portion of traffic receives.

The practical reading is directional. A post competes on several kinds of expected value at once; expected reports, mutes, blocks, and disinterest can outweigh shallow positive engagement. The source does not provide a reliable recipe for manufacturing reach.

Replies and quotes have visible positive weight
That supports creating material worth discussing, but not reply bait. A model predicts response likelihood from viewer context; it does not wait to award a fixed bonus after a reply arrives.
Copy-link share has a high coefficient
The coefficient and the event's typical probability belong together. Comparing coefficients alone ignores how rare each predicted action is.
Reports have the strongest displayed negative default
The code comment says weights reflect both platform value and typical network propensity. A rare event can therefore carry a large coefficient without becoming a universal per-report penalty.

A clean Under the Hood report does not certify normal reach

X's own reach-limitation guide describes policy enforcement, viewer controls, quality and safety ranking, experiments, and technical issues as different reasons a post may not be seen. Under the Hood covers a disclosed label subset, not every item on that list.

It does not explain ordinary low ranking
A post can receive no visibility label and still lose to more relevant candidates for most viewers.
It does not diagnose Search
The source release is scoped to the For You timeline. Search has its own retrieval, ranking, safe-search, and global visibility behavior.
It does not diagnose reply position
A reply may open by direct URL yet be collapsed or ranked lower in a conversation. That needs a conversation-level observation.
It is not fully open
The repository explicitly withholds some Grox prompts and botmaker rules. Open outcomes and many decision paths are a meaningful improvement, but not a complete reproduction of production.
It is not a real-time post inspector
The published report code aggregates a completed prior month. A same-day reach change needs a current sample and may need time before it appears in the report.

Publishing several posts at once can make them compete against each other

The source contains an enabled author-diversity adjustment. After candidates receive their initial scores, the system counts how many higher-scoring posts from the same author are already in that request. With the published defaults, the first candidate keeps its score; the next candidates from that author receive multipliers of about 0.625, 0.438, and 0.344. The sequence approaches a floor of 0.25. You can verify the formula and defaults in RankingScorer and param.rs.

This is not a documented rule that says posting twice within 20 minutes triggers an account penalty. It is a feed-composition rule applied separately for each viewer and request. But it creates a real collision risk: when several fresh posts from one account enter the same candidate pool, later same-author candidates have to survive with discounted scores.

A second diversity stage makes that competition stricter. The published DPP reranker considers the top-scoring pool—up to 150 candidates under the current default—and selects a smaller set that balances score with semantic variety. In the published DPP implementation, candidates not selected receive a score of zero for that reranking result. Five closely related launch posts therefore do not create five independent chances; they can crowd one another before the feed is assembled.

Freshness raises the stakes. The For You pipeline also includes a 48-hour age filter, so spacing posts is about using a limited discovery window deliberately, not saving content for weeks. X does not publish a universally safe interval between posts, and these defaults can change through experiments.

Do not split one idea into a burst of near-duplicates
Choose the strongest standalone post or make the material an intentional thread. Several separate posts about the same launch can face both same-author decay and semantic-diversity selection.
Schedule the queue, not just the next post
Look at nearby scheduled and already-published posts before choosing a time. The useful goal is to reduce overlap among your own fresh candidates while preserving a consistent publishing rhythm.
Treat timing as a testable operating decision
Record the publish time, topic, format, and early distribution, then compare spaced posts with clustered ones. The code supports a spacing hypothesis; it does not prove one best cadence for every account.

Use first-party labels and public observations for different jobs

The new release makes a shadowban diagnosis stronger when it changes the question from “am I banned?” to “which mechanism has evidence?” Start with the official label report when it is available, then test the public surface where the symptom appeared.

CarryFeed's checker remains intentionally narrower than X's internal report: it compares public profile access, a recent post sample, and Latest-search evidence, and marks unavailable observations as unknown. It cannot read X's private label store. That limitation is now the reason the two tools complement each other.

A three-part diagnosis
  1. Check Under the Hood

    If your account is eligible and included in the pilot, record the report period, label name, and stated effect. Download the data if X offers the option in your account.

  2. Check the affected public surface

    Use the same post URL in a logged-out view, Latest search, or the parent conversation. A monthly label does not tell you whether today's sample is searchable.

  3. Name the result precisely

    Say “hidden from non-follower recommendations,” “missing from Latest twice,” or “direct reply opens but is hard to find.” Do not collapse those into one shadowban verdict.

Open the official report
Check Under the Hood on XAvailable only to X's current pilot group and eligible accounts.
Collect public evidence
Run CarryFeed's visibility checkUseful for a current public account and recent-post sample; not an internal-label lookup.
Test Search and replies manually
Follow the ten-minute field diagnosisUse when the symptom is a missing search result or a reply that is difficult to find.

X has not made the shadowban question disappear. It has made one part of the answer inspectable: which disclosed labels were attached, what those labels mean, and where the code turns them into visibility decisions.

That is a substantial transparency gain. The honest way to use it is equally specific: treat Under the Hood as first-party label evidence, not as a certificate that every distribution surface is working normally.

Frequently asked questions

Is X Under the Hood an official shadowban checker?

It is an official report for a disclosed set of visibility-impacting post and account labels. It is not a universal yes-or-no shadowban verdict and does not cover every reason for low reach.

Who can use X Under the Hood?

At launch, X described a randomized pilot for eligible accounts at least one year old. The published report code also requires at least 10 eligible posts in the prior report month.

Does a clean Under the Hood report mean I am not shadowbanned?

It means the report found none of its disclosed labels for that completed period. It does not prove normal ranking, Search visibility, reply placement, or same-day distribution.

Did X publish the exact ranking weights?

The August 2026 repository publishes primary default coefficients and the scoring arithmetic. They apply to predicted action probabilities, can vary through experiments, and should not be read as fixed points awarded for observed engagements.

How is CarryFeed's shadowban checker different?

CarryFeed observes public surfaces such as profile access, a recent post, and Latest search. Under the Hood reads X's own supported label report. One tests current public evidence; the other reports internal labels for a prior period.