Securealy
Check · Launch hygiene · low · passive

No broken links on the home page

Internal links on the home page resolve.

Severity
low
Tier
Passive: runs on any URL
Category
Launch hygiene
Fix
Summary below; full runbook in the Fix Kit, Module 01: Ship it
Id
broken-links-home

What this means

Passing means every first-party link and asset on your home page answers with a success status. Failing means at least one returns a 4xx or 5xx. The home page is the one page every visitor and every crawler reads, so a dead link there is seen more than anywhere else.

How we test it

We parse the home page, collect each first-party href and src, and request each one, up to a fixed cap. Every address answering 2xx or 3xx passes. Any 4xx or 5xx fails, and the result lists the addresses. External links are not requested; we only test addresses on your own domain.

Why it matters

Dead links on page one lose trust and crawl budget. A visitor who clicks Pricing and lands on your 404 page assumes the rest is unfinished; a crawler that finds errors on the home page spends less of its budget on the pages behind it. The kit's sitemap rule is the same rule applied to every listed URL: each one returns 200 or it is fixed or removed.

The fix

Fix or remove each address the result lists, in the page template that emits it, and make sure the page it points at exists at that exact path, with the cleanUrls and trailingSlash settings in the kit's vercel.json deciding whether /pricing or /pricing/ is the served form. Confirm by requesting each one with curl -s -o /dev/null -w '%{http_code}\n' https://YOUR_DOMAIN/PATH, expected 200. The full runbook is in the Fix Kit, Module 01.

Prompt for your AI

Paste this into the coding agent that built the app. It reproduces the finding and stops before changing anything; the fix steps are in the kit.

Do not change anything. This is a verification pass.
Run: curl -s https://YOUR_DOMAIN/ | grep -oE '(href|src)="/[^"]*"' | sort -u and show me the list of first-party paths.
For each path, run: curl -s -o /dev/null -w '%{http_code} %{url_effective}\n' https://YOUR_DOMAIN/THAT_PATH and show me every line that is not 200.
For each failing path, tell me which template or component emits it and whether the target page exists in the repo under a slightly different path.
Show me the cleanUrls and trailingSlash values in vercel.json, or tell me the file has neither.
List what it would take to fix each one, and stop there.
Run the status loop again and show me only the lines that are not 200. Expected on a passing site: no lines.

Next

Grade your own URL

Every grade lists this check with its evidence for your site. Two free grades a day.