Browser security
Mozilla Observatory grade
Mozilla's web security observatory grade. Target: A+.
Healthy
grade B+ · 1 excluded
Checked 9/20/2026, 3:00:18 PM · Source: Scheduled probe
Mozilla web-security observatory grade. Score: 80. 11/12 tests passed. Target is A or above.
What this check means
A Mozilla-operated security observatory grades sites against a battery of HTTP-level security checks. Different methodology to the headers grade above; we track both as a defence in depth.
Documented exclusions (1)
1 finding type is deliberately not actioned here. Grouped by reason below — we publish them so the trade-offs and false-positive suppressions are visible and reviewable, not hidden.
Trade-offs · 1
Recommended setting would break legitimate functionality. We accept the finding instead.
content-security-policy
OWASP requires CSP without `unsafe-inline` or any `eval` family directive. Two intentional deviations: (1) `unsafe-inline` — Next.js's React hydration requires inline `<script>` tags; eliminating it needs a per-request nonce-based CSP threaded through every render path (substantial refactor that also has to coexist with our 6 third-party scripts: Cloudflare Insights, Sentry, Auth0, Google Ads, Microsoft Clarity, Google Analytics). (2) `wasm-unsafe-eval` — required in production for client-side PDF export (@react-pdf/renderer compiles a WASM font/layout module via WebAssembly.instantiate). This is the narrow modern directive that permits WASM compile/instantiate ONLY — it does NOT permit JS eval(), new Function(), or string-form setTimeout. Removing it breaks PDF export with a CompileError. The broad `unsafe-eval` remains absent from the production CSP.
Recent runs
| When | Result | Source | |
|---|---|---|---|
| 9/20/2026, 3:00:18 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 2:00:08 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 1:00:13 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 12:00:11 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 11:00:09 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 10:00:12 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 9:00:09 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 8:00:15 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 7:00:13 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 6:00:09 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 5:00:12 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 4:00:09 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 3:00:19 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 2:00:07 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 1:00:15 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/20/2026, 12:00:07 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 11:00:11 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 10:00:09 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 9:00:10 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 8:00:08 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 7:00:15 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 6:00:13 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 5:00:08 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 4:00:12 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 3:00:12 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 2:00:09 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 1:00:10 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 12:00:10 PM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 11:00:10 AM | grade B+ · 1 excluded | Scheduled probe | |
| 9/19/2026, 10:00:09 AM | grade B+ · 1 excluded | Scheduled probe |
Need additional detail (sanitised report, supporting evidence)? security@theartofcto.com