How to Modify HTTP Headers in Chrome

Three practical methods for request headers, plus the right way to test response headers—without confusing what Chrome DevTools can and cannot do.

Quick answer: use an MV3 extension for repeatable page requests, fetch() for a single API call, DevTools Network conditions for User-Agent testing, and Local Overrides for response headers.

VibeHeader request header editor and client-side sharing workflow

Choose the right method

GoalBest methodPersists after reload?Main limitation
Change request headers on normal page trafficMV3 header extensionYes, until paused or removedExtension permissions and browser restrictions still apply
Send one test API request with a custom headerConsole fetch()NoCORS and forbidden-header rules still apply
Test a different User-AgentDevTools Network conditionsWhile the override is activeDesigned for User-Agent, not arbitrary request headers
Prototype a response-header changeDevTools Local OverridesLocally, while Overrides are enabledChanges only your local response, not the server

Method 1 — Modify request headers with an MV3 extension

This is the practical route when a page or application must repeatedly send the same custom request header. The example below uses VibeHeader, a focused Manifest V3 request-header editor.

Step 1: Install and open the extension

Install VibeHeader from the Chrome Web Store, pin it if you want quick access, and open the popup.

Step 2: Add a request header

Enter the header name and value. Safe development examples include:

X-Debug: true
X-Environment: staging
X-Test-Variant: checkout-v2

Use a real Authorization or API-key value only when necessary. Keep credentials short-lived, never publish them, and remove the entry after testing.

Step 3: Enable and reload

Make sure the configuration is active, then reload the target page. Existing requests in the Network log do not change retroactively; Chrome must send a new request.

Step 4: Verify the outgoing request

  1. Open Chrome DevTools with F12, Ctrl+Shift+I, or ++I.
  2. Select Network and reload the page.
  3. Click the document, fetch, or XHR request you want to inspect.
  4. Open Headers and find your value under Request headers.

If DevTools says “Provisional headers are shown,” disable the browser cache while DevTools is open and trigger the request again.

Add request headers and copy a VibeHeader share link
Add and test the request-header entries.
Preview a shared request-header configuration locally
A recipient can review the masked preview.
Apply a shared request-header configuration to VibeHeader
Apply the configuration to the installed extension.

Method 2 — Send one custom request with fetch()

For a single API test, open DevTools → Console and send the request explicitly:

fetch('https://api.example.com/status', {
  headers: {
    'X-Debug': 'true',
    'X-Test-Variant': 'checkout-v2'
  }
}).then(response => response.json())
  .then(console.log);

This changes only that fetch() call. It does not modify the page’s other requests, and cross-origin requests must still satisfy CORS. Some browser-controlled headers cannot be set from JavaScript.

Method 3 — Override User-Agent in Chrome DevTools

Chrome DevTools has a dedicated request-header override for User-Agent testing:

  1. Open DevTools and press Ctrl+Shift+P or +Shift+P.
  2. Run Show Network conditions.
  3. Clear Use browser default under User agent.
  4. Select or enter a User-Agent, then reload the page.

This changes how the browser identifies itself to the server; it does not turn DevTools into a general-purpose request-header editor. See Chrome’s official User-Agent override guide.

What about HTTP response headers?

Request and response headers travel in opposite directions. VibeHeader’s current interface focuses on request headers. For a local response-header experiment, Chrome DevTools can use Local Overrides:

  1. Open DevTools → Network and reload the page.
  2. Right-click a request and choose Override headers.
  3. Select a local folder when Chrome asks where to store overrides.
  4. Edit or add the response header, save, and reload.

This is useful for locally prototyping headers such as Content Security Policy or CORS responses, but it does not change the real server configuration. Follow Chrome’s official Local Overrides documentation.

Why the modified request header may not appear

Security checklist for custom headers

Need only one custom header? See the shorter custom request-header tutorial. Want the browser API details? Read the Manifest V3 header editor guide.

Frequently asked questions

Can Chrome DevTools modify arbitrary request headers?

Not for normal page traffic. DevTools supports User-Agent overrides and local response-header overrides. Use an MV3 extension when page requests need repeatable custom request headers.

Can changing a request header fix CORS?

No. CORS depends on browser behavior and server response headers. A new request header may trigger a preflight; it does not grant access to a cross-origin response.

How do I temporarily disable the changes?

Pause the active VibeHeader configuration, reload the page, and verify in Network that the custom value is no longer present.

Can I share a header configuration with a teammate?

Yes. VibeHeader encodes the configuration in a URL fragment for local preview and import. Treat the original link as sensitive whenever it contains credentials.