How scoring works

Every site starts at 100.
Findings subtract points.

No complicated formulas. No arbitrary weights. You start with a perfect score and lose points for real issues — the more severe, the more it costs.

Point deductions

Critical-25
  • AWS key found in JS bundle
  • Stripe live secret key exposed
  • Supabase service role key leaked
  • Hardcoded password in source
  • Exposed .env file (200 OK)
  • Git config publicly accessible
Warning-10
  • Source map publicly downloadable
  • HSTS header missing
  • Cookie missing Secure flag
  • Cookie missing HttpOnly flag
  • Internal staging URL in bundle
  • Admin route without auth redirect
Suggestion-2
  • Referrer-Policy header missing
  • Permissions-Policy not set
  • Stripe publishable key visible
  • Firebase API key in bundle
  • Cookie missing SameSite flag
  • X-Content-Type-Options absent

Grade bands

A
Clean90100

No meaningful issues. Ship it.

B
Good7589

Minor gaps. Easy wins available.

C
Fair6074

Fixable issues with real exposure.

D
Poor4059

Active risks. Fix before you scale.

F
Failing039

Critical exposure. Fix today.

Try it

Score simulator

Dial in findings to see how the grade changes.

Critical-25 pts each
0
Warning-10 pts each
0
Suggestion-2 pts each
0
A100/100

Clean

No meaningful issues. Ship it.

040607590100
FDCBA

The math

start = 100

score = start − (criticals × 25) − (warnings × 10) − (suggestions × 2)

floor = max(score, 0)

grade = A ≥ 90 · B ≥ 75 · C ≥ 60 · D ≥ 40 · F < 40

Four critical findings score a zero. One critical + two warnings = 55 (D). No findings = 100 (A).

See how your site scores.

Free. No account needed. Results in 15 seconds.

Scan your site →