yourwebsite.com · checked 40 seconds ago
One critical issue needs attention.
Health score
14 open issues
- Performance
- 87
- SEO
- 94
- Security
- 97
- Accessibility
- 91
What changed
Since yesterday
- Declined:Yesterday, 16:24
Performance dropped 12 points after deployment v2.4.1.
Average response time went from 215 ms to 299 ms across all regions, starting at 16:24 yesterday.
Evidence
TTFB rose from 240 ms to 410 ms on /checkout · 24h window
- Improved:Yesterday, 09:12
Security improved from 91 to 97 after the header fix.
Content-Security-Policy and Strict-Transport-Security are now set on every response.
Evidence
strict-transport-security: max-age=31536000 · content-security-policy: default-src 'self'
- Declined:Today, 07:41
3 new broken links appeared on /blog.
Two posts published yesterday link to /pricing-old, which was removed on 2 August.
Evidence
/blog/scaling-checkout → /pricing-old (404) · /blog/why-we-moved → /pricing-old (404)
- Unchanged:Rolling 90 days
Uptime held at 99.94% for the third month.
One incident in 90 days, lasting 47 minutes, on 12 June.
Evidence
90-day window · 129,600 checks · 77 failed
Open issues
14 openCritical · 1
Checkout returns a server error
Critical128 requests to /checkout returned a 500 in the last 24 hours, starting 14 minutes after deployment v2.4.1.
Next step
Roll back v2.4.1 or fix the payment handler it changed. This blocks every purchase.
/checkout128 occurrencesfirst seen 16:38
POST /checkout → 500 Internal Server Error · 128 occurrences · first at 16:38, last at 23:51
Warning · 8
The homepage ships 3.4 MB of images
WarningSix images load at full resolution before anything else can render, adding 1.8 s on a 4G connection.
Next step
Serve these as WebP at the size they are displayed. That removes about 3.0 MB.
/6 occurrencesfirst seen 3 days ago
hero-desktop.png 1.9 MB · gallery-01.jpg 612 KB · gallery-02.jpg 588 KB · 3 more
The SSL certificate expires in six days
WarningThe certificate for yourwebsite.com expires on 21 August. Visitors will see a browser warning after that.
Next step
Renew it, then check that auto-renewal is actually running.
yourwebsite.com1 occurrencefirst seen 6 days ago
CN=yourwebsite.com · issuer Let's Encrypt R3 · notAfter 2026-08-21T09:14:00Z
12 links point to pages that no longer exist
WarningNine of them sit in blog posts published this year, three in the main navigation footer.
Next step
Redirect the nine blog URLs to their new locations and remove the three dead footer links.
/blog12 occurrencesfirst seen 11 days ago
/blog/scaling-checkout → 404 · /blog/2025-review → 404 · /pricing-old → 404 · 9 more
Three scripts block the first render
WarningThey run before anything is painted and hold the page back by 640 ms on a mid-range phone.
Next step
Move all three to the end of the body or load them with defer. None is needed for the first paint.
/3 occurrencesfirst seen 8 days ago
analytics.js 34 KB · chat-widget.js 128 KB · slider.min.js 61 KB · all render-blocking in <head>
Static files are downloaded again on every visit
Warning41 images, scripts and stylesheets are served without a cache header, so returning visitors re-download 2.1 MB.
Next step
Set cache-control: public, max-age=31536000, immutable on everything under /assets/.
/assets/41 occurrencesfirst seen 16 days ago
cache-control missing on 41 responses under /assets/ · max-age not set
Two images load over plain HTTP
WarningBrowsers block them on an HTTPS page, so both appear as gaps in the article layout.
Next step
Request both over HTTPS, or host the two files yourself.
/blog/partners2 occurrencesfirst seen 5 days ago
http://cdn.partner-site.com/logo.png · http://cdn.partner-site.com/badge.png · blocked: mixed-content
19 images have no alternative text
WarningScreen reader users hear the file name instead of the content, and eleven of the images carry the only text in their section.
Next step
Describe what each image shows. Decorative ones take alt="" so they are skipped.
/19 occurrencesfirst seen 9 days ago
img[src='/assets/gallery-01.jpg'] alt missing · 18 more · 11 of them inside <a>
Four form fields have no label
WarningThe newsletter and contact forms rely on placeholder text, which disappears as soon as someone types.
Next step
Add a visible <label for> to each field. Placeholders are a hint, not a name.
/contact4 occurrencesfirst seen 9 days ago
input#email · input#name · input#company · textarea#message · no <label for> and no aria-label
Info · 5
Button text does not meet contrast requirements
InfoThe light grey label on the newsletter button reaches 2.8:1, below the 4.5:1 that WCAG AA requires.
Next step
Darken the label to at least #5f6368 to clear the threshold.
/4 occurrencesfirst seen 2 days ago
#9aa0a6 on #f5f6f7 → 2.81:1 · required 4.5:1 · 4 instances
23 pages have no meta description
InfoSearch results fall back to whatever text is nearest the top of the page, which is the cookie notice on eleven of them.
Next step
Write one sentence per page describing what it is for. Start with the eleven showing the cookie notice.
/blog23 occurrencesfirst seen 21 days ago
meta[name='description'] missing on 23 of 87 indexed pages
Seven pages share the same title
InfoAll seven are paginated blog listings titled "Blog", so search engines treat them as near-duplicates.
Next step
Add the page number to the title, for example "Blog — page 2".
/blog7 occurrencesfirst seen 21 days ago
<title>Blog</title> on /blog, /blog/page/2 … /blog/page/7
Referrer-Policy is not set
InfoThe full URL of your pages is sent to every external site a visitor clicks through to, including query strings.
Next step
Set referrer-policy: strict-origin-when-cross-origin explicitly.
yourwebsite.com1 occurrencefirst seen 16 days ago
referrer-policy header absent on all responses · default: strict-origin-when-cross-origin varies by browser
The blog answers more slowly than the rest of the site
InfoTime to first byte on /blog averages 384 ms against 214 ms elsewhere, and the gap widens on the paginated listings.
Next step
Cache the listing queries. The individual posts are already fast enough.
/blog7 occurrencesfirst seen 12 days ago
TTFB /blog 384 ms · /blog/page/4 511 ms · site median 214 ms · 24h
Response time · 24h
215 ms → 299 ms+39%
Response time rose 39% after deployment v2.4.1 landed at 16:24.
Detail · 24 hourly samples
- Current response
- 296 msat 23:00
- Median across the window
- 224 ms
- Fastest hour
- 189 msat 02:00
- Slowest hour
- 312 msat 18:00
- Baseline before v2.4.1
- 215 ms17 hours
- Hours above baseline
- 7 of 7since 16:24
- Uptime
- 99.94%over 90 days
- Last deployment
- v2.4.1at 16:24