Referrer-Policy header values, compared (tested in Chrome)

Referrer-Policy controls how much of the current URL goes out in the Referer header. We measured every value in Chrome on a page whose URL held ?secret=abc.

1. What Chrome sent

Page: http://localhost:8981/page?secret=abc. fetch() and a normal link click gave the same result for every value.

Referrer-PolicySame originOther origin
(header not set)Full URLOrigin only (http://localhost:8981/)
strict-origin-when-cross-originFull URLOrigin only
origin-when-cross-originFull URLOrigin only
same-originFull URLNone
originOrigin onlyOrigin only
strict-originOrigin onlyOrigin only
no-referrerNoneNone
no-referrer-when-downgradeFull URLFull URL incl. ?secret=abc
unsafe-urlFull URLFull URL incl. ?secret=abc

The no-header row matches strict-origin-when-cross-origin: that is Chrome's default, so other sites never see your paths or query strings unless you opt in with no-referrer-when-downgrade or unsafe-url. Those two are the values to avoid when URLs carry tokens, emails or search terms.

2. HTTPS page linking to HTTP

The strict- values and no-referrer-when-downgrade send nothing when an HTTPS page requests an HTTP URL; origin, origin-when-cross-origin and unsafe-url still send. (Spec behaviour; our test servers were both HTTP.)

3. Meta tag vs header

<meta name="referrer" content="no-referrer"> alone removed the Referer everywhere. With the header set to unsafe-url and that meta tag on the same page, Chrome sent no Referer: the meta tag, read later, won.

4. Setting it

# nginx (server block; 'always' also covers error pages)
add_header Referrer-Policy strict-origin-when-cross-origin always;

# Apache (mod_headers)
Header always set Referrer-Policy "strict-origin-when-cross-origin"

Setting the default explicitly keeps older browsers and security scanners happy. Use same-origin or no-referrer for pages whose URLs are private. As with every nginx header, a nested location with its own add_header drops it (measured here with HSTS). Verify with curl -sI https://your-site/ | grep -i referrer-policy.

Frequently asked questions

What is the default Referrer-Policy?

strict-origin-when-cross-origin. In our Chrome test a page with no header behaved exactly like it: full URL to the same origin, origin only to other sites.

Which Referrer-Policy leaks the query string to other sites?

no-referrer-when-downgrade and unsafe-url. Both sent the full URL including ?secret=abc to a different origin in our test.

Does the meta referrer tag override the header?

In our test, yes: header unsafe-url plus meta no-referrer sent no Referer at all.

Is it Referer or Referrer?

The request header is spelled Referer (a historic typo); the policy header is Referrer-Policy.

Written with AI assistance. Measured on 2026-10-01 in Chromium 153: a page at localhost:8981/page?secret=abc sent each Referrer-Policy value, then fetch() and a link click went to the same origin and to a different origin (127.0.0.1:8982), and a local server logged the Referer it received. Both origins were plain HTTP on this machine, so the HTTPS-to-HTTP downgrade rows are from the spec, not this test. PlainHeaders is our extension; the other methods are free.