Free tool
SEO page analysis for any URL, with the fix for every problem
Paste a page’s address. We read the HTML its server sends — the first copy a search engine reads — and run 12 on-page checks: title, meta description, headings, canonical, indexability, structured data, share tags, links, image alt text, language and the mobile viewport. You get a score out of 100, the three fixes to make first and a pass, warning or fail on every check, free and with no signup. The full report — why each finding matters, the exact code to change and every element it applies to — comes as a PDF, by email.
You get a score out of 100, the three fixes to make first and a pass, warn or fail on each of these 12, with the exact code for every finding in a free PDF by email:
- Title tag
- Meta description
- H1 heading
- Heading order
- Structured data
- Canonical URL
- Indexability
- Open Graph & X cards
- Links
- Image alt text
- Language attribute
- Mobile viewport
What an on-page SEO check covers
On-page SEO is the part of search that lives in the page itself. These are the twelve parts a crawler reads first, what each is for, and what passes.
- 01
Title tag · 14 points
The title is the blue link in search results and the label on the browser tab. It is the first thing a searcher reads, so it decides the click more than anything else on this list.
Passes: One <title>, 30–60 characters.
- 02
Meta description · 10 points
Search results often show it as the two lines under your title. It doesn't move rankings, but it is your one line of sales copy before the visit.
Passes: One meta description, 70–160 characters, not a copy of the title.
- 03
H1 heading · 10 points
The H1 is the page's main headline in its markup: it tells search engines and screen-reader users what the page is about.
Passes: Exactly one <h1>, with words in it.
- 04
Heading order · 6 points
Headings are the page's outline. A jump from <h2> straight to <h4> leaves a gap that screen-reader users hear and that makes the structure harder to read.
Passes: No heading more than one level deeper than the one before it, and none empty.
- 05
Structured data · 4 points
JSON-LD tells search engines what the page is — an organization, a product, an article — instead of leaving them to guess. It is what makes rich results possible, never a guarantee of them.
Passes: Valid JSON-LD (or microdata) with @context, @type and the properties each common type requires.
- 06
Canonical URL · 10 points
One page is often reachable at several URLs. The canonical says which one to index; one that points at your home page tells search engines this page is a duplicate of it.
Passes: One canonical, naming this page's own URL.
- 07
Indexability · 20 points
A noindex in a robots meta tag or the X-Robots-Tag header drops the page from search, whatever else is right. It is often left over from a staging site.
Passes: No noindex, no page-wide nofollow, no nosnippet.
- 08
Open Graph & X cards · 8 points
Open Graph tags decide the title, text and image when the link is shared in LinkedIn, Slack, iMessage or X. Without them each app guesses.
Passes: og:title, og:description and og:image (a full URL).
- 09
Links · 4 points
Internal links are how search engines find your other pages. A link with no words tells them nothing about where it goes, and screen readers announce it as just “link”.
Passes: Links to your own pages, none of them nofollow, and every link with words or a label.
- 10
Image alt text · 4 points
Alt text is what search engines read instead of the image, and what screen readers say aloud.
Passes: Every image that isn't decorative has an alt attribute. Fails when more than half are missing.
- 11
Language attribute · 4 points
The lang attribute tells search engines which searchers the page is for, and screen readers how to pronounce it.
Passes: <html lang> set to a language code, such as en or en-GB.
- 12
Mobile viewport · 6 points
Google ranks on the mobile version of a page. Without a viewport tag, phones draw the page at desktop width and shrink it.
Passes: width=device-width, and zooming allowed.
The limits it checks against
The common thresholds, stated so you can check the check.
- Title
- 30–60 characters. Results cut titles at about 600 pixels, usually 50–60 characters, so the words people search for go first.
- Meta description
- 70–160 characters. Results usually show about 155 of them, fewer on phones.
- H1
- Exactly one. None is a fail, two or more a warning.
- Headings
- Each heading at most one level deeper than the one before it: an <h3> under an <h2>, never an <h4>.
- Canonical
- Names the page itself. Pointing at the home page from any other page is a fail.
- Robots
- No noindex in the robots meta tag or the X-Robots-Tag header. A noindex caps the score at 40.
- Images
- Alt text on every image that isn't decorative; alt="" marks one that is.
How the score works
Points you can add up yourself, computed by code from the page's HTML.
- Each check is worth a fixed number of points, 100 in all — shown next to each check above. A pass earns all of them, a warning half, a fail none. A check that doesn't apply to the page, such as image alt text on a page with no images, counts neither way.
- The score is the points earned over the points available, times 100. A page that tells search engines not to index it is capped at 40, because nothing else matters until that is gone.
- The fixes are ordered by the points each problem costs, so a failed 20-point check comes before a warning on a 4-point one. Notes cost nothing and are listed last.
- The checks, the points and the score are computed by code. John, Venturehand's AI agent, writes only the one-line read and the plain-language version of each fix, and a line he writes is dropped if it states a number the check did not find.
A worked example
A made-up pricing page at acme.example/pricing, run through the same checks when this page was built.
<title>Acme Analytics | Pricing for privacy-friendly website analytics for SaaS</title>
<link rel="canonical" href="https://acme.example/">
<meta property="og:title" content="Acme Analytics pricing">
<meta property="og:image" content="https://acme.example/og.png">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">{ …Organization… }</script>- WarnTitle tagThe title is longer than 60 characters7/14
- FailMeta descriptionThe page has no meta description0/10
- PassH1 heading“Simple pricing for simple analytics”10/10
- WarnHeading orderA heading skips a level3/6
- PassStructured dataTypes found: Organization.4/4
- FailCanonical URLThe canonical points to your home page0/10
- PassIndexabilityIndexable (no robots meta tag and no X-Robots-Tag header).20/20
- WarnOpen Graph & X cardsThe Open Graph tags are missing og:description4/8
- WarnLinks1 link has no text2/4
- WarnImage alt text1 image has no alt text2/4
- PassLanguage attributelang="en"4/4
- PassMobile viewportcontent="width=device-width, initial-scale=1"6/6
It earns 62 of 100 points, so it scores 62/100: needs work. The fixes come out in this order:
- 1.Write a meta description. The page's HTML has no meta description.
- 2.Point the canonical at this page. This page is https://acme.example/pricing, but its canonical is https://acme.example/.
- 3.Shorten the title to 60 characters. Your title is 72 characters: “Acme Analytics | Pricing for privacy-friendly website analytics for SaaS”. In search results it is likely cut to about “Acme Analytics | Pricing for privacy-friendly website…”.
What this can't tell you
Worth knowing before you change anything.
- It checks one page, as its server sends it. Text or tags that JavaScript adds after the page loads are not in that HTML, so a page drawn entirely in the browser scores lower here than it looks. Google renders JavaScript; many other crawlers and AI assistants don't.
- It checks markup, not rankings. It can't see who links to the page, how fast it loads, how well it answers the search, or how it compares with the pages ranking above it — each of those matters as much as anything here.
- A high score means the on-page basics are right, not that the page will rank. Treat it as the list of things that should never be wrong.
- It can't read pages behind a login, a paywall or a strict bot wall, and it reads at most the first 2 MB of HTML.
Questions about the SEO page analysis
What is an SEO page analysis?
A check of one page against the on-page basics search engines read: the title, the meta description, the headings, the canonical, the robots rules, structured data, share tags, links, image alt text, the language and the mobile viewport. This one reads the HTML the page's server sends, gives each of 12 checks a pass, a warning or a fail, and gives every problem its fix.
How long should a title tag be?
Search results cut titles by width, at about 600 pixels, which is usually 50 to 60 characters. This check warns above 60 and below 30. Put the words people search for first, so a cut never hides them, and the brand last.
How long should a meta description be?
Results usually show about 155 characters, fewer on phones. This check warns above 160 and below 70. Search engines often rewrite descriptions, but a good one that matches the page is still the line most likely to be shown.
Can a page have more than one H1?
It won't break anything, and search engines say several H1s are fine. One H1 still keeps the page's main topic unambiguous, for them and for screen-reader users who jump from heading to heading. This check warns at two or more and fails a page with none.
What is a canonical URL, and do I need one?
It is a link in the page's head that names the one URL search engines should index for the page, when the same page is reachable at several. Every page should have one that names itself. The classic mistake is a site-wide canonical in a layout, which points every page at the home page and keeps them all out of search.
Is this SEO checker free?
Yes, with no account. The score, the verdict, the three fixes to make first and the checks that pass are on the page. The full report — every finding with why it matters, the exact code and every element it applies to — is a free PDF, emailed only if you ask; asking for it does not put you on any list, only ticking the box on that form does. There is a limit of 10 checks an hour per visitor, and a result is kept for 10 minutes, so after you change your page, give it that long and check again. We store the URL without its query string, and the result, so it has a link; result pages are not indexed.
Does a higher score mean better rankings?
No. It means the page's markup gets the on-page basics right. Rankings also depend on what the page says, who links to it, how fast it is and how it compares with other pages for the same search, and this check measures none of those.
More free tools
- Landing page roast — the same page scored on headline, value proposition and call to action.
- ICP generator — who your page is written for, with the evidence.
- Channel picker — where to reach them, ranked.
- Launch video generator — a launch video from the same URL.