- Chrome Web Store
- Policy
- Alerts
Chrome extension removed from the Chrome Web Store? How to find out why, appeal and catch it early
Chrome extension removed from the Chrome Web Store? Find out why, fix or appeal the takedown, and set up a daily check that catches the next one the same day.
- Author
- Extenify Team
- Published
- Reading time
- 13 min read

On this page
Finding your Chrome extension removed from the Chrome Web Store is a bad morning. The listing link shows an empty store page, new installs stop, and if you missed an email from Google you may not even know why. The good news is that most removals are reversible. Google's own review documentation says that "in most situations takedowns are not permanent", and developers regularly get their items back after a fix or an appeal.
This guide covers how to work out what kind of removal you are dealing with, what each one means for your existing users, how to fix or appeal it, and how to set up a daily check so the next problem reaches you before your users do.
Key takeaways
- "Removed" can mean five different things: a policy takedown, a malware takedown, an unpublish by someone on your team, an account suspension, or the end of Manifest V2, which removed every remaining MV2 item on August 31, 2026.
- A takedown is usually preceded by a warning email that gives you 7 to 30 days to fix the problem. Most surprise takedowns trace back to a missed email.
- Existing users keep a policy-removed extension at first. If the takedown is not resolved for weeks, Chrome disables it. Malware takedowns disable it everywhere at once, with no way to re-enable.
- The Chrome Web Store API v2
fetchStatuscall returnswarnedandtakenDownflags for your own items. Polling it once a day is the cheapest early warning you can build.- Do not rely on the listing URL returning an error. In our test on October 8, 2026, a removed item's listing redirected to a normal-looking store page with an HTTP 200.
Chrome extension removed from the Chrome Web Store? Confirm it first
Before you write an appeal, make sure the item is actually gone and not just hard to find.
- Open the Developer Dashboard. The item page shows its status and, for enforcement actions, the policy involved. This is the only place with the full story.
- Search your inbox, including spam, for the publisher contact email. Google sends warnings, rejections and takedown notices to the email address on the publisher account, which on older accounts is often a shared or forgotten address.
- Open the listing in a private window. A logged-in developer sometimes sees things visitors do not.
- Check that it is not a search problem. If the listing URL still works but the extension no longer shows for its usual keywords, it was not removed. That is a ranking issue, and the listing data (users, rating, version) will still be visible.
If the listing URL shows an empty store page, the item is not being served to the public. Now work out why.
The five reasons an extension disappears
| What happened | Email to publisher? | Existing users | Way back |
|---|---|---|---|
| Policy takedown | Yes, naming the policy | Keep it at first; disabled if unresolved for weeks, and they can re-enable it | Fix and resubmit, or appeal |
| Malware takedown | No | Disabled on all devices, cannot be re-enabled | Appeal, if you believe it is wrong |
| Unpublished by your team | No (it was your action) | Keep it, but Safety Check may flag it | Publish again from the dashboard |
| Account suspension | Yes | Depends on the violation | Account appeal |
| Manifest V2 removal | Announced in advance | Frozen on Chrome 138 or earlier, broken on newer Chrome | Migrate to Manifest V3 and publish a new version |
The details come from Google's Chrome Web Store review process documentation and the Manifest V2 deprecation timeline.
Policy takedown
This is the common case. Google describes two paths. An immediate takedown happens "when reviewers detect one or more policy violations of moderate or greater severity." A delayed takedown follows a warning: for a published item with minor violations, the publisher is warned by email and "typically given 7 to 30 days to address the issue(s)." If the deadline passes without a fixed version, the item comes down.
Google says its automated emails "state what policy or policies were violated", and they usually include a violation reference ID. Google's troubleshooting page for Chrome Web Store violations maps each reference to what reviewers look for and how to fix it.
Malware takedown
Malware takedowns are the exception to almost every rule. Google says that, "unlike other enforcement actions, notification is not sent to the publisher's email address", and the extension "is disabled on all end user devices." Users cannot turn it back on. If you are a legitimate developer and this happens, look first at a compromised developer account, a compromised build pipeline, or a third-party library that started doing something it should not. Treat it as a security incident first and a store problem second.
Unpublished by someone on your team
If the item status says unpublished, a person with access to the publisher account did it, or visibility was switched to private. Check who has access before you assume Google did anything. Users who already installed it keep it, but since Chrome 117 the Safety Check on chrome://extensions flags installed extensions that are no longer in the store, including when "the extension has been unpublished by the developer", and offers to remove them.
Account suspension
In severe cases Google suspends the whole developer account, which removes every item on it. The fix is an account-level appeal, covered below.
The end of Manifest V2
On August 31, 2026, Google's timeline recorded that "all remaining Manifest V2 extensions have been removed from the Chrome Web Store." Installed copies keep running only on Chrome 138 or earlier, and users cannot get updates or reinstall. If your listing vanished at the end of August and you never migrated, this is why. There is no appeal; the path back is a Manifest V3 version.
What your users see while you fix it
The impact on existing users is what decides how fast you need to move.
- Right after a policy takedown, almost nothing changes for them. Google says "end users are not notified of the enforcement action immediately after takedown." The extension keeps working.
- If the takedown is unresolved for weeks, Chrome disables the extension. Users can re-enable it, but many will not notice it is off, and some will uninstall. This is when weekly users fall sharply, and it looks a lot like the update-related drops in our guide to why Chrome extension weekly users dropped.
- Safety Check starts warning them. Chrome flags extensions removed for a policy violation in its settings and on the extensions page. Google designed it so that the warning is not shown "when the developer has been notified of a possible violation and has been given time to address the issue or appeal", and it is "automatically cleared" once the issue is resolved.
- New users cannot install at all. Every link to your listing, from your website, docs and past launch posts, now leads to an empty page.
Put a short notice on your website and support page explaining that the extension is temporarily unavailable in the store. It costs five minutes and stops a wave of "is this dead?" emails and one-star reviews when you return.
How to fix or appeal a Chrome Web Store takedown
If the violation is real: fix and resubmit
Most takedowns are resolved by a new version, not an argument. Read the policy named in the email and the matching entry on the troubleshooting page, then fix the specific thing. The most frequent causes are:
- A listing description that does not mention a feature the code contains. One developer on Hacker News had a seven-year-old extension removed because a link to a support chat was read as an undisclosed chat feature.
- Permissions that the extension does not clearly need for its single purpose.
- A privacy policy or data disclosure that does not match what the code sends.
- Code that is obfuscated or loaded from a remote server.
Upload the fixed version and submit it for review. Review times vary, and our guide to Chrome Web Store review time explains what slows it down and how to measure your own.
If the decision is wrong: appeal it
Google says that "review verdicts and account suspensions can be appealed from the Chrome Web Store developer dashboard." For an item, open its page in the dashboard and choose Appeal. For an account suspension, use the Appeal button on the account page. For anything else, Google points to One Stop Support, and notes that "it may take up to three days to receive a reply."
A good appeal is short and specific:
- The item ID and the violation reference from the email.
- One sentence on what the extension does, matching the listing.
- For each point the reviewer raised, the file or listing section where it is handled, or what you changed.
- If you changed nothing because the finding is mistaken, the evidence. For example, "the flagged chat feature is an external link to our support page, see the help link in options.html."
Appeals do work. The developer in the Hacker News thread above later posted the reply: "We have found your item to be compliant with all our policies. So, we have approved your latest submission."
Catch the next removal the same day
Most of the damage from a takedown happens in the gap between the event and the moment you notice it. A warning email that sits unread for three weeks becomes a takedown. A takedown that goes unnoticed for a month becomes a disabled extension on every user's browser. Two small checks close that gap.
Check your own items with the Chrome Web Store API
The Chrome Web Store API v2 fetchStatus method returns the state of an item you publish. Two fields matter here: warned, which is true when "the item has been warned for a policy violation and will be taken down if not resolved", and takenDown, which is true when "the item has been taken down for a policy violation." It also returns the published revision state, such as PUBLISHED or PUBLISHED_TO_TESTERS, and the submitted revision state, such as PENDING_REVIEW or REJECTED.
The API accepts a service account, which suits a scheduled job better than a personal OAuth token. You add its email in the Developer Dashboard under Account; Google allows one service account per publisher.
// cws-status-check.mjs
// npm install google-auth-library
import { GoogleAuth } from 'google-auth-library';
const PUBLISHER_ID = process.env.CWS_PUBLISHER_ID;
const ITEM_IDS = process.env.CWS_ITEM_IDS.split(','); // your extension IDs
const WEBHOOK_URL = process.env.ALERT_WEBHOOK_URL; // Slack or Discord incoming webhook
const auth = new GoogleAuth({
scopes: ['https://www.googleapis.com/auth/chromewebstore.readonly'],
});
const client = await auth.getClient();
async function alert(text) {
await fetch(WEBHOOK_URL, {
method: 'POST',
headers: { 'content-type': 'application/json' },
// Slack reads "text"; Discord reads "content".
body: JSON.stringify({ text, content: text }),
});
}
for (const itemId of ITEM_IDS) {
const url = `https://chromewebstore.googleapis.com/v2/publishers/${PUBLISHER_ID}/items/${itemId}:fetchStatus`;
const { data } = await client.request({ url });
const published = data.publishedItemRevisionStatus?.state ?? 'NOT_PUBLISHED';
if (data.takenDown) {
await alert(`${itemId} was taken down for a policy violation. Check the Developer Dashboard now.`);
} else if (data.warned) {
await alert(`${itemId} has a policy warning. Fix it before the deadline in the email.`);
} else if (published !== 'PUBLISHED') {
// Drop this branch for items you publish only to trusted testers.
await alert(`${itemId} is not publicly published (state: ${published}).`);
}
}
Run it once a day from whatever scheduler your backend already has. A warning caught on day one leaves you the whole 7 to 30 day window to ship a fix.
Check any extension from the outside
fetchStatus only works for items you publish. For extensions you depend on, partner extensions, or competitors, use the public update service that Chrome itself uses. Our guide to the Chrome Web Store stats API explains the endpoint in more detail.
// cws-availability.mjs
const CHROME_VERSION = '150.0'; // any recent Chrome version
export async function isServed(extensionId) {
const url = new URL('https://clients2.google.com/service/update2/crx');
url.searchParams.set('response', 'updatecheck');
url.searchParams.set('acceptformat', 'crx3');
url.searchParams.set('prodversion', CHROME_VERSION);
url.searchParams.set('x', `id=${extensionId}&uc`);
const xml = await (await fetch(url)).text();
// A live item returns a download URL; a removed one returns status="noupdate" without it.
return /codebase="/.test(xml);
}
On October 8, 2026, this returned a download URL for uBlock Origin Lite and status="noupdate" with no package for the original uBlock Origin, which left the store with the Manifest V2 removal. Keep prodversion current: an item whose minimum Chrome version is newer than the one you send may also come back without a package.
Notice what we did not use: the listing page's HTTP status. Google's review documentation says users who open a removed listing get a 404, but in our test the store redirected /detail/<id> to /detail/empty-title/<id> and answered with a 200 and a page titled only "Chrome Web Store". A naive uptime check would report it as healthy.
Watch the numbers that move after a takedown
The API tells you about the takedown itself. The store numbers tell you what it is costing you. Once Chrome disables a removed extension, weekly users fall, and when the item returns, the rating and review count tell you how users took the outage.
Extenify's Chrome extension analytics dashboard records the public listing data for your Chrome, Edge and Firefox extensions every day, keeps the history, and sends a daily change alert to email, Slack, Telegram, Discord or Teams when users, ratings or versions move past the thresholds you set. It does not replace the fetchStatus check above, but together they cover both the cause and the effect. Our guide to store change alerts your team will actually read covers which changes deserve a same-day ping. Tracking one extension is free, and the pricing page lists what the paid plans add.
Prevent the next one
- Keep the publisher email alive. Route it to a shared inbox that someone reads daily, and add a filter that flags anything from the Chrome Web Store.
- Re-read the listing before each release. Every feature in the code should appear in the description, and every permission should have an obvious reason.
- Review new dependencies. Analytics, AI and monetization SDKs are where undisclosed data collection and remote code tend to come from. If you add an AI feature, our guide to streaming AI responses in a Chrome extension shows a setup that keeps model calls on your server and out of the package.
- Follow store policy changes. Our roundup of Chrome Web Store changes in 2026 covers the rules that took effect this year.
Frequently asked questions
Why was my Chrome extension removed without an email?
Either the email went to a publisher contact address nobody reads, or the takedown was for malware, which Google does not announce to the publisher by email. Check the Developer Dashboard first; the item page shows the status and the policy involved. If the account itself was compromised, secure it before you appeal.
How long does a Chrome Web Store appeal take?
Google says it may take up to three days to get a reply through support. After an appeal is accepted or a fixed version is approved, the item goes back through the normal publishing flow, which can add review time on top.
Will users lose my extension if it is taken down?
Not straight away. After a standard policy takedown, existing users keep the extension. If the takedown stays unresolved for weeks, Chrome disables it, and users can re-enable it. Malware takedowns are different: the extension is disabled everywhere and cannot be turned back on.
Can I republish under a new ID after a takedown?
It is not a route Google documents, and it throws away everything the listing has earned: your users, ratings and reviews all stay with the original ID. Fix the issue or appeal on the original item instead.
My extension was Manifest V2. Can I get it back?
Yes, but only as a Manifest V3 version. Google removed all remaining Manifest V2 items from the store on August 31, 2026, and there is nothing to appeal. Migrate, test, and publish the new version on the same item.
How do I know if an extension I depend on was removed?
Check the public update service once a day for its ID. A served item returns a download URL; a removed one does not. The listing page is not a reliable signal, because a removed item's page currently loads with a normal HTTP status.
Summary
A Chrome extension removed from the Chrome Web Store is usually a fixable problem with a deadline. Confirm the removal in the Developer Dashboard, identify which of the five kinds it is, then fix and resubmit or write a short, specific appeal. Tell your users what is happening on your own site. Then close the gap for next time: poll fetchStatus for warnings every day, check the update service for anything you depend on, and track the listing numbers so you can see what the outage cost and when users come back.
Image credits
- Cover photo: Empty wooden bookshelf against a concrete wall by Nilo Velez on the WordPress Photo Directory, CC0.


