ModHeader → VibeHeader

Move your headers to VibeHeader

If you only use request headers and URL filters, copy them over and you’re done. Use the detailed guide below only if you have multiple Profiles or a more complex setup.

No account required · Profiles stay in your browser · Open source

A simple VibeHeader setup with request headers and a request URL filter
If this is all you use, copy it over and you’re done.

The common case

Only use headers and URL filters? Just copy and paste.

There is no special migration process for a simple setup. Open both extensions, copy the values across, and test once.

1

Copy the headers

Paste each enabled request header name and value into VibeHeader.

2

Copy the URL filters

If you use Request URL Filters, add the same host, URL, wildcard, or regex expressions.

3

Reload and check

Reload your page and confirm the header on the actual request in DevTools → Network.

That’s it for a simple setup.

You do not need to export JSON, learn the share format, or rebuild anything else.

Add to Chrome
Using multiple Profiles or other ModHeader features?

Multiple Profiles or several URL-scoped setups: continue with the detailed guide below.

Response Headers, Cookies, CSP, Redirects, or broader filter types: these do not map directly today. Tell us what you need and we will evaluate the use case.

Detailed guide

Have multiple Profiles? Start with one.

Move the Profile you use most, verify it, then repeat the same pattern for the rest. The extra steps below are only for users with a larger setup.

Back up and inventory the current Profiles

Use ModHeader’s export action to download the Profiles as JSON. VibeHeader cannot import that file natively yet, but it gives you a reference for a manual migration—or an input you can redact before asking a coding agent to create VibeHeader import links.

Inventory only the enabled workflow first. Separate request headers and Request URL Filters from response rules, cookies, redirects, CSP, and broader filter types.
Optional advanced path Have many Profiles? Let a coding agent build the import links View option

A coding agent such as Codex or Claude Code can translate the supported parts of a redacted ModHeader export into VibeHeader’s documented share format. Each link carries one Profile; open it, review the preview, then import it with one click.

Redact before the agent sees the file.

Replace every header value—not only obvious tokens—with a placeholder such as __REPLACE_LOCALLY__. Also redact internal Profile names, hostnames, paths, or Filter expressions when they reveal sensitive infrastructure. VibeHeader’s server never receives the #c=… payload, but that privacy boundary does not protect data pasted into a coding agent or chat.

VibeHeader v2 payload

{
  "v": 2,
  "n": "Staging API",
  "h": [
    [
      "X-Environment",
      "__REPLACE_LOCALLY__"
    ],
    [
      "Authorization",
      "__REPLACE_LOCALLY__"
    ]
  ],
  "f": [
    [
      "api.example.com",
      true
    ],
    [
      "^https://api\\.example\\.com/v[12]/",
      true
    ]
  ]
}

Field map

v
Protocol version. Use 2.
n
Suggested Profile name.
h
Enabled request headers as [name, value].
f
Request Filters as [expression, enabled].

https://www.vibeheader.com/s#c=
+ URL-encoded JSON payload

Open the redacted example →
Copy the conversion prompt
I have attached a REDACTED ModHeader JSON export. Convert every compatible Profile into a VibeHeader v2 share link.

For each Profile, build exactly this payload:
{
  "v": 2,
  "n": "Profile name",
  "h": [["Header-Name", "value"]],
  "f": [["request filter expression", true]]
}

Rules:
- h: include enabled request headers only. Preserve names, values, order, and placeholders exactly.
- f: include supported Request URL filters only. Preserve each expression and enabled boolean.
- Create one payload and one link per Profile.
- Build each link with:
  "https://www.vibeheader.com/s#c=" + encodeURIComponent(JSON.stringify(payload))
- Do not convert response headers, cookies, CSP, redirects, Exclude URL filters, tab or tab-domain filters, window filters, or resource-type filters.
- Do not guess or invent an equivalent for unsupported rules.
- Do not change or reconstruct any redacted value.

Output:
1. One complete VibeHeader link per compatible Profile.
2. A "Not converted" list naming every skipped rule and why it was skipped.
  1. Redact first. Replace values and sensitive internal names before attaching the export.
  2. Generate one link per Profile. Ask the agent to report—not guess—unsupported rules.
  3. Preview before importing. Confirm the Profile name, header names, placeholders, and Filters on /s.
  4. Restore locally. Import, pause the new Profile, replace placeholders inside VibeHeader, then enable and test it.

Recreate each project or environment as a Profile

Create names that make the active scope obvious—such as Local Debug, Staging API, or Checkout QA. Profiles keep their own headers and Request Filters, and more than one can be active at the same time.

Three VibeHeader Profiles with independent enabled states and header and filter counts
The selected Profile is editable; each Profile keeps its own active or paused state.

Copy the enabled request headers

Add each request header to its matching Profile and preserve the enabled state. Work from one Profile at a time so similarly named environments do not inherit the wrong token or flag.

X-Environmentstaging
X-Debugtrue

Sensitive value? Keep it local, avoid screenshots, and rotate it if it may have been exposed through an old extension or shared link.

Rebuild and test the Request URL scope

VibeHeader Filters match the target URL of each supported request—not simply the page in the address bar. Choose the simplest expression that describes the intended traffic, then test a real API or asset URL before relying on it.

Host or URL Use a direct host or URL when the scope is narrow and predictable.
Wildcard or regex Use pattern matching for route families or more precise paths.
Multiple Filters Enabled Filters use OR logic: any match activates the Profile for that request.
A VibeHeader regular expression matching an API request in the built-in URL tester
Test the exact request URL and look for a matched result before leaving the editor.

Share the finished Profile—not a list of setup steps

A VibeHeader link can include one Profile’s suggested name, enabled valid headers, and valid Request Filters. The recipient previews the setup before importing it as a new Profile.

A shared VibeHeader Staging Profile ready to preview and import
The payload stays in the URL fragment and is not sent to the server. The full link still contains the configuration, so use a trusted channel.

Verify the request, then test the boundary

1

Confirm the intended Profile, header rows, and Filters are enabled.

2

Reload the target page and open DevTools → Network.

3

Select the actual API or asset request and inspect Request Headers.

4

Visit a non-matching URL and confirm the sensitive header is absent.

Do not stop at a positive match.A negative test catches filters that are broader than the original ModHeader scope.

Remove ModHeader only after the checklist passes

Keep ModHeader until every supported Profile has passed both positive and negative tests. If you used the version Google flagged as malware (v7.0.18), follow the cleanup and self-check guide to remove leftover storage and rotate secrets that may have been exposed.

Help shape migration support

Something did not map cleanly?

Tell us which ModHeader rule, filter, or workflow is blocking your move. We will review the use case and evaluate whether it should be supported in VibeHeader.

Submit migration feedback

FAQ

Questions that come up during migration

Can VibeHeader import a ModHeader JSON export?

There is no native ModHeader JSON importer today. You can migrate manually, or give a redacted export to a coding agent and ask it to generate VibeHeader v2 share links. VibeHeader does not receive the export or the URL fragment, but the coding agent can read anything you provide to it, so redact header values, internal URLs, and sensitive names first.

Does a Request Filter match the page URL?

It matches each supported request’s target URL, which can differ from the URL in the address bar. Use the built-in URL tester with the exact API or asset URL you expect to receive the header.

Can more than one VibeHeader Profile be active?

Yes. Profiles can be enabled independently, so a local debugging Profile and a staging API Profile can run at the same time.

What should I do with rules that do not map to VibeHeader?

Keep the existing rule in a tool that supports it, and submit your workflow through the migration feedback form. We will review the use case and evaluate whether it belongs on the VibeHeader roadmap.

Does a VibeHeader share link upload my Profile?

The Profile payload is stored after the # in the URL fragment, which browsers do not send to the VibeHeader server. The complete link still contains the configuration, so send it only through a trusted channel.

Ready to move one Profile?

Start with the workflow you use today

Install VibeHeader, rebuild one Profile, test its target request, and use that verified setup as the pattern for the rest.