Change HTTP headers in your browser

Profiles for request and response headers in Chrome and Edge. Free, open source, and it can't send your data anywhere.

The Headerwise popup: a Staging profile with an X-Env header, a hidden Authorization token and a CORS response header, and a summary of what changed on the current tab.

It can't send your data. The browser won't let it.

ModHeader was removed from the Chrome and Edge stores in July 2026 after a hidden domain collector was found in it. Headerwise is built so that can't happen, and you can check it yourself.

"content_security_policy": {
  "extension_pages": "default-src 'self'; img-src 'self' data:; connect-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'"
}

No network accessThis line in the manifest covers every page of the extension and its background worker. A test checks it in a real browser on every change.

Never reads your pagesChrome applies the header rules itself through declarativeNetRequest. Headerwise never sees page content or request bodies.

No account, no analyticsYour profiles stay in your browser's local storage. Nothing is synced to a server, because there is no server.

Open codeRead it, build it, and compare it with what the store ships. Site access is asked for only when you click "Allow".

The Move from ModHeader page: copy the folder path, pick the folder, and import four profiles found in it.

Coming from ModHeader? Bring your profiles.

If your browser turned ModHeader off, its Export button went with it. Your profiles are still on your disk. Pick ModHeader's folder and Headerwise reads them right in the page. Nothing is uploaded.

What it does

See what changed on this tab, and why not

Open the popup to see which profile changed how many requests on the current page, or which filter kept another one off. The Network panel in DevTools may not show these changes; this does.

On this tab: Staging changed 5 requests, QA user 42 changed 3 requests, API debug only applies to api.example.com, Mobile Safari is turned off.

Paste a request from DevTools

Copy as cURL, fetch or PowerShell, paste, and tick the headers you want. Tokens and cookies show as dots.

A pasted cURL command turned into a list of headers to add, with the token and cookie values hidden.

Only where you need it

Limit a profile to some URLs, to requests made by some sites, to fetch calls or POSTs, or to a single tab.

Filters for a profile: only from some sites, only fetch and XHR requests, only GET and POST.

And the small things

The parts you reach for every day, without a paid tier in the way.

Unlimited profiles Redirects On for an hour, then off Open in a tab Set, append, remove CORS and CSP presets Mobile User-Agent {{uuid}} and {{timestamp}} Hidden secrets Export to JSON Keyboard shortcuts Undo Dark theme

Why not just DevTools?

DevTools is the right tool for looking at headers. For changing them day to day, it falls short.

What you needDevToolsHeaderwise
Add request headers like AuthorizationOnly User-Agent and languageAny header
Change response headersWith local overrides, per tabYes
Works with DevTools closedNoYes
Every tab, after a restartNoYes, until you pause it
Profiles to switch betweenNoYes

They work well together: copy a request from the Network panel and paste it into Headerwise.

And Postman?

Postman is an API client: it sends its own requests, outside the browser. Headerwise changes the requests your site sends, inside the browser. Most people use both.

Use Postman to
  • test an endpoint on its own
  • write checks on responses and run them in CI
  • share collections and API docs with a team
Use Headerwise to
  • click through your real app as user 42, or against staging
  • check CORS, CSP, iframes and redirects, which only exist in a browser
  • switch in one click, with no account and nothing synced

Questions

Is it really free?

Yes, with no limits. If paid features come later, they will be new things such as team policies. Nothing that is free now will move behind a paywall.

Why does it ask for access to all sites?

Chrome only lets an extension change headers on sites it has access to. Headerwise asks only when you click "Allow on all sites", and you can take it back in the browser's extension settings at any time.

How can I tell it sends nothing?

The manifest blocks network access for the whole extension, so the browser refuses any request it might try. The code is on GitHub, and your profiles live in the browser's local storage.

Why don't I see the changed headers in DevTools?

The browser applies these changes after DevTools records the request, so the Network panel can show the original headers. Open the Headerwise popup instead: "On this tab" shows what was changed.

Which browsers does it work in?

Chrome and Edge are tested on every change. Install it from the Chrome Web Store in any of them: Edge asks to "Allow extensions from other stores" the first time. Brave and Vivaldi work the same way. Firefox is planned.

How do I move from ModHeader?

Click "Move from ModHeader" in the popup. It shows the folder to pick for your browser and reads it in the page. If you have an exported JSON file, use "Import JSON" instead.

Does it work in Selenium, Playwright or Puppeteer?

Yes. A separate build has a fixed id, and your test sets headers by opening one URL, the way ModHeader's test packages did. Setup and examples, checked in CI with all three tools.

Install Headerwise

Free, no account. Takes a few seconds.

Edge, Brave and Vivaldi install it from the Chrome Web Store too. In Edge, click "Allow extensions from other stores" when asked.