On-Page SEO Checklist: 15 Checks Before You Publish
On-Page SEO

On-Page SEO Checklist: 15 Things to Check Before You Publish

Most on-page SEO advice is a list of thirty items with no order to it, which is why people do the easy nine and stop. This is fifteen, ranked by what actually stops a page working — starting with the checks that decide whether the page can rank at all.

The short version

  • Order matters. A page with a perfect title and a noindex tag scores well on most checklists and cannot rank at all.
  • Check the served HTML, not the rendered page. What you see in the browser has been through JavaScript; what gets indexed first is the raw response.
  • The four highest-value checks are indexability, canonical, title and H1. The rest are worth doing and none of them will save you if those four are wrong.
  • No on-page check predicts rankings. It tells you whether anything technical is standing in the way — a different and far more honest claim.
  • Run all fifteen on a live page free — every finding names the value it found.

Why the order matters more than the list

Here is a page I see regularly: excellent title, well-written description, sensible headings, images with alt text, a healthy word count. It has never received a single visit from search, because a noindex tag survived the move from staging to production and nobody looked.

Every generic checklist scores that page highly. It has nine of eleven items. What it does not have is permission to appear, and no amount of the other nine compensates.

So the useful structure is tiers, not a list. Tier one decides whether the page can rank. Tier two decides how it is described when it does. Tier three decides how well it competes once described. Work downwards, and stop worrying about tier three until tiers one and two are clean.

Tier 1: can this page rank at all?

1. The robots meta tag

index, follow unless you have a specific reason otherwise. A stray noindex is the most catastrophic and most common single on-page fault, and it has no visible symptom — the page loads perfectly for humans.

2. Not blocked in robots.txt

A page blocked from crawling cannot be read, which also means any noindex on it can never be seen. The two interact in a way that catches people out often enough to be worth its own explanation.

3. The canonical points somewhere sensible

Ideally at itself. Pointing every page at the homepage — a genuinely common template bug — tells Google the rest of your site is duplicate content, and it will act accordingly.

4. HTTPS, and a status of 200

Not a redirect chain, not a soft 404 returning 200 with an error message in the body. If the URL you promote is not the URL that returns 200, every signal you build points somewhere with a hop in front of it.

5. The content is in the served HTML

If the raw response is an empty shell that JavaScript fills in later, a crawler that does not render sees the same emptiness. This is common enough on modern frameworks to deserve its own post.

Tier 2: the tags that describe the page

6. One title, 50–60 characters, front-loaded

One, not two — a CMS adding a title on top of a hand-written one is a frequent cause of both being disregarded. Front-load the meaning so truncation costs you nothing.

7. One meta description, 120–158 characters

Not a ranking factor; still the advertisement that wins the click. Without one, Google scrapes a fragment of body text, which is rarely the sentence you would have picked.

8. Exactly one H1, matching the page's subject

Multiple H1s are valid HTML5 and still a bad idea: they blur what the page is primarily about. A missing H1 is worse — and if Google rewrites your title, the H1 is often what it shows instead.

9. Open Graph tags present with an absolute image URL

Not for rankings, for distribution. A relative og:image path is the most common reason a shared link shows no image. Check the card with the Open Graph previewer before you promote the page.

Free tool · No fake scores

Run the checklist against a real page in one paste

Enter a URL and get the on-page audit: title, description, H1 and heading order, canonical, robots, alt text, HTTPS and internal links — each finding showing the value it actually found.

Tier 3: structure and content signals

10. Heading order that does not skip levels

H1, then H2s, then H3s beneath them. Jumping from H1 to H4 is not a penalty, but it makes the document outline meaningless — which matters for screen readers immediately and for extraction systems increasingly.

11. Headings that describe their sections

“Pricing” beats “Let's talk numbers”. A heading is a label, and a reader scanning for an answer relies on it. So does anything trying to pull an answer out of your page.

12. Alt text on images that carry meaning

Describing what the image shows, not stuffed with keywords. Decorative images should have an empty alt="", which correctly tells a screen reader to skip them. Both omissions and keyword-stuffed alt text are accessibility failures first and SEO issues second.

13. Internal links out to related pages

A page with no internal links leaving it is a dead end for crawlers and readers alike. Three or four contextual links to genuinely related pages, with descriptive anchor text rather than “click here”.

14. Internal links pointing in

Harder to check on a single page and more valuable than most of this list. A page nothing links to is a page you have told your own site is unimportant.

15. A clear statement of the topic near the top

The first hundred words should say plainly what the page is about, for the reader deciding whether to stay and for any system trying to summarise it. The content readiness checker scores this specifically.

Use these together

  • Meta Tag Generator — Generate title, description, canonical, robots, Open Graph and Twitter card tags with live length checks.
  • Canonical Tag Generator — Generate a correct canonical link tag and learn when a page needs one.
  • AI Content Readiness Checker — Score how well a page is structured for systems that extract and summarise content, and see what to improve.
  • The full set of twelve — free, no signup, and for nine of them nothing you type leaves your browser.

When to run this

Before publishing anything new

Two minutes. Catching a wrong canonical before launch costs nothing; catching it in month four costs the four months.

After any migration, redesign or platform change

This is where tier one breaks. Staging noindex tags, canonicals still pointing at the old domain, robots.txt copied wholesale from the development server. Check a sample of pages from each template immediately after go-live, not a week later.

When a page that should rank does not

Before rewriting the content or building links, confirm nothing technical is blocking it. It is the cheapest possible explanation and it is right more often than people expect.

On a competitor's page

Entirely legitimate and quite instructive. Their titles, headings and internal linking patterns are public, and looking at a page that outranks yours tells you more than a generic best-practice list.

Why this checker over a scored audit

It shows the value it found. Not “title: warning” but the actual title, its length, and why that length is flagged. You can verify every finding yourself, which means you can disagree with one when your situation warrants it.

It reads the served HTML. Not the rendered DOM. That is what a crawler sees first, and it is why the checker sometimes reports less content than you can see on screen — and it says so explicitly when it detects that, instead of scoring you down on twenty items for content that exists but is not in the response.

It has a paste fallback. If your site sits behind Cloudflare bot rules, a login, or a staging password, the fetch will fail — and rather than guessing, the tool tells you why and offers the paste tab, where you can drop in the page source (Ctrl+U) and get the identical analysis.

It does not promise rankings. A high score means nothing technical is standing in the way. Whether the page ranks depends on content quality, intent match, links and competition — none of which any automated check can assess. Tools that imply otherwise are selling a subscription.

Nothing is stored. The fetch goes through a small endpoint on this site, because a browser cannot read another domain's HTML. It applies public-address-only restrictions, re-validates redirects on every hop, enforces a hard timeout and a size cap, never executes the fetched page, and keeps nothing.

The fifteen, as a list

  1. Robots meta allows indexing
  2. Not blocked in robots.txt
  3. Canonical points at a sensible URL
  4. HTTPS, returning 200, no redirect chain
  5. Content present in the served HTML
  6. One title, 50–60 characters, front-loaded
  7. One meta description, 120–158 characters
  8. Exactly one H1, matching the subject
  9. Open Graph tags with an absolute image URL
  10. Heading order without skipped levels
  11. Headings that describe their sections
  12. Meaningful alt text; empty alt on decoration
  13. Internal links out, with descriptive anchors
  14. Internal links in, from relevant pages
  15. The topic stated plainly in the first hundred words

Work top down. If items one to five are clean and the page still does not rank, the problem is not on this list — it is content, intent or competition, and that is a different and much longer conversation.

FAQ

Does a high on-page score mean I will rank?

No. It means nothing technical is standing in the way. Ranking is decided by content quality, how well the page matches the intent behind a query, the links pointing at it and who else is competing — none of which an automated check can measure. Any tool implying otherwise is overselling.

Why does the checker report less content than I can see on my page?

Because it reads the HTML your server returns, not the page after JavaScript has run. That is deliberate: it is closer to what a crawler processes first. If there is a large gap between the two, that gap is itself the finding, and the tool says so rather than scoring you down on the individual checks.

The check failed on my site. What now?

Usually a firewall or CDN rule blocking automated requests, a login wall, or a site that is genuinely down — the tool tells you which rather than guessing. In every one of those cases, switch to the paste tab, view your page source in the browser (Ctrl+U), paste it in, and you get exactly the same analysis.

How many H1 tags should a page have?

One. Multiple H1s are technically valid in HTML5 and still a bad idea, because they blur what the page is primarily about for both readers and machines. If a section needs prominence, that is what H2 is for.

Do you store the URLs people check?

No. The endpoint fetches the page, returns it and keeps nothing. There is a short-lived in-memory counter to rate-limit abuse, and that is the extent of it.

Thejas Acharya — Digital Growth Consultant, Bangalore

Written by

Thejas Acharya

Digital growth consultant based in Bangalore, working with founders and marketing teams across India and the US. I build websites, landing pages, Meta Ads campaigns and AI automation that are judged on one thing: whether they generate leads. The free tools on this site are the checks I run on client work, opened up.

Free · No signup · No data stored

Check the page before you publish it, not after it stalls.

Every finding names the value it found, so you can verify it yourself. If the page blocks bots or sits behind a login, paste the source instead and get the identical analysis.

Title, description, canonical Heading structure Alt text & internal links Paste-the-source fallback

Free · No obligation · India & US clients · I reply to every email within 24 hours