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
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
- 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”
- 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.