ShapelessAI← All notes

№ 003Account standing12 minTal Weiss

What a shadowban is, and how to check on each platform

A shadowban is not one thing: it is a per-platform label or eligibility state, and most expire. What each platform calls it, and whether any checker can see it.

An engraving of a speaker with a megaphone on a theatre stage; a curtain drawn halfway across hides them from the empty back rows while the front rows still listen. The curtain's pulley is drawn as a blueprint.

A shadowban is not one thing, and no platform ships a feature with that name. What exists is a per-platform state: a label written onto your account, or the loss of recommendation eligibility, that stops people who do not follow you from seeing your posts while your followers carry on unaffected. On X that state has a published expiry of exactly 30 days. On Bluesky you can read it yourself in one unauthenticated HTTP request. On Instagram, TikTok, LinkedIn, Threads and Facebook there is no public probe at all, which is why the free checkers ranking for those platforms are scoring something they never measured.

We ran every probe in this note on 2026-09-21, from an ordinary residential connection, with no logins and no accounts created.

30 days
an X soft label lasts, then drops on its own
enforcement_user.yaml, x-algorithm
90 days
until a TikTok strike expires
TikTok, Content violations and bans
1 of 8
platforms where an outsider can read the label: Bluesky
probed 2026-09-21
0
first-party shadowban checkers on any platform
probed 2026-09-21

The whole picture in one table

PlatformWhat it is actually calledWhere you can see itCan anyone outside check itHow long it lasts
Xauthor labels: SpamHighRecall, AbusiveHighRecall, DoNotAmplify and eight morex.com/i/under_the_hood, aggregate label counts on your own accountNo. No unauthenticated probe survives30 days on every soft label
Instagram"not eligible to be recommended"Settings, then Account Status, professional accounts onlyNo. Every logged-out read is 401 or a login redirectNot published
TikTok"ineligible for the For You feed"TikTok Studio, Analytics, on the post itselfNo. A real and a fake handle return byte-identical challengesPost-level not published; strikes expire after 90 days
LinkedInthe "low-quality" classNowhereNo. The profile is behind an authwallNot published
RedditContributor Quality Score, five tiersNowhere for you. Moderators can filter on itNo. The classic about.json test is 403 from any script"Scores are updated regularly"
Blueskya moderation label: spam, !takedownYour own profile objectYes, signed and timestamped, no auth neededUntil the labeller negates it
Threadsinherits Instagram account standingThreads Account StatusNoNot published
FacebookMeta publishes no name for the stateWe could not find a first-party page describing itNo. A plain request returns HTTP 400Not published

Every cell comes from the platform's own documentation or from a request we made on 2026-09-21. The Facebook row is the blank we could not fill: Meta returns HTTP 400 to any script, including to its own help centre.

Two things fall out. The only platform where "am I shadowbanned" has an answer an outsider can verify is Bluesky, and nobody ships a checker for it. Every other row's honest answer is "open your own app", which is not a product, so the search results filled up with products that pretend otherwise.

Why the checkers cannot work

The classic tests all died, and we can show exactly when and how.

X. The famous checker at shadowban.yuzurisa.com runs three tests and only one of them is a measurement. Its own English strings explain the trick: a search ban implies a search suggestion ban, so if the account is not suggestion-banned it "cannot be" search-banned. We called its API for ten well-known handles in one pass and got "search": "_implied_good" for all ten. That value is a sentinel, not a result. Worse, the tool runs off a logged-in scraper account, and on our first pass two of three handles came back with X's message to a locked account, surfaced to the user as if it were a fact about their handle. Unauthenticated, X gives you nothing: a guest token still issues (HTTP 200), but search/typeahead.json with that token returns 404, and x.com profile and search URLs are JavaScript shells with no post data in the HTML.

Reddit. The test every article still describes, fetching reddit.com/user/<name>/about.json and looking for a 404, is dead from any script. We tried eighteen host and user-agent combinations on a residential IP. Every one of them returned 403 "You've been blocked by network security", including the user-agent format Reddit's own docs require, and including for a username that does not exist. Reddit says why in its Data API wiki: traffic not using OAuth or login credentials will be blocked. A human in a real browser still sees the logged-out profile, which is one of the two methods r/ShadowBan's own wiki lists. The other is opening reddit.com/appeal while logged in: in good standing you are told you cannot appeal, and if the account is flagged the form lets you proceed. A server sees neither.

Instagram. api/v1/users/web_profile_info returns 401 with "require_login": true. The hashtag endpoint 302s to login. The profile page returns a 626 KB shell with no profile data in it. The logged-out hashtag-visibility test that every Instagram shadowban article describes has been impossible for years.

TikTok. A logged-out profile fetch returns a 1,462-byte WAF challenge. We fetched /@tiktok and /@zzzqqqx9notarealhandle77231 and got byte-identical responses. A checker cannot tell a real account from a handle we invented, let alone tell you about its distribution.

LinkedIn, Threads, Facebook. LinkedIn serves an authwall. Threads returns the same 275 KB login shell for a real handle and a fake one, to within 23 bytes. Facebook returns HTTP 400 to a plain client.

Bluesky. The exception, because moderation on the AT Protocol is public by design. Every profile carries a labels array, and the labeller is queryable directly:

curl -s 'https://mod.bsky.app/xrpc/com.atproto.label.queryLabels?uriPatterns=<did>'
{"labels":[{"src":"did:plc:ar7c4by46qjdydhdevvrndac","uri":"<did>",
            "val":"!takedown","cts":"2025-10-14T14:05:33.034Z","sig":{...}}]}

The label is named, timestamped and cryptographically signed, and Bluesky's own docs call this a public endpoint. We are building a checker on exactly this, because it is the one place where a checker can be honest. When it ships it will say what it measured and refuse to guess about anything else.

Every outside checker is peering at a shutter; only Bluesky leaves the window clear enough to read the label
Every outside checker is peering at a shutter; only Bluesky leaves the window clear enough to read the label

What each platform actually says

X publishes the code, and the label expires

xai-org/x-algorithm (33,316 stars, last pushed 2026-09-18, read 2026-09-21) contains the filter that implements the thing people call a shadowban. visibility-filtering/rules/author_rules.rs holds a block literally named OON_USER_LABEL_DROPS, where OON means out of network. Eleven rules, one per author label, each dropping the author's posts for viewers who do not follow them, and every one of them carries:

reason: FilteredReason::UnspecifiedReason,

Two of the eleven, AbusiveHighRecall and DoNotAmplify, carry exempt_follower: true. Followers still see you. Strangers do not. That is the textbook definition, in shipped code, with the reason deliberately left unspecified.

The duration is in the enforcement rules. abuse-enforcement-service/service-lib/rules/enforcement_user.yaml is mirrored from production config, stamped last sync 2026-08-26T16:31:18Z, and holds 35 rules. Seven of them apply a soft label, and all seven carry the same expiry:

- id: act_add_llm_slop_label
  when: '"llm_slop_user" in score.labels'
  then:
    kind: act_add_labels_v2
    labels: ["SpamHighRecall"]
    ttl_msec: 2592000000

2,592,000,000 milliseconds is exactly 30 days. So "how long does an X shadowban last" has a real answer for the first time: a soft label expires 30 days after it is applied. It is not extended while it is live. A rule named already_spam_high_recall_labeled sits above the rule that would re-apply it and skips instead, so the clock runs down even if the behaviour continues. When it lapses, the same behaviour earns the label again.

X also now ships a transparency surface for this. Under the Hood shows aggregate statistics about the visibility-limiting labels on your own account and posts, and the September 18 release notes extended it to legal withholding by country. It is a pilot with limited availability. It is still the only first-party label view any major platform offers.

One more X sentence worth having, because it is about new accounts rather than bad ones, from How to control your X experience:

While we're evaluating an account, we may limit its reach. If this happens to you: help us learn by spending time engaging with your timeline and connecting with others.

Instagram says the quiet part in its help centre

From Recommendation eligibility on Instagram (retrieved 2026-09-21):

If your account is not eligible to be recommended, none of your content will be recommended regardless of whether or not all of your content goes against our Recommendations Guidelines. Note that these guidelines only apply to public accounts and recommendations to people who don't follow you. Even if you're not eligible to be recommended, your content can still show up for your followers.

That is an account-level distribution state, applied to all your content, invisible to your followers, and Instagram tells you about it only inside Account Status: Settings, then Account Status, on a professional account. There is no API and no web-readable form.

TikTok calls it ineligible, and puts it in your analytics

For You feed Eligibility Standards (released 2025-08-14, effective 2025-09-13, retrieved 2026-09-21):

Even if a video doesn't make it to the FYF, people may still find it through search or by going to a creator's account. If a video isn't getting many views, it also doesn't necessarily mean it broke a rule.

Content violations and bans adds the mechanics: you need analytics turned on to see the decision, you can appeal it, "Strikes on your TikTok account will expire after 90 days", and, the line that answers the most common wrong instinct, "Deleting your content does not remove strikes, and we may still issue strikes after you delete violative content."

LinkedIn published its classifier in 2017 and nobody cites it

From Strategies for Keeping the LinkedIn Feed Relevant (Bhatt and Saltman, 2017-03-23, quotes re-verified 2026-09-21):

Our online and nearline classifiers label every image, text, or long form post as 'spam,' 'low-quality,' or 'clear' in near real time.

We have heavily invested in our platforms to allow for a spectrum of treatments, including: demoting content in the feed ranking; restricting content to the immediate neighborhood of the poster; limiting places where content can surface (e.g., it can be seen on a member's profile page but not on the feed); making it undiscoverable on the whole site; and, in extreme cases, also disabling the poster.

LinkedIn's shadowban is the middle of that list, it runs within 200 ms of you pressing post, and LinkedIn shows you none of it.

Reddit's score is real and it is not yours to see

Contributor Quality Score is "a user classification that was established to identify potential spammers or redditors less likely to contribute positively", built from past actions, network and location signals, and whether you verified an email, and bucketed into five tiers from Lowest to Highest. Moderators query it in AutoModerator with contributor_quality: "< moderate". You cannot see your own tier anywhere. We cover the karma side of this in Reddit karma and CQS.

The enforcement ladder: five stages from classify to suspend, showing at each stage who can still see the account, and how the label ends
The enforcement ladder: five stages from classify to suspend, showing at each stage who can still see the account, and how the label ends

What actually clears it

Ranked by how much evidence exists, not by how satisfying it is.

  1. Time, if the label is a soft one. Thirty days on X, ninety days for a TikTok strike. Both published, both automatic. Nothing you do makes them shorter.
  2. The specific action the platform asked for. X will tell you to verify an email, add a phone number or delete violating posts before it starts the countdown on a limited state. That is the one case where deleting posts helps.
  3. An appeal, where there is a queue. Instagram Account Status has Request a review. TikTok has Appeal on the ineligible post. Both are real, both are the shortest path when the classifier was wrong, and what the platforms tell you when they restrict an account covers the wording each one uses.
  4. Stopping the input. The label expires on its own, but the model that applied it keeps scoring you. On X the label cannot be extended while it is live, which means the only thing that matters is what you look like on the day it lapses. Change the behaviour during the 30 days, not after.
  5. Nothing else. Not deleting the account's posts in bulk, not a 48-hour posting pause, not changing your bio, not a new account.

One account, or fifty

This distinction is missing from almost everything written on this subject, and it matters more than any tactic.

If you are a founder with one real account, most of the famous advice is inert. Residential proxies, device fingerprints, two-hour action spacing and three-day drip schedules are answers to a problem you do not have: they exist to stop a platform linking many accounts to one operator. You have one account, and it is linked to you on purpose. For you, the risk is much duller. It is posting in a shape a spam classifier recognises, and it is automation software acting on your account. The skip gates in X's own enforcement rules make the underlying logic plain: an account with enough follower count or enough credibility score is exempted before any rule is evaluated. A new account has neither, which is the mechanical reason new accounts get treated harshly. It is not a punishment, it is an absence.

If you are running many accounts, the folklore is at least aimed at the right problem, and it is not what this note is for.

What to do this week

  1. Open the four first-party surfaces. x.com/i/under_the_hood. Instagram Settings, then Account Status. TikTok Studio, Analytics, with analytics turned on. Threads Account Status. Twenty minutes, and it replaces every checker on the internet.
  2. If you are on Bluesky, run the label query above. It takes one second and the answer is signed. On Reddit, open reddit.com/appeal logged in, and your own profile in a logged-out browser window.
  3. Measure the split, not the total. A total view count falls for ten reasons. The shape that means an eligibility problem is non-follower reach collapsing while follower reach holds. Instagram is the only platform that exposes it directly, through the reach metric with breakdown=follow_type, on a connected professional account.
  4. Do not buy a score. Every paid checker we tested for TikTok and Instagram sells a number with no stated method, and one of them rates private accounts by looking at the username.
  5. If a label is on you, wait it out and change the input. Thirty days on X, ninety for a TikTok strike. The clock runs either way; what decides the next 30 days is what the account looks like on the day the label lapses.

The next note in this series reads X's open-sourced algorithm properly: what the ranking code says about your reach, what the enforcement rules say about your account, and which numbers in there are real.

We are ShapelessAI: an agentic content team that researches, writes, designs and publishes to nine platforms for founders. Everything above is what we had to verify to publish on someone else's account without guessing.

Questions

Is shadowbanning real, or a myth?
Real, under other names. X ships the rule set in public code: eleven author labels that drop your posts for people who do not follow you, with the reason field set to UnspecifiedReason, and Instagram writes that if your account is not eligible to be recommended then none of your content will be recommended while your followers still see it. What is a myth is the idea of one switch called shadowban that an outside website can test for you.
How long does a shadowban last?
On X, every soft label in the published enforcement rules carries ttl_msec 2592000000, which is exactly 30 days, counted from when the label was applied and not extended while it is live. TikTok strikes expire after 90 days. Nobody else publishes a duration: Instagram, LinkedIn, Threads and Facebook state no expiry at all, and a Bluesky label lasts until the labeller negates it.
How do I check if I am shadowbanned on Instagram?
Only from inside the app, and only on a professional account. Settings, then Account Status, which shows whether your content may be recommended to people who do not follow you and which post caused the problem. Instagram exposes no public data at all: every unauthenticated read we tried on 2026-09-21 returned 401 or a redirect to the login page, so no external checker can see your status.
Does deleting posts remove a shadowban?
Usually not, and TikTok says so outright: deleting your content does not remove strikes, and it may still issue strikes after you delete the content. The one case where deleting helps is when the platform has told you to do it, which X does when it asks you to delete rule-violating posts before it starts the countdown on a limited state.
Will a new account fix a shadowban?
No, and on several platforms it makes things worse. TikTok restricts or permanently bans accounts created to get around a restriction on another account you own. A new account also starts with no credibility score, which is the exact input that exempts established accounts from enforcement in X's published rules, so the new account is treated more harshly than the one you left.