Describe what you want your browser to do. It gets built, runs in front of you, and installs.
How it works
“Hide every Short on YouTube.” “Put the real price per 100g on every product.” “Stop LinkedIn autoplaying video.” One sentence, the way you would say it to a person.
The popup renders live and the content script runs against a real page in a sandbox. You see the thing working before anything is installed, and you can keep talking until it is right.
Load it into your own browser in two clicks — or send it to the Chrome Web Store with the icons, the manifest and the listing already filled in.
What you actually get back
Everything below is the real component, running the real code — the same preview, file view and package check you get inside the builder.
One — a working extension
Flip the switch. That is the rule that ships, running.
Nothing gets into your browser on trust. You watch the thing you asked to disappear actually disappear, and if it takes the wrong rows with it you say so — the same way you would tell a person who built it for you.
How the Perseverance rover picks a sample
NASA · 412K views
Shorts
12 videos
A honest review of the new keyboard
Cadence · 88K views
Making sourdough in a very small kitchen
Proof · 1.2M views
Shorts
9 videos
Why bridges hum in the wind
Practical · 640K views
No Shorts
2 shelves hidden on this page
A stand-in page — real sites refuse to be framed. The rule that removes those shelves is the one that ships.
Two — every file it is made of
Not another round of asking. Open the file and change the line.
The site changed its layout and one selector is stale. With most generators that means describing the problem and hoping. Here you open content.js, fix the selector, and the preview updates — because the file you are reading is the file that ships.
{
"manifest_version": 3,
"name": "Per 100g",
"version": "1.0.0",
"description": "Shows the real price per 100g beside every price.",
"permissions": ["activeTab", "storage"],
"host_permissions": ["*://*.tesco.com/*", "*://*.sainsburys.co.uk/*"],
"content_scripts": [
{
"matches": ["*://*.tesco.com/*", "*://*.sainsburys.co.uk/*"],
"js": ["content.js"],
"css": ["content.css"]
}
]
}Three — what it is allowed to do
Before you install, not in a permission dialog afterwards.
Extensions are the most invasive thing you can add to a browser, and Chrome asks you to approve a list of API names. Despicable writes out what each one actually allows, narrows the sites it runs on to the ones it needs, and flags anything that reads your history, cookies or every URL you open.
This extension asks for
No network access requested. Nothing leaves your browser.
Four — a package you can ship
Zipped, iconed, and checked against what Google will ask for.
The Chrome Web Store rejects submissions for things that have nothing to do with the code — a missing 128px icon, a description four characters over the limit, host permissions broader than the listing justifies. Those are checked here, so a rejection is not something you find out about a week later.
Store listing
✓ Name — 9/45 characters
✓ Description — 65/132 characters
✓ Icons — 16, 48 and 128px generated
✓ Host access — 1 site, narrowly scoped
Every panel above is the real component. Click anything.
Build your ownNothing is hidden
An extension can see the pages you visit, so a black box is not an acceptable answer. Every file is open in the editor, every permission the manifest asks for is listed in plain English, and anything unusual is flagged before you install it.
Edit a selector by hand and the preview follows. Nothing is generated that you cannot change yourself.
This extension asks for
No network access requested. Nothing leaves your browser.
Surfaces
One chat that holds your whole extension — the manifest, the content script, the popup — and edits it in place rather than starting over.
The popup runs in a sandbox and the content script runs against a real page, so you see it work before it touches your browser.
No black box. Open manifest.json, edit a selector by hand, and the preview follows.
Every build is kept. Go back to the one that worked without asking for it again.
A store-ready package, or straight to the Chrome Web Store with your listing filled in.
Tell it the one thing that has annoyed you for years. It will be fixed in about a minute.
Get started