Nothing yet — inputs you run here are remembered on this device.
Nothing is fetched. The answer comes from the CSP Level 3 matching rules, applied in this tab — so it works for a policy you have not deployed yet.
Nothing yet — inputs you run here are remembered on this device.
Nothing is fetched. The answer comes from the CSP Level 3 matching rules, applied in this tab — so it works for a policy you have not deployed yet.
Updated 2026-10-24
Check a Content-Security-Policy header online for free. Paste the policy value, enter the URL the console said was refused, and SnapTools names the exact directive and source expression that decided it. Everything happens in your browser, so the policy never leaves your machine.
This answers a different question than a policy-strength grader like Google's CSP Evaluator: not "is this policy written defensively" but "does this specific URL match this specific policy right now", which is what you need mid-incident rather than while hardening a config in advance.
script-src *.example.com · https://example.com/a.js
Blocked: *.example.com needs at least one label before example.com.
default-src 'self' · https://app.example.com/a.js
Allowed: no script-src, so default-src governs, and 'self' matches.
script-src 'strict-dynamic' 'nonce-abc' https://cdn.example.com
Blocked: the host allowlist is ignored; only a nonce, hash or trusted-script insert works.
curl -X POST https://thesnaptools.com/api/v1/tools/csp-checker \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"policy":"script-src *.example.com \u00b7 https://example.com/a.js"}'