Free tool · On-page SEO

Free on-page SEO checker

To audit a page's on-page SEO, check that it may be indexed at all, then its title, description, headings, content, structured data, links and images. This tool runs thirty-five such checks worth one hundred points, publishes every weight and threshold below, and returns a fix queue ordered by the points each change is worth.

Free. The thirty-five-check audit needs no account; the answer-engine readiness read needs a free sign-in.

AEO depth layer

See the Answer-engine readiness read

The Answer-engine readiness read is computed from your own page and costs nothing to run. We ask for a free account because the expensive tools on this shelf stay free, and because it lets us tell you when your result changes. No card, no trial clock.

  • Whether your opening paragraph is short enough for an engine to lift whole, and whether it restates the subject your h1 promised. A passage that has to be cut is one an engine takes from somewhere else.
  • Each question-shaped subheading paired with the block beneath it, and whether that block is short enough to quote. Asking the question is half the work.
  • Who the markup says wrote and published the page, how old it says it is, and how many of your sentences carry a specific number rather than a general statement.
Sign in free to unlock

Signing in saves the details you entered above so we can follow up about your results. See our privacy policy for what we keep and why. The On-Page SEO Checker result you already have stays free either way. Privacy policy.

All 35 checks, with the points they carry

This is the entire catalogue, printed before you enter a URL. The weights sum to one hundred, a warning earns half its weight, and a check that does not apply to your page is removed from the arithmetic rather than counted against you. Where a threshold is our judgement rather than a published Google limit, it says so in the same column as the number.

Indexability

20 points

Whether a crawler is allowed to keep the page at all. Nothing else on this list matters if these fail.

CheckPointsThresholdWhy it is on the list
The page returns 2003present or absentA page that answers with an error or a redirect is not the page anyone will end up scoring.
No noindex in the robots meta tag6present or absentOne word in one tag removes the page from every index, and it survives redesigns because nobody looks at it.
No noindex in the X-Robots-Tag header4present or absentThe same instruction as the meta tag, delivered by the server, and invisible in the page source. It is the single most missed cause of a page vanishing.
A canonical link is declared4present or absentWithout one, every parameter and tracking variant of this address is a separate candidate page competing with itself.
The canonical points at this page3present or absentA canonical inherited from a template points somewhere else, which tells engines to index that page instead of this one.

Title

14 points

The single strongest on-page signal, and the one most often left as a template default.

CheckPointsThresholdWhy it is on the list
A title tag exists and is not empty6present or absentIt is the strongest single on-page signal and the line every result, share and citation is labelled with.
The title is between 15 and 60 characters415 to 60 charactersour judgement, not a published Google limit; Google truncates on pixel width, not characters, so this is a proxyBelow 15 it carries no information; past roughly 60 it is cut off in most results, so the end of it is written for nobody.
The title says more than the brand name2at least 3 meaningful wordsour judgement, not a published Google limitA title of three stop words and a brand is the default a template ships with, and it competes with every other page on the site.
og:title agrees with the title tag260% shared meaningful wordsour judgement, not a published Google limitWhen they disagree, a shared link and a search result describe the same page differently, and neither consumer is wrong to believe what it was told.

Meta description

11 points

Not a ranking factor, and still the sentence that decides whether anyone clicks.

CheckPointsThresholdWhy it is on the list
A meta description exists6present or absentIt is not a ranking factor. It is the sentence that decides the click, and without one the engine picks an extract you did not choose.
The description is between 70 and 160 characters370 to 160 charactersour judgement, not a published Google limit; Google also rewrites descriptions freely, so treat this as a ceiling not a ruleUnder 70 wastes the space; over about 160 is cut, so the sentence ends mid-thought in the result.
The description is not a copy of the title285% shared meaningful wordsour judgement, not a published Google limitRepeating the title spends the one extra sentence you get on information the reader already has.

Headings

14 points

The outline a reader skims and an answer engine walks to find the part worth quoting.

CheckPointsThresholdWhy it is on the list
The page has a non-empty H15present or absentIt is the heading a reader and an extractor both treat as the page's subject line.
There is exactly one H13present or absentSeveral H1s are valid HTML5 and Google copes with them, so this is a warning: it still leaves the page's subject ambiguous to anything extracting one.
The H1 is between 15 and 70 characters215 to 70 charactersour judgement, not a published Google limitA two-word H1 tells an extractor almost nothing, and a paragraph-length one is not a heading.
The H1 and the title share their subject240% shared meaningful wordsour judgement, not a published Google limitWhen they disagree, the page is telling an engine two different things about what it is, and disagreement reads as uncertainty.
The page has at least one H21present or absentA page with no subheadings is one undifferentiated block, and there is no section for an engine to quote.
No heading level is skipped1present or absentJumping from H2 to H4 breaks the outline that assistive technology and extractors both walk.

Content

16 points

Whether there is enough substance on the page to be worth citing.

CheckPointsThresholdWhy it is on the list
The page has at least 300 words5300 wordsour judgement, not a published Google limit; Google has said explicitly there is no word-count thresholdThere is no minimum word count for ranking. There is a practical floor below which there is nothing on the page worth quoting, and 300 is where we put it.
The content is broken into paragraphs35 blocksour judgement, not a published Google limitExtractors quote a block. A page with no block boundaries offers nothing quotable at any length.
The typical paragraph is under 60 words3median block under 60 wordsour judgement, not a published Google limitA long paragraph forces an extractor to quote far more than the answer, so it usually quotes someone shorter instead.
At least one heading is shaped like a question3present or absentPeople ask assistants questions. A heading that matches the question is the cheapest way to be the passage that gets quoted.
The html element declares a language2present or absentOne attribute. It decides which index the page belongs in and which voice reads it aloud.

Structured data

9 points

What the page says it is, in the only format a machine does not have to guess at.

CheckPointsThresholdWhy it is on the list
The page carries JSON-LD5present or absentIt is the one place the page states what it is rather than leaving a machine to infer it from the prose.
Every JSON-LD block parses2present or absentA block with a trailing comma is not partially read. It is discarded in full, silently, and the page looks unmarked.
A page-level type is declared2present or absentOrganization and Breadcrumb describe the site. Something has to describe this page, or the markup says nothing about what you are asking to be cited for.

Links

7 points

How the page sits in your site and whether it points anywhere but inward.

CheckPointsThresholdWhy it is on the list
At least three internal links33 internal linksour judgement, not a published Google limitA page nothing links out to is a page crawlers reach late and rarely, which is how new content sits uncrawled for weeks.
At least one outbound link21 outbound linkour judgement, not a published Google limitA page that cites nothing reads as a page with no sources, to a reader and to a model judging whether to trust it.
No link has empty anchor text1present or absentAn empty link passes no signal about its destination and reads as nothing at all in a screen reader.
The page is not a link farm1300 linksour judgement, not a published Google limitPast a few hundred links the value each one carries is diluted, and the body text is a minority of the page.

Images

5 points

The text layer of your images, which is also the only part a text model reads.

CheckPointsThresholdWhy it is on the list
Every image has an alt attribute3present or absentAlt text is the only part of an image a text model reads, and the only part a screen reader can speak. An empty alt on a decorative image is correct and counts as described.
An og:image is set2present or absentWithout it every shared link renders as a bare row of text, which is the difference between a link that gets clicked and one that gets scrolled past.

Technical

4 points

The basics that are one line each and still missing more often than anyone expects.

CheckPointsThresholdWhy it is on the list
The page is served over https2present or absentIt has been a ranking signal for a decade, and browsers now mark the alternative as unsafe in front of the visitor.
A viewport meta tag is set1present or absentWithout it a phone renders the page at desktop width and zooms out, which is a mobile usability failure before anyone reads a word.
A character encoding is declared1present or absentUndeclared, the browser guesses, and the guess is what turns an apostrophe into three symbols in your search result.

How this compares to a typical free on-page checker

Where the usual free checkers do the same thing, the table says so. Most of the difference is not in what is checked; it is in whether you can audit the number that comes back.

CapabilityThis toolTypical free checker
Title, description and heading checksYesYes
A score out of 100YesYes
Every weight published before you run itYesNo
Each threshold labelled as Google's or oursYesNo, presented as rules
Inapplicable checks excluded, not failedYesUsually counted as failures
X-Robots-Tag response header readYesRarely, it is not in the source
Canonical compared against the fetched URLYesOften only presence
Alt="" treated as a described decorative imageYesUsually counted as missing
Fix queue ordered by points at stakeYesOrdered by severity label
Each fix pointed at a free toolYesPointed at a contact form
Answer-engine readiness readYes, with a free accountNo

What is in the answer-engine readiness read

The thirty-five checks above measure whether a page is well formed. They do not measure whether an assistant could lift an answer out of it, which is a different question, and increasingly the one that decides whether the page is ever seen. The layer behind the free sign-in reports on that, from the same fetch, so it adds no wait.

  • Whether the opening paragraph is short enough to be quoted whole, and whether it restates the subject the h1 promised. A long opener has to be cut, and a passage that needs cutting is one an engine takes from somewhere else.
  • Each question-shaped subheading, paired with the block beneath it, and whether that block is short enough to quote. Asking the question is half the work; answering it in the next sixty words is the half most pages skip.
  • Who the markup says wrote and published the page, and how many sameAs links it carries. Without them a model attributes your claim to a bare domain, or to nobody.
  • How old the page says it is, read from the dates in its own structured data, with an unparseable date reported as no date rather than as 1970.
  • How many sentences carry a specific number rather than a general statement, per hundred words, with examples. A page of general statements gives a model nothing it could not have written itself, which is the most common reason a page is read and not cited.

It is a structural read of your own page rather than a model call, so it measures whether an engine could extract an answer, not whether one did. For what the engines actually say about you, the next step is the AI visibility checker. To confirm they are allowed to read you at all, the AI crawlability checker reads your robots.txt bot by bot, and the h1 checker goes deeper on the heading outline than the six points it is worth here.

How to run an on-page SEO audit

Step 1

Enter the page you want audited

Paste a public address, for example acme.com/pricing. We fetch that exact URL, follow its redirects, and report on where they land.

Step 2

Read the group scores before the total

The total is one number and it hides everything. Indexability at 40% and content at 95% is a completely different page from the reverse, and only one of them is worth fixing today.

Step 3

Work the fix queue from the top

It is ordered by points at stake, not by severity, because a six-point warning is worth more of your afternoon than a one-point failure. Each row names the tool that fixes it.

Step 4

Then read the answer-engine layer

The free score measures whether the page is well formed. The layer behind the sign-in measures whether an engine could lift an answer out of it, which is a different question with different answers.

When you outgrow this tool

A score tells you what is wrong with a page you already know about. Answer Radar tells you which questions your buyers ask that no page of yours answers at all, and which competitor gets named instead.

Auditing one page is free and complete on its own. Linkeddit is what you use when checking pages by hand stops being enough and you need the questions your buyers ask answered before you decide which page to fix.

FAQ

On-Page SEO Checker questions

How the score is built, which numbers are Google's and which are ours, and what a server-side read cannot tell you.

How is the on-page SEO score calculated?

Thirty-five checks carry a weight, the weights sum to exactly one hundred, and the score is the share of applicable weight earned. A pass earns its full weight, a warning earns half, a failure earns nothing, and a check that does not apply leaves the denominator entirely. The whole catalogue with every weight is printed further down this page, so you can add up the deductions yourself and get our number back, or tell us we are wrong.

Why does a page with no images not lose points for alt text?

Because it has no alt text to be bad at. A check that does not apply is marked n/a and removed from both sides of the arithmetic rather than being scored as a failure. Counting absence as failure is the most common way a free checker produces a number nobody can act on, and it reliably makes thin pages look better than deep ones.

Are these thresholds Google's rules?

Mostly not, and every one of them says which it is. Google publishes far fewer limits than the SEO industry implies: there is no title length rule in characters, no word count threshold, and no meta description limit. Where we name a number it is labelled as our judgement, and the check tells you the count it measured so you can overrule us.

What is the X-Robots-Tag check, and why do other tools skip it?

It is a response header that carries the same noindex instruction as the robots meta tag, delivered by the server rather than the page. It never appears in the HTML, so a tool that only parses source code cannot see it, and it survives redesigns because nobody looks at headers. It is worth four points here and it is the single most common cause of a page that looks perfect and is not indexed.

Can this read a page built with JavaScript?

Only what the server sends. We read the HTML your server returns and do not execute JavaScript, so a page that renders its headings, body or schema in the browser will score lower here than it deserves. That is a real limitation and we would rather state it than quietly report your page as empty. If a result surprises you, view the page source rather than the browser inspector and compare.

What is in the layer that needs an account?

The answer-engine readiness read: whether your opening paragraph is short enough for an engine to lift whole, whether each question-shaped subheading is followed by something quotable, who the markup says wrote and published the page, how old it says it is, and how many of your sentences carry a specific number rather than a general statement. It comes from the same fetch as the free score, so signing in adds no wait and costs nothing to run.

How is this different from other free on-page SEO checkers?

Most of them return a dial and a list of red crosses, and the arithmetic behind the dial is not published because the dial exists to sell an audit. This publishes the catalogue, the weights and the thresholds before you enter a URL, marks inapplicable checks as inapplicable, orders the fixes by what they are actually worth, and sends you to a free tool rather than a sales form. Where a typical checker is equal, the comparison table below says so.