Support in current browsers

Checked against the current browser versions recorded in MDN browser data 8.1.5.

BrowserMinimumOutcomeReason
Chrome155WorksEvery required mapped BCD feature is available without a recorded qualification.
Edge154WorksEvery required mapped BCD feature is available without a recorded qualification.
Firefox157WorksEvery required mapped BCD feature is available without a recorded qualification.
Safari27WorksEvery required mapped BCD feature is available without a recorded qualification.
Chrome for Android155WorksEvery required mapped BCD feature is available without a recorded qualification.
Firefox for Android157WorksEvery required mapped BCD feature is available without a recorded qualification.
Safari on iOS27WorksEvery required mapped BCD feature is available without a recorded qualification.
Android WebView155WorksEvery required mapped BCD feature is available without a recorded qualification.
Samsung Internet30.0WorksEvery required mapped BCD feature is available without a recorded qualification.
The release trace

How support changed

Each segment groups recorded releases with the same result. Gaps between recorded versions are not filled in. This is support at each release, rather than the planner’s check of every release above a minimum.

Chrome

http.headers.Content-Security-Policy.strict-dynamic
  1. 1 – 5151 recorded releases
    Not supported
  2. 52 – 155103 recorded releases
    Works

Edge

http.headers.Content-Security-Policy.strict-dynamic
  1. 12 – 187 recorded releases
    Not supported
  2. 79 – 15475 recorded releases
    Works

Firefox

http.headers.Content-Security-Policy.strict-dynamic
  1. 1 – 5154 recorded releases
    Not supported
  2. 52 – 157106 recorded releases
    Works

Safari

http.headers.Content-Security-Policy.strict-dynamic
  1. 1 – 15.329 recorded releases
    Not supported
  2. 15.4 – 2732 recorded releases
    Works

Chrome for Android

http.headers.Content-Security-Policy.strict-dynamic
  1. 18 – 5128 recorded releases
    Not supported
  2. 52 – 155103 recorded releases
    Works

Firefox for Android

http.headers.Content-Security-Policy.strict-dynamic
  1. 4 – 5145 recorded releases
    Not supported
  2. 52 – 15796 recorded releases
    Works

Safari on iOS

http.headers.Content-Security-Policy.strict-dynamic
  1. 1 – 15.326 recorded releases
    Not supported
  2. 15.4 – 2732 recorded releases
    Works

Android WebView

http.headers.Content-Security-Policy.strict-dynamic
  1. 1 – 5123 recorded releases
    Not supported
  2. 52 – 155103 recorded releases
    Works

Samsung Internet

http.headers.Content-Security-Policy.strict-dynamic
  1. 1.0 – 5.412 recorded releases
    Not supported
  2. 6.0 – 30.040 recorded releases
    Works

BCD 8.1.5 · catalogue 2.3.0. Source corrections can change this trace without a new browser release.

A fixed result snapshot

What those browser runs reported

Reviewed 11 October 2026

These are published results from specific stable-labelled browser builds. They are separate from the compatibility calculation and from evidence about your application. File outcomes and subtest counts stay separate. OK describes a completed harness, which can still contain failing subtests; Pass and Fail can also describe tests without a harness.

Exact browser builds, systems and source revision
  • firefox 157.0 · linux 22.04 · stable
    Run 4877098740350976 · 2026-10-06T10:36:34.451Z to 2026-10-06T11:50:28.028Z
    cc74d2669f5de548e808779877d1d33339ec5115
  • safari 27.0 (22625.1.29.11.27) · mac 27.0 · stable
    Run 5164107446878208 · 2026-10-06T06:14:03.64Z to 2026-10-06T09:13:55.471Z
    cc74d2669f5de548e808779877d1d33339ec5115
  • chrome 154.0.8037.92 · linux 22.04 · stable
    Run 6218298311311360 · 2026-10-06T07:44:01.102Z to 2026-10-06T11:57:16.569Z
    cc74d2669f5de548e808779877d1d33339ec5115

“Stable” is the upstream run label. Complete runtime flags were not supplied by the summary API. These results do not cover every browser version, mobile platform or operating system.

CSP script-src

content-security-policy/script-src

90 test files retained from 90 returned search matches. Only this exact directory prefix is included. This is the returned result inventory, not a claim that every possible suite test ran.

Browser buildSubtests passed / reportedFile outcomes
firefox
157.0
182 / 21488 OK · 1 Error · 1 Timeout
safari
27.0 (22625.1.29.11.27)
177 / 21385 OK · 1 Error · 4 Timeout
chrome
154.0.8037.92
185 / 21488 OK · 2 Error
Read all 90 retained file results
Test filefirefoxsafarichrome
audioworklet-eval-blocked.https.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
audioworklet-trusted-types-eval-blocked.https.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
eval-allowed-in-report-only-mode-and-sends-report.htmlOK · 2/2 subtestsOK · 1/2 subtestsOK · 2/2 subtests
eval-allowed-in-report-only-mode.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
hash-always-converted-to-utf-8/iso-8859-1.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
hash-always-converted-to-utf-8/iso-8859-3.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
hash-always-converted-to-utf-8/iso-8859-7.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
hash-always-converted-to-utf-8/iso-8859-9.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
hash-always-converted-to-utf-8/utf-8-lone-surrogate.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
hash-always-converted-to-utf-8/utf-8.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
injected-inline-script-allowed.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
injected-inline-script-blocked.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
javascript-window-open-blocked.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
non-nonceable-elements.htmlOK · 10/10 subtestsOK · 7/10 subtestsOK · 10/10 subtests
nonce-enforce-blocked.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
nonce-with-trailing-characters-blocked.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-1_1.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
script-src-1_10_1.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-1_10.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-1_2_1.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-1_2.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
script-src-1_3.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-1_4_1.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
script-src-1_4_2.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-1_4.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
script-src-event-handler-on-inline-script.htmlOK · 4/4 subtestsOK · 4/4 subtestsOK · 4/4 subtests
script-src-multiple-policies-multiple-hashing-algorithms.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-multiple-policies-one-using-hashing-algorithms.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-overrides-default-src.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-report-only-policy-works-with-external-hash-policy.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-report-only-policy-works-with-hash-policy.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-sri_hash.sub.htmlOK · 12/12 subtestsOK · 12/12 subtestsOK · 12/12 subtests
script-src-strict_dynamic_and_unsafe_eval_eval.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_and_unsafe_eval_new_function.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_discard_source_expressions.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_double_policy_different_nonce.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-strict_dynamic_double_policy_honor_source_expressions.sub.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-strict_dynamic_double_policy_report_only.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_eval.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_hashes.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
script-src-strict_dynamic_in_img-src.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_javascript_uri.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_meta_tag.htmlOK · 4/4 subtestsOK · 4/4 subtestsOK · 4/4 subtests
script-src-strict_dynamic_modulepreload_parser_inserted_module.htmlOK · 2/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
script-src-strict_dynamic_new_function.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_non_parser_inserted_incorrect_nonce.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_non_parser_inserted_module.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
script-src-strict_dynamic_non_parser_inserted.htmlOK · 4/4 subtestsOK · 4/4 subtestsOK · 4/4 subtests
script-src-strict_dynamic_parser_inserted_correct_nonce.htmlOK · 8/8 subtestsOK · 8/8 subtestsOK · 8/8 subtests
script-src-strict_dynamic_parser_inserted_module_empty_hash.htmlOK · 1/1 subtestsOK · 0/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_parser_inserted_module.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
script-src-strict_dynamic_parser_inserted.htmlOK · 10/10 subtestsOK · 10/10 subtestsOK · 10/10 subtests
script-src-strict_dynamic_worker-importScripts.https.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
script-src-strict_dynamic_worker.https.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
script-src-trusted_types_eval_DedicatedWorker.htmlOK · 3/3 subtestsTimeout · 1/2 subtestsOK · 3/3 subtests
script-src-trusted_types_eval_with_report_only_require_trusted_types_eval.htmlOK · 4/4 subtestsOK · 4/4 subtestsOK · 4/4 subtests
script-src-trusted_types_eval_with_require_trusted_types_eval.htmlOK · 4/4 subtestsOK · 4/4 subtestsError · 3/4 subtests
script-src-trusted_types_eval_without_require_trusted_types_eval.htmlOK · 4/4 subtestsOK · 4/4 subtestsOK · 4/4 subtests
script-src-wildcards-disallowed.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
scripthash-allowed.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scripthash-base64url-converts-to-base64.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scripthash-basic-blocked-error-event.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scripthash-basic-blocked.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scripthash-case-insensitive.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scripthash-changed-1.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scripthash-changed-2.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scripthash-default-src.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scripthash-ignore-unsafeinline.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scripthash-unicode-normalization.sub.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
scriptnonce-allowed.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scriptnonce-and-scripthash.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scriptnonce-basic-blocked.sub.htmlOK · 0/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scriptnonce-changed-1.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scriptnonce-changed-2.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scriptnonce-ignore-unsafeinline.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scriptnonce-redirect.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
scriptnonce-specified-source.sub.htmlOK · 3/3 subtestsOK · 3/3 subtestsOK · 3/3 subtests
srcdoc-doesnt-bypass-script-src.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
tentative/script-url-allowed-by-hash.https.htmlOK · 4/28 subtestsOK · 4/28 subtestsOK · 6/28 subtests
tentative/script-url-blocked-report-contains-hash-dedicated-worker.https.htmlOK · 0/1 subtestsTimeout · 0/1 subtestsOK · 0/1 subtests
tentative/script-url-blocked-report-contains-hash-service-worker.https.htmlTimeout · 0/1 subtestsTimeout · 0/1 subtestsOK · 0/1 subtests
tentative/script-url-blocked-report-contains-hash-shared-worker.https.htmlOK · 0/1 subtestsTimeout · 0/1 subtestsOK · 0/1 subtests
tentative/script-url-blocked-report-contains-hash.https.htmlError · 0/1 subtestsError · 0/1 subtestsError · 0/1 subtests
tentative/url-hash-in-header-and-meta.https.htmlOK · 4/6 subtestsOK · 4/6 subtestsOK · 4/6 subtests
worker-data-set-timeout.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
worker-eval-blocked.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
worker-function-function-blocked.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
worker-importscripts.sub.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests
worker-script-src.sub.htmlOK · 1/1 subtestsOK · 1/1 subtestsOK · 1/1 subtests
worker-set-timeout.sub.htmlOK · 2/2 subtestsOK · 2/2 subtestsOK · 2/2 subtests

Pinned API queryTest source at the run revision

Source-response fingerprintSHA-256 4f8181d91982a3086fd0ace7b452d133b5d6293875513de8db5ed1e398b3b1dc

The digest identifies the complete downloaded directory response used for this projection, before file selection. It does not authenticate the runner or prove that the results are truthful.

What this feature can and cannot do

Helps protect against

  • Brittle host allowlists
  • Script injection through allowed origins

Does not guarantee

  • Compromise of an authorised script
  • Unsafe script loaders
  • Browsers that ignore the source expression

What you need before using it

  • CSP nonces or hashes
  • A tested fallback source list

Fallback to keep in place

Retain compatible host and scheme sources for browsers that do not implement strict-dynamic.