How the X shadowban test works: the 4 checks
Shadowban Radar observes an X account's public visibility from the outside: the same search results and conversation threads anyone could read by hand. It has no internal access to X's systems, no employee dashboard, and no confirmation from X on any verdict.
Every score on this site comes from 4 checks, each documented below: what it observes, what it cannot, how its confidence level is set, and when it returns Unknown instead of a guess.
Check any handle now: free, no login
Search suggestion ban
We query the same public profile search X uses to suggest accounts as you type a handle. If the account is not returned, X is not surfacing it there. Nothing is inferred: the account either comes back or it does not, so this check is always a pass or a fail, never a guess.
What we cannot observe: whether X shows different suggestions to different searchers. We read from one vantage point, a public search request through the platform's own search endpoint, not from every possible viewer's personalized autocomplete. We also cannot see a partial demotion: profile search either returns the account or it does not, there is no in-between reading.
Confidence: always high. This is a direct, binary observation.
Why it can return Unknown: it does not. This is the one check that always resolves, since the observation itself has only two possible outcomes.
Manual version, no tool required: the search suggestion ban page walks through checking it from a second account.
Search ban
We check whether the account's own recent posts show up in X's post search, the same from:handlesearch anyone can run. Instead of pulling a broad batch of tweets for a yes or no question, we bound the search to a window starting just before the account's most recent posts, when their timestamps are reliably indexed, and check whether those specific posts come back.
What we cannot observe: personalized search ranking. We only see whether a post appears at all, not how far up or down it ranks for a given searcher.
Confidence: always high when the check runs. It is a direct observation, nothing inferred.
Why it can return Unknown: two cases, both meaning "not applicable" rather than "restricted". A protected (private) account, since its posts are never public search material to begin with. And an account with zero posts, since there is nothing to search for.
Manual version, no tool required: the search ban page.
Ghost ban
This is where the method gets probabilistic. We take one of the account's real replies inside a real conversation and check whether it is visible in that thread from an outside read, in both the default sort and the chronological sort. If the reply shows up in either sort, it is not ghost banned.
If it is missing from both, we do not take that at face value: a thread can simply be too large to read completely, or its author can restrict who is allowed to reply, and both would explain an absence with no restriction on the account at all. We only call it a ghost ban once the absence is proven, either by reading the whole thread (bounded by its actual reply count, not by a pagination flag that can claim there is more when there is not) or by finding a reply from someone else posted just before and one posted just after the account's own reply: proof that slice of the conversation was actually served, whatever the pagination says.
What we cannot observe: we read threads through the same public API surface that composes the conversation, not by opening the app as a second human being. We treat that as equivalent to a logged out, outside view, and cannot independently verify every rendering quirk of the app matches it. We also cannot test an account that has never replied to anyone: there is no conversation to check.
Confidence: high once an absence is proven the way described above, high as well when the reply is found and the thread is fully read, and unknown when neither a reply nor a valid proof of absence turns up.
Why it can return Unknown: the thread's author restricted who can reply, the thread is too large to finish reading within the check's budget, the account has never replied to anyone, or the account's own timeline serves zero posts even though it has posted. That last case is flagged on its own as the heaviest signal we can observe, rather than a neutral gap.
Manual version, no tool required: the ghost ban page.
What we can never detect
X does not expose a shadowban flag to anyone, including us. We never see an internal moderation score or a reason code. Every verdict on this site comes from public output.
We read from one vantage point: a single, logged out style read through the API. If X serves meaningfully different results to different viewers, we see one version of that, not everyone's. We can say a restriction is present, never which specific post or behavior caused it. And a restriction that never surfaces as a missing suggestion, a missing post in search, or a reply pushed out of a thread's visible sort is invisible to all 4 checks, and to any tool that only reads the public interface, ours included.
We only measure X. Nothing here applies to Instagram, TikTok, or any other platform.
Why a check can return Unknown
X composes each thread and each search result at the moment it is read, not at the moment something was posted, so the same account can look different an hour apart with nothing having changed about the restriction itself. An Unknown is what happens when the evidence available in that one read is not enough to prove a verdict either way: a protected account, an account with zero posts, a conversation whose author restricts who can reply, a thread too large to finish reading, an account that has never replied to anyone, or a timeline serving zero posts.
An Unknown is a report on what could be measured this run, never a verdict, and it is never averaged into the score as if it were a pass or a fail. Behind the scenes, the paid agent tries the cheapest re-check first: at each scheduled pass it re-verifies the fastest-moving evidence of the last full audit, search visibility and thread visibility, and it only accepts that shortcut if nothing has moved. The moment a signal moves, it escalates to a full fresh scan instead of assuming continuity; a measurement it cannot conclude is simply retried at the next pass, and escalates on its own after hours of silence. That full scan is the only thing allowed to change a verdict. See how the automated monitoring works.
How the score is built
Only checks that returned a pass or a fail count toward the score. Each counts weighted by its confidence, high confidence counts for more than medium, and an Unknown check counts for nothing at all rather than being treated as a neutral middle value.
A perfect score across every measurable check reads "No shadowban detected". Any high confidence fail, with one exception, is enough to read "Shadowban detected" outright, regardless of the other checks. The exception is reply deboosting: it says a reply is ranked lower, not removed, so on its own it cannot push an otherwise clean account straight to the harshest verdict, only lower its score.
Short of that, a score under 50 still reads "Shadowban detected", and anything else measurable reads "Partial restrictions detected". If none of the 4 checks could be measured at all, the score itself is left blank rather than shown as zero: zero would say every check failed, which would not be true.
Frequently asked
Does Shadowban Radar have special access to X's systems?
No. We read the same public search results and public conversation threads that anyone could read by hand from outside your account. There is no internal flag, no employee dashboard, and no confirmation from X involved in any verdict.
Why did my score change between two scans with nothing else changing?
X recomposes threads and search results at the moment they are read, not at the moment something was posted. A restriction can be applied or lifted between two scans, and a reply missing from a thread one hour can reappear the next with no other change on your end. That is what automated monitoring, throughout the day, is built to catch.
Why does one check say Unknown while the others have a verdict?
Each of the 4 checks depends on different evidence being available. A protected account, for example, makes the search ban check not applicable, while ghost ban and reply deboosting need a recent reply inside a conversation we can read to completion. Missing that evidence produces Unknown on some checks and a real verdict on others in the same scan.
Does an Unknown check lower my score?
No. A check that returns Unknown is left out of the score entirely. It is never counted as a fail, and it never gets averaged in as a partial pass.
Can Shadowban Radar be wrong?
Yes, within the confidence it publishes. The search based checks are direct, binary observations and are rarely wrong. The thread based checks, ghost ban and reply deboosting, read a sample of real conversations and are inherently probabilistic. That is why every verdict ships with a confidence level instead of a single number pretending to be certain.
Test it yourself
Run the 4 checks on any handle
The 4 restrictions, in detail
Last reviewed