Site

Every layer Canopy grades, run over one domain at once, rolled into a single grade — with the fixes ranked.

Try: github.com · example.com

B84/100

stripe.com

11 layers, one weighted grade · how it's weighted

Monitor this site nightly → one click enrols every layer above, so trends, the weekly digest and client reports start filling in.

How this grade is weighted

Security headers 20% · CSP deep-dive 10% · Cookie security 5% · AI readiness 5% · PWA installability 5% · Privacy & trackers 5% · Email security 10% · DNS posture 10% · SEO & meta 10% · Performance 10% · Accessibility 10%. Link health is scanned separately — its live probes are too request-hungry for the composite.

Fix these first

9 to fix · 19 to review, across all eleven layers — most important first.

  1. Fix

    Cookie security Security headers →

    Set each cookie with: Secure; HttpOnly; SameSite=Lax (or Strict)

  2. Fix

    Text compression Performance →

    Enable gzip or brotli for text responses — most servers and CDNs are one directive away.

  3. Fix

    Script count Performance →

    Audit and bundle; every tag is parse/compile/execute time on the main thread.

  4. Fix

    Web App Manifest linked PWA installability →

    Add <link rel="manifest" href="/manifest.webmanifest"> to the <head>.

  5. Fix

    Manifest loads and parses PWA installability →

    No manifest is linked, so there's nothing to load.

  6. Fix

    Install icons (192px & 512px) PWA installability →

    No valid manifest, so no icons for the installed app.

  7. Fix

    App name PWA installability →

    No valid manifest, so no app name to show on the install prompt.

  8. Fix

    App-like display mode PWA installability →

    No valid manifest, so no display mode.

  9. Fix

    start_url set PWA installability →

    No valid manifest, so no start_url.

  10. Warn

    Content-Security-Policy Security headers →

    Drop 'unsafe-inline'/'unsafe-eval'; use nonces or hashes for scripts.

  11. Warn

    Permissions-Policy Security headers →

    Permissions-Policy: geolocation=(), camera=(), microphone=()

  12. Warn

    Cache-Control sanity Security headers →

    Cache-Control: no-store (for dynamic/personalized pages) or an explicit public, max-age=… for truly static ones

+ 16 more in the layer reports below.

Share it: save a snapshot — a permanent link, and Canopy re-runs all eleven layers nightly from then on.

Canopy site grade badge Embed this badge

Markdown

[![Canopy site grade](https://canopystack.dev/badge?domain=stripe.com&type=site)](https://canopystack.dev/site?domain=stripe.com)
📋 Export as Markdown

Paste into a PR, issue, Slack, or client report — or download .md

Machine-readable: /api/site?domain=…