Everything your <head> declares, checked

Paste a URL: every tag your head declares, fetched and verified rather than pattern-matched, then graded against a rubric published on the page.

Free, no signup, nothing stored. Or read one first: this site’s own graded report.

Every check, and the line of your head it reads

<svg → icons>Missing icons rather than broken ones? The favicon generator turns one SVG, PNG, text or emoji into every icon file and the markup — output that passes the checker above exactly as generated.

Why headlint

measured, not counted
Title and description truncation is measured in real pixels from the bundled font metrics, the way search results and social cards actually cut text — not by counting characters.
fetched, not parsed
Icons are decoded to their real pixels, hreflang alternates are fetched to confirm their return links, and robots.txt is evaluated with Google’s own matching rules.
dated specs
Every rule that depends on a platform’s behavior shows the date it was last checked against that platform’s documentation, so you can judge how fresh it is.
self-audited
Every page here passes every one of its own checks, and a test fails the build if one stops doing so — the report linked above is this site grading itself.

CLI & API

The same engines answer as JSON, keyless and free, for CI, scripts and editors:

npx @headlint/cli https://your-site.com/page
curl "https://headlint.com/api/validate?url=https://your-site.com/page"