A real example report

This is an actual EngineeringScore report from a real scan, with the same categories, findings, and roadmap format you'll get for your own site.

Example report: a snapshot from a real scan, shown for illustration.

Preview of a full EngineeringScore report

Unlock your full report

The locked sections hold your highest-value findings: exposed secrets and security issues, and a prioritized, step-by-step plan to fix them. Your score already reflects every one of them, so what you see now is the real number. Unlocking reveals exactly what was found, where, and how to fix it.

  • Every finding in full, including the leaked-secrets and security detail
  • Your improvement roadmap with the exact steps to fix each issue
  • The detected tech stack and how your answers shaped the score

Unlock with a subscription or a one-off day pass.

See plans

Summary

Set up a staging environment first because its absence is the largest listed score deduction (-10) and changes currently lack a pre-production verification environment. The engineering health score is 61, calculated from a base of 100 with deductions for staging (-10), security (-9), monitoring (-6), accessibility (-5), runtime errors (-5), performance (-2), and SEO (-2). The most consequential findings are no staging environment, three cookies missing Secure, no monitoring, six console errors, and one serious accessibility issue involving a <blink> element.

Security

-9 pts

Security has issues and contributes -9 to the score. Three cookies (_ga_9Y966W6Q7W, _ga, and _ga_MQ7767QQQW) lack Secure, and the top fix is to mark them Secure so they are sent only over HTTPS; the same cookies also lack HttpOnly, and Permissions-Policy is missing.

Major

Secure cookies

3 cookies without Secure: _ga_9Y966W6Q7W, _ga, _ga_MQ7767QQQW

Learn →
Minor

Permissions-Policy

Permissions-Policy missing

Learn →
Minor

HttpOnly cookies

3 cookies without HttpOnly: _ga_9Y966W6Q7W, _ga, _ga_MQ7767QQQW

Learn →
What we verified (8)

HTTPS

Served over HTTPS

HSTS

HSTS enabled

Content-Security-Policy

CSP present

X-Content-Type-Options

X-Content-Type-Options present

Clickjacking protection

X-Frame-Options or frame-ancestors set

Referrer-Policy

Referrer-Policy present

Server version exposure

No server version exposed

Mixed content

No mixed content

Performance

-2 pts

Performance has issues and contributes -2 to the score, with a reported navigation time of 2.6s. Investigate server response, render-blocking resources, and large assets to reduce load time.

Minor

Load time

2.6s

Learn →
What we verified (6)

Page weight

0.7 MB

Request count

36 requests

Image sizes

0 images over 300KB

Text compression

Text assets compressed

Static caching

Static assets carry cache-control

Render-blocking resources

4 render-blocking resources

SEO

-2 pts

SEO has issues and contributes -2 to the score because a canonical link is missing. Add a canonical link pointing to the preferred URL to reduce duplicate-content ambiguity.

Minor

Canonical link

Canonical link missing

Learn →
What we verified (10)

Page title

Present: "Internet for people, not profit — Mozilla Global" (48 chars)

Title length

Title is 48 chars (ideal 10–65)

Meta description

Present (134 chars)

Description length

Description is 134 chars (ideal 50–160)

Single H1

Exactly one H1

Viewport

Viewport meta present

Indexable

Indexable

Lang attribute

Present (en)

Open Graph tags

Open Graph tags present

Favicon

Favicon present

Accessibility

-5 pts

Accessibility has issues and contributes -5 to the score because one <blink> element was detected with serious impact. Remove or replace the <blink> element with an accessible alternative.

Major

Ensure <blink> elements are not used

Ensure <blink> elements are not used (1 element)

Learn →
What we verified (2)

Document language

Present (en)

Image alt text

All 12 images have alt text

Runtime Errors

-5 pts

Runtime Errors has issues and contributes -5 to the score, with 6 console errors. Resolve the CSP configuration warnings and the blocked connection to stats.g.doubleclick.net so browser behavior is clean and observable.

Major

Console errors

6 console errors

Learn →
What we verified (2)

Uncaught JS errors

No uncaught errors

Failed requests

No failed requests

Best Practices

Partly checked

Best Practices has no failed checks, but the HTTP→HTTPS redirect could not be verified for this scan. Nothing here counts against the score, but that one check is unresolved rather than confirmed.

Couldn't be checked (1)

Not checked

HTTP→HTTPS redirect

Could not determine whether HTTP requests redirect to HTTPS.

What we verified (3)

Doctype

Doctype present

Charset declaration

Charset present

Responsive viewport

Viewport present

Detected technologies

Analytics

Google Analytics

Tag Manager

Google Tag Manager

CDN & Hosting

Fastly

Your improvement roadmap

A prioritized plan for where to focus next.

Do next 4

Mark cookies as Secure

Small

Add the Secure attribute to all cookies so they are only ever sent over HTTPS.

Show details

Add the Secure attribute to the three identified cookies so they are sent only over HTTPS, addressing the security finding with a -9 deduction.

Why it matters

Cookies without the Secure attribute can be sent over an unencrypted connection, letting anyone on the same network intercept session tokens and impersonate the user.

How to fix

  1. 1. Add the Secure attribute to every cookie the app sets.
  2. 2. Confirm the site is fully served over HTTPS first.
Learn how to fix this →

Add uptime monitoring & alerting

Small

Set up monitoring that alerts you when the site is down or erroring.

Show details

Implement uptime and error monitoring with alerting so the team can detect site downtime or errors, addressing the -6 monitoring deduction.

Why it matters

Without uptime monitoring, outages and errors are usually discovered by customers complaining rather than by the team, which extends downtime and erodes trust.

How to fix

  1. 1. Set up an uptime/monitoring service (e.g. UptimeRobot, Pingdom, Better Uptime) against key URLs.
  2. 2. Configure alerts (email/SMS/Slack) for downtime and error spikes.
Learn how to fix this →

Fix console errors

Medium

Investigate and resolve the JavaScript errors logged to the browser console.

Show details

Why it matters

Console errors often signal broken functionality (failed API calls, broken integrations) that users experience as things silently not working, even if the page still loads.

How to fix

  1. 1. Open devtools and reproduce the errors.
  2. 2. Trace each one to its source and fix the underlying bug or missing dependency.
  3. 3. Re-test after the fix to confirm the console is clean.
Learn how to fix this →

Set up a staging environment

Medium

Add a staging/test environment so changes can be verified before they reach production.

Show details

Set up a staging environment so changes can be validated before production, addressing the largest listed deduction (-10).

Why it matters

Without a staging environment, every change is tested for the first time in production, turning routine deploys into high-risk events that can take the live site down.

How to fix

  1. 1. Stand up a staging environment that mirrors production configuration.
  2. 2. Route all deploys through staging before promoting to production.
  3. 3. Add a lightweight checklist or smoke test to run on staging.
Learn how to fix this →

Later 4

Add a Permissions-Policy header

Small

Set a Permissions-Policy header to restrict access to sensitive browser features (camera, mic, geolocation).

Show details

Why it matters

Without a Permissions-Policy, any script running on the page, including third-party scripts and ads, can request access to the camera, microphone, or location, widening the damage a compromised script can do.

How to fix

  1. 1. Decide which browser features the site actually needs.
  2. 2. Add a Permissions-Policy header disabling the rest (camera=(), microphone=(), geolocation=(), etc.).
  3. 3. Re-test any embedded widgets that rely on these features.
Learn how to fix this →

Mark cookies as HttpOnly

Small

Add the HttpOnly attribute to cookies that do not need JavaScript access, reducing XSS exposure.

Show details

Why it matters

Cookies without HttpOnly are readable by any JavaScript on the page, so a single XSS bug is enough for an attacker to steal session cookies and take over accounts.

How to fix

  1. 1. Add the HttpOnly attribute to session and authentication cookies.
  2. 2. Only omit it for cookies a legitimate client-side script genuinely needs to read.
Learn how to fix this →

Add a canonical link

Small

Add a <link rel="canonical"> tag pointing at the preferred URL to avoid duplicate-content issues.

Show details

Why it matters

Without a canonical tag, search engines can split ranking signals across near-duplicate URLs (with tracking params, trailing slashes, etc.), diluting the page's authority.

How to fix

  1. 1. Add <link rel="canonical" href="..."> pointing to the preferred URL.
  2. 2. Make sure the canonical URL matches the one you actually want indexed.
Learn how to fix this →

Speed up page load time

Larger effort

Investigate slow server response, render-blocking resources, and large assets to bring navigation time down.

Show details

Why it matters

Slow page loads are one of the strongest predictors of visitors leaving before the page even finishes loading, directly costing traffic and conversions.

How to fix

  1. 1. Profile server response time (TTFB) and fix slow backend queries or endpoints.
  2. 2. Eliminate render-blocking CSS/JS in the critical rendering path.
  3. 3. Reduce and defer large assets that delay the largest contentful paint.
Learn how to fix this →

Ready to see where you stand?

Scan your site and get your Engineering Score with a prioritized roadmap in under a minute, no signup required.

Scan your site