Checklist clipboard and warning symbol on abstract web grid
On-page SEO usually fails in boring ways: a missing canonical, a duplicated title, an accidental noindex, or links that don’t resolve the way you think they do. This guide is a pre-publish QA checklist with the pitfalls called out so you can catch issues before they ship.

Think of it as “measure twice, publish once.”

Use this on new pages, major updates, migrations, and template changes.

The 5-minute pre-publish checklist (copy/paste)

If you only have time for one pass, do this one.

  • Title tag: unique, specific, not truncated, matches the page intent
  • Meta description: not required for rankings, but accurate and click-worthy (no bait)
  • One clear H1: aligned with the title, not repeated site-wide
  • Canonical: points to the preferred URL (https, correct host, trailing slash consistency)
  • Indexing allowed: no noindex, no blocked-by-robots for the page you want indexed
  • Internal links: at least a few relevant links in and out; no broken links
  • Images: compressed, have useful alt where it helps, no huge LCP image
  • Schema (if used): matches visible content; no spammy markup

The rest of the article explains how each one breaks—and what to look for.

URL and canonical: where “same page” becomes three pages

Chain link merging into single target ring concept
Search engines are fine with duplicates, until they’re not. The quiet ranking killer is when one page is accessible via multiple URLs and you don’t clearly signal which one is primary.

Check these common duplicate patterns:

  • http vs https
  • www vs non-www
  • Trailing slash vs no trailing slash (/guide/ vs /guide)
  • Parameters (?ref=, ?utm=, sorting, filtering)

Pitfall to avoid: setting the canonical to a different page “because it’s similar.” Canonical is not a shortcut for consolidation; it’s a strong hint about the preferred URL for substantially the same content.

Quick sanity check: the canonical should be a fully qualified URL (including https) and should load a 200 status.

Indexing signals: the “why isn’t this page showing up?” traps

Indexing problems often come from one of three places: a meta robots tag, an HTTP header, or robots.txt.

What to verify:

  • Meta robots: no noindex on pages meant to rank
  • X-Robots-Tag header: especially common on PDFs and some CMS setups
  • robots.txt: not blocking the URL path you’re publishing to

Pitfall to avoid: blocking CSS/JS directories in robots.txt “to save crawl budget.” Modern indexing needs to render pages; blocking critical assets can make Google misunderstand layout, content, or mobile behavior.

Also watch for staging leftovers: dev templates that ship with noindex by default.

Titles, H1s, and intent: how good pages get misclassified

Stacked heading bars aligned toward a focus point
Search engines don’t need you to repeat the keyword 12 times. They do need the page to clearly answer one job.

  • Title tag: should describe the page uniquely and match the query intent (guide, comparison, pricing, definition, etc.)
  • H1: should confirm what the page is, not just repeat your site name
  • Subheadings: help coverage and scanning; avoid “Section 1 / Section 2” headings

Pitfall to avoid: template-driven titles that stamp the same format everywhere (for example “Brand | Category | Brand”). You don’t just lose clicks—you create lots of near-duplicate signals that make pages compete with each other.

A small but real issue: a title can look fine in your CMS but render differently after JavaScript or A/B testing changes it.

Internal links: your pages can’t rank if you don’t introduce them

Internal linking is where “SEO strategy” meets “site actually works.” New pages that only exist in a sitemap (or only reachable via on-site search) tend to underperform.

What to check:

  • At least one crawlable path from a relevant hub/category page
  • Descriptive anchor text (not 20 identical “Learn more” links)
  • No accidental orphaning after navigation or taxonomy changes

Pitfall to avoid: using internal links that are only triggered by scripts (onclick) or hidden behind form interactions. If a link isn’t a normal href the crawler can follow, it may as well not exist.

Also check for redirect chains in internal links. Link directly to the final URL when possible.

Images and performance: SEO losses that look like “design choices”

Stopwatch connected to image frame symbolizing page speed
A single uncompressed hero image can drag down LCP and make a page feel slow—especially on mobile. That can reduce engagement, and over time it can blunt performance in search.

  • Compress and size images to the display dimensions (don’t serve a 4000px image into a 900px slot)
  • Prefer modern formats where supported (WebP/AVIF)
  • Alt text: useful when the image conveys information; don’t keyword-stuff

Pitfall to avoid: lazy-loading the first/hero image. Lazy-loading below-the-fold images is great; lazy-loading the main LCP element often backfires.

If you can only check one performance thing: make sure the first big visual loads fast and isn’t blocked by unnecessary scripts.

Structured data: helpful when it matches the page, harmful when it doesn’t

Schema can improve how your page appears (rich results), but it’s not a substitute for content. Treat it like a label, not a disguise.

  • Match visible content: don’t mark up FAQs that aren’t on the page
  • Use the right type: Article vs Product vs HowTo vs FAQ
  • Be consistent: same organization/site name, same URLs

Pitfall to avoid: adding every schema type you can find. Over-marking can create errors, confuse parsers, or trigger manual review if it looks manipulative.

Takeaway: publish with confidence, not hope

If you adopt one habit, make it this: do a quick pre-publish QA pass that checks canonical + indexability + internal links. Those three fix more “mystery SEO” problems than most content tweaks ever will.

Once the page is live, spot-check it again to make sure your CMS, scripts, and redirects didn’t change the signals you intended to send.