SEO Analyzer
Enter a URL and get a detailed on-page SEO report — titles, headings, canonical tags, Open Graph, structured data and links — checked entirely in your browser.
Fetched directly by your browser, then analyzed locally — this site is static and has no server, so it never sees the page or the result. Most sites block a direct fetch like this (a browser security rule); if that happens, paste the page’s HTML source below instead.
Processed locally in your browser. Your data never leaves your device.
About this SEO analyzer
Enter a URL and it is fetched directly by your browser and analyzed on the spot — titles, meta description, heading structure, canonical and robots tags, Open Graph and Twitter Card tags, JSON-LD structured data, image alt text, links, and a handful of technical checks (favicon, doctype, mixed content). If the site blocks the direct fetch (most do — see the FAQ), paste its HTML source instead and the same checks run against that.
How to use it
- Enter the page’s URL and click Analyze.
- If fetching fails, click “Or paste HTML source instead”, view the page’s source (Ctrl/Cmd+U in most browsers), copy it, and paste it in.
- Read the report: errors first, then warnings, then informational notes, then everything that already passed.
What it checks
- Meta & titles: title tag presence and length, meta description presence and length, language declaration, character encoding, viewport tag
- Headings: exactly one H1, no empty headings, no skipped heading levels
- Canonical & indexability: canonical tag presence and validity, robots meta tag (noindex/nofollow)
- Social sharing: Open Graph and Twitter Card tag completeness
- Structured data: every JSON-LD block is parsed and validated — invalid JSON, and missing @context/@type, are flagged
- Images: missing alt text
- Links: internal/external counts, generic anchor text (“click here”), empty links
- Technical: favicon, doctype, mixed content (http:// resources on an https page)
- Content & URL: a rough visible-word-count check, URL length/casing
Frequently asked questions
- Why can't it just fetch every URL directly?
- Browsers enforce the Same-Origin Policy: JavaScript on this page cannot read the response from a request to another site unless that site explicitly opts in with a CORS header. Almost no website sets that header on its HTML pages (it's conventionally used for APIs, not documents), so a direct fetch works for a minority of sites and fails for the rest. This is a deliberate browser security rule, not a bug here — when it fails, paste the page’s HTML source (View Source, then copy) and the exact same checks run against it.
- Does pasting HTML instead of fetching a URL change what gets checked?
- Almost nothing. Every check that only needs the page content (titles, headings, meta tags, structured data, images, links) runs identically either way. A handful of checks that need to know the actual URL (mixed-content detection, canonical-URL comparison, URL structure) are simply skipped when no URL is known — you can still type the URL into the field even if you end up pasting the HTML, and those checks will run against it.
- Why does it show what passed, not just what is wrong?
- Most linter-style tools here (JSON Validator, SQL Formatter) only report problems, since a clean result needs no explanation. An SEO report is different — people expect to see the full picture, including what's already right, the same way a real audit reads.
- Is a missing meta description or thin content always a real problem?
- No — several checks here are informational or soft warnings, not hard rules. A simple utility page can rank fine with less content than an article competing for informational search intent; a missing Twitter Card tag matters less if Open Graph tags are already present (Twitter/X falls back to those). Read the hint on each item: some are worth fixing immediately, others are just worth knowing about.
- Can this check things like backlinks, keyword rankings or site-wide broken links?
- No, and it never will as a browser-only tool. Backlink data and search rankings only exist inside large external indexes (what paid tools like Ahrefs or SEMrush actually sell) — there is no way to compute them locally. Site-wide crawling hits the same cross-origin wall as fetching a single URL, just for many pages instead of one. This tool is deliberately scoped to what a single page’s own HTML can tell you.