Manifest V3 Validator
Paste a manifest.json and check common Chrome extension Manifest V3 configuration problems. Each finding names the field, explains the problem and suggests a fix.
Files are processed locally in your browser and are not uploaded.
Tool
A .json, .crx or .zip file. Processed locally.
Paste a manifest, or load a file above.
Waiting for a manifest.
Errors
Warnings
Passed checks
This checks common Manifest V3 configuration problems. It is not Google's complete internal validator — see what Manifest V3 is and theManifest Viewer for a plain read of any manifest.
How to use
- Paste manifest.json into the text area, or load a .json, .crx or .zip file.
- Select "Validate manifest".
- Work through the errors first, then the warnings. Every finding links to the relevant Chrome documentation where one exists.
How it works
This is an independent static checker for common, well-documented Manifest V3 configuration problems. It is not Google's internal validator, it does not run Chrome, and it cannot find runtime problems or load failures.
The manifest is parsed with JSON.parse — which never executes anything — then each documented rule is checked against the parsed value. Rules cover structure and types: a missing manifest_version, a name or version that is not a string, a version string that Chrome would reject, permissions arrays that hold non-strings, content script entries with no matches or nothing to inject, web_accessible_resources still using the Manifest V2 shape, and Manifest V2 keys such as browser_action left in the file.
Anything the checker is not confident about is either left out or reported as a warning with hedged wording. It does not try to be clever: guessing at rules produces false alarms, and a validator you cannot trust is worse than none.
Findings are grouped as errors, warnings and passed checks. An error means Chrome would reject the manifest or the feature would not work. A warning means something is unusual or possibly outdated. A passed check is a rule that was satisfied, so you know what was actually looked at.
Important limitations
- Not Google's validator. Chrome has its own load-time checks, and there are rules this tool does not implement. Treat a clean report as "nothing obvious is wrong", not "this extension is valid".
- Static only. It reads the manifest and nothing else — not your JavaScript, not your HTML, not whether the files a manifest references actually exist in the package.
- Manifest V2 manifests are reported as an error because this tool validates V3 specifically. Use the Manifest Viewer or the Inspector to read a V2 file.
- Extension-specific rules for the Chrome Web Store review process are not covered. Those change over time and are not a technical correctness question.
Privacy and security
This tool runs entirely in your browser. Manifests you paste or choose are read locally with the File API and never uploaded. No analytics are installed on this site, so nothing about your manifest is recorded anywhere.
Frequently asked questions
Is this Google's official manifest validator?
No. It is an independent checker written against published Chrome extension documentation. Google's own validation happens when Chrome loads an extension and during Web Store review, and this tool cannot see either.
Why did my version get rejected?
Chrome wants one to four dot-separated integers, each between 0 and 65535, with no leading zeros. So "1.0.0" and "2.10" are fine, while "v1.0.0", "1.0.0-beta" and "01.2" are not. The finding shows the value it found and a valid example.
What is the difference between an error and a warning?
An error is something Chrome will reject or a feature that will not work as written — a Manifest V2 background page in a V3 manifest, for example. A warning is unusual or potentially outdated but not necessarily broken. If you disagree with a warning, read the linked documentation; the checker errs towards not claiming certainty.
It says background is missing a service_worker. Why?
Manifest V3 background code must run in a service worker, not a background page. A manifest with "background": { "scripts": [...] } or { "page": "..." } describes a Manifest V2 extension and will not load as V3. Move the code into a service worker and declare "background": { "service_worker": "background.js" }.
Does a clean report mean my extension will be approved?
No. It means the manifest passed the configuration rules this tool checks. Store review looks at things a static check cannot see, including whether the extension does what it claims and whether its behaviour matches its description.
Related tools
Manifest Viewer
Read a manifest.json field by field, formatted and explained.
Runs locallyPermission Checker
Look up what each requested permission actually allows.
Runs locallyChrome Extension Inspector
Get a readable summary of what an extension declares and how it runs.
Runs locally