1. Home
  2. Developer tools
  3. COOP and COEP Header Generator

COOP and COEP Header Generator

WebAssembly threads and SharedArrayBuffer need cross-origin isolation. Get the headers right and know what they break.

Free, no sign-up. Runs in your browser: nothing is uploaded.

How to use COOP and COEP Header Generator

  1. Choose the opener, embedder and resource policies.
  2. Read the isolation result and the warnings.
  3. Copy the headers.

Features

  • COOP, COEP and CORP options
  • Tells you if the page will be cross-origin isolated
  • Explains what each choice breaks
  • Report-Only variants
  • Server snippets
  • Notes on credentialless support

Supported formats

You get

  • Headers
  • Isolation verdict

Private by design

Everything you enter is processed by your browser on this device. Nothing is sent to openWorkstand or anyone else, so the COOP and COEP Header Generator is safe for private and work data. After you have used it once while online, it also works without an internet connection. How local processing works

Good to know

  • It cannot detect which of your resources will be blocked.
  • COEP credentialless is not supported by every browser.

Guide

Cross-origin isolation with COOP, COEP and CORP headers

After the Spectre processor flaws were disclosed in 2018, browsers restricted the features that make timing attacks practical. Shared memory between threads and high-resolution timers, which WebAssembly with threads, in-browser video tools and some games need, are available only to pages that are cross-origin isolated. Isolation places a page in its own process group, away from other sites’ windows and data. Getting there takes two response headers, plus cooperation from every resource the page embeds, and this page helps you set and understand them.

The three headers

Cross-Origin-Opener-Policy (COOP) controls the relationship with windows opened across origins. With same-origin, a cross-origin page can no longer hold a reference to your window, and window.opener is null. same-origin-allow-popups keeps popups you open working but does not isolate the page. Cross-Origin-Embedder-Policy (COEP) controls what your page may embed: with require-corp every cross-origin subresource must opt in. Cross-Origin-Resource-Policy (CORP) is the opt-in a resource sends, with values same-origin, same-site and cross-origin.

A worked example

Press “Sample: full cross-origin isolation”. The page sets Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp, and lists three notes. Medium: COOP same-origin cuts the link to cross-origin popups, so sign-in flows using OAuth popups and payment windows may break. Medium: COEP require-corp blocks resources that do not opt in, because every cross-origin image, script, font or iframe must send Cross-Origin-Resource-Policy: cross-origin or be loaded with CORS, so third-party widgets without those headers stop loading. Good: the page becomes cross-origin isolated, self.crossOriginIsolated is true, and SharedArrayBuffer, precise timers and memory measurement become available.

The cost of isolation

Everything on the page must cooperate. Images from a CDN need CORP or CORS headers, third-party iframes such as maps and videos must be isolated-friendly, and analytics scripts may fail. Popup-based login breaks under COOP same-origin, so use redirect flows or same-origin-allow-popups on the page that opens popups. List your embeds before you start, and ask vendors which headers they send.

Credentialless

COEP credentialless is a gentler mode: cross-origin no-CORS requests are sent without cookies, so most public resources load without opting in. It reaches the same isolation. It is newer and not supported by every browser, so test in the ones your users have.

Deploying safely

Use the Report-Only variants first: Cross-Origin-Embedder-Policy-Report-Only and its COOP counterpart log what would be blocked without blocking it. Collect the reports, fix or replace the offending resources, then switch to enforcing headers. The headers must be on the main document response, not only on the scripts.

Limits

The page cannot crawl your site to say which resources will be blocked, so you need the browser console and reports. Support differs between browsers and versions. Isolation is one layer: it does not replace a Content-Security-Policy or good input handling.

A rollout plan

Begin by listing every cross-origin resource the main page loads: fonts, images, scripts, frames and API calls. Ask each provider whether it sends Cross-Origin-Resource-Policy or allows CORS, and replace those that do not. Deploy the Report-Only headers for a week of normal traffic, read the reports and fix what they show. Then enforce COOP and COEP together on the document that needs shared memory, and test the sign-in and payment flows again, since popups are the first thing to break. Keep the old headers ready so that you can roll back quickly if a third-party widget fails.

Checked against the current version of the COOP and COEP Header Generator on .

Frequently asked questions

How can I check that isolation is active?

Open the browser console on the page and type self.crossOriginIsolated. It returns true only when both headers are in force on the top-level document and every embedded resource complies.

Do I need isolation for my website?

Only if you use features that require it, such as SharedArrayBuffer for WebAssembly threads or precise memory measurement. A normal content site gains little and risks breaking embeds and sign-in popups.

Why does my pop-up login stop working with COOP same-origin?

Same-origin severs the link between windows (window.opener), which some sign-in and payment flows rely on. Use same-origin-allow-popups or a redirect flow.

What does COEP require-corp demand of other sites’ files?

Every cross-origin resource must opt in with a Cross-Origin-Resource-Policy header or be loaded with CORS, or the browser blocks it.

Keep working with the result

openWorkstand also includes a free workspace with documents, spreadsheets, tasks, projects and a calendar that save to a folder on your computer.