Chrome extension manifest generator
Build a Manifest V3 manifest.json for a Chrome or Firefox browser extension right here — no account needed. Pick the surfaces the browser opens (toolbar popup, options page, side panel, new tab, DevTools), tick permissions with each one's reason and install-time warning shown up front, and add content-script match patterns through a real match pattern validator. The JSON updates live and downloads ready to ship.
Extension
Surfaces
Where the browser opens your extension. The popup starts ticked because an extension with no surface at all can't be opened.
Permissions
Each one says what it's actually for — an install prompt is the most expensive text an extension ever shows a user, so only ask for what you need.
Content scripts
Match patterns for the pages your extension injects itself into. Patterns are validated, never repaired — one bad pattern makes the browser reject the whole extension, so an invalid one is refused here instead of shipped.
manifest.json
{
"manifest_version": 3,
"name": "Extension",
"version": "0.1.0",
"action": {
"default_popup": "src/popup.html"
},
"background": {
"service_worker": "src/background.ts",
"type": "module"
}
}
Generated with the free Nodlume manifest generator. JSON can't carry comments, so the file itself is clean — ready to drop into your extension as-is.
Match pattern validator
Check a single match pattern on its own. Worth doing before you ship: one invalid pattern in content_scripts makes the browser reject the entire extension, not just the row — which is why this page validates patterns and never silently repairs them.
Type a pattern to check it. The shape is scheme://host/path — the scheme is one of a closed set (* means http and https only), the host is *, a hostname, or *. followed by a hostname, and the path is required.
Permissions with their reasons
Every browser extension permission is described by what it lets you do, and the ones that cost an install warning — "Read your browsing history" for tabs — say so before you tick them. A permission picker that doesn't show why is how extensions end up over-asking.
Real MV3 spelling
Surfaces land under their actual manifest keys — action.default_popup, options_ui, side_panel — with a module service worker declared and host permissions derived from your content-script matches.
Validated, never repaired
Match patterns go through the real grammar the browser applies — schemes, host wildcards, required paths, <all_urls> — and overbroad grants get flagged, because they're the loudest install warning there is.
Scaffold the whole extension
In the Nodlume workspace this same vocabulary generates a complete Manifest V3 project, not just the manifest: views drawn on a visual structure canvas become React surfaces behind a hash router, with a background service worker, typed messaging, content-script stubs and a Vite build wired to @crxjs/vite-plugin.