Most "on-page checklists" tell you to keep your title under 60 characters and get your keyword into the first paragraph. That advice isn't wrong, it's just not where pages actually lose. Titles get truncated by pixel width, not character count. Headings get skipped when they're clever instead of literal. Two pages on the same site end up ranking for the same query and splitting their own traffic. None of that shows up on a basic character-counter tool.
Here's what we've actually seen break rankings, what a checker catches, and a worked example of auditing a real page end to end.
Title tags: pixel width beats character count
Google truncates titles based on rendered pixel width, not a fixed character limit. Desktop SERPs render titles in a proportional font at roughly 20px, with a display budget around 600px before truncation kicks in but that budget isn't fixed either; it shifts slightly with SERP layout tests and with whether the result has extra elements (site links, ratings) competing for width. Mobile renders narrower again, so a title that survives on desktop can still clip on mobile. This is why a fixed "60 characters" rule produces inconsistent results: character width varies by roughly 2.5x between the narrowest lowercase letters (i, l, t, f) and the widest capitals (W, M).
Practically, three things determine whether a title clips:
- Character mix.
Weekly WordPress Website Maintenance Workflow (2026)is 54 characters but front-loaded with capital W's and M's it renders close to or past the desktop budget.wordpress site maintenance: a weekly workflow (2026)is 53 characters, all lowercase after the first word, and renders noticeably narrower. - Brand suffix placement. If your template appends
" | SEO Rank"or similar to every title, that suffix eats into the same pixel budget as the rest of the title a 55-character title plus an 11-character brand suffix can push a perfectly reasonable headline past the clip point. - Punctuation and numerals. Colons, parentheses, and digits render narrower than letters on average, so a title like
"On-Page SEO: 7 Checks Before You Publish (2026)"has more room than the character count alone suggests.
To check this before publishing: open the page in an incognito Chrome window, search the exact target query, and look at how your own result actually renders not a pixel-width calculator's estimate, which can drift from what Google currently renders. If you're auditing in bulk, Search Console's Performance report will show you which queries are getting impressions but unusually low CTR relative to position; a clipped, awkward-looking title is one of the more common causes.
Duplicate and near-duplicate meta descriptions
If you're publishing more than a handful of pages a month, the most common on-page failure isn't a missing tag it's the same tag reused, or a templated one with only a noun swapped ("Learn about [X] and how it affects your business" repeated across twenty posts). Google doesn't just ignore a duplicate description it actively rewrites the SERP snippet using text pulled from the page body instead, and that auto-generated snippet is frequently worse at earning clicks than a deliberately written one, because it's optimized for query-relevance, not persuasion.
A description that survives this needs to do something a generic one can't: state a specific outcome or number, not just a topic. Compare:
- Generic (gets rewritten often):
"Learn about on-page SEO and how to optimize your website for search engines." - Specific (more likely to be used as-is):
"Google truncates titles by pixel width, not character count here's how to check yours before you publish, plus a worked audit of a real page."
The second version restates something concrete from the article itself, which gives Google less incentive to substitute its own extracted summary.
At scale, the practical audit isn't reading each description individually it's exporting all published meta descriptions (most CMSs or a quick script against your content/blog frontmatter will do this) and running a similarity check across the last 10–15 posts before a new one ships. Two descriptions that differ only in the swapped keyword will read as near-identical to a similarity check even if they're technically unique strings.
Keyword cannibalization: two of your own pages competing
This is the failure mode a single-page checker structurally cannot catch, because it only ever evaluates one URL in isolation. If you've published "on-page SEO checklist," "on-page SEO checker tool," and "on-page SEO audit guide" as three separate posts targeting near-identical intent, Google will often alternate which one it shows for a given query sometimes swapping week to week and neither page accumulates enough consistent engagement signal to outrank a competitor that has one strong page instead of three diluted ones.
To diagnose it: open Search Console's Performance report, filter by a candidate query, then check the "Pages" tab for that same query if more than one of your own URLs shows meaningful impressions, you likely have cannibalization rather than three legitimately distinct pages. The fix depends on what you find:
- True duplication of intent (both pages would satisfy the same search equally well): 301-redirect the weaker page into the stronger one, and fold any unique subsections from the redirected page into the survivor before removing it don't just delete it outright, since it may hold backlinks or ranking history worth preserving.
- Overlapping but genuinely distinct intent (e.g., one is a buyer's checklist, the other is a technical audit walkthrough): keep both, but differentiate the titles and opening paragraphs more sharply, and interlink them explicitly ("if you're looking for X instead, see Y") so Google's own clustering treats them as complementary rather than competing.
- A false positive: sometimes overlapping impressions on a shared query are temporary check whether it's persisted over 90 days in Search Console before consolidating anything, since a one-off overlap during a ranking test isn't the same as sustained cannibalization.
One H1, but don't force question-phrasing where it doesn't fit
A single H1 per page is still correct it's the top of the outline Google (and screen readers) build for the page, and a second H1 creates ambiguity about which is the actual topic. But rewriting every H2 into an artificial question ("What Is X?", "How Does X Work?") when the content underneath isn't actually answering that specific question reads as filler to a human reader, even when the intent was to target a featured snippet.
The test: read the heading, then read only the first sentence beneath it. If the sentence directly answers the question the heading poses, the phrasing is earning its place. If the first sentence is throat-clearing before getting to the actual point two sentences later, either the heading is wrong or the paragraph needs to lead with the answer. Headings also matter for how AI-generated answers extract your content systems that chunk pages for retrieval carry the nearest parent heading along with each extracted section, so a heading that doesn't match what's actually discussed underneath makes that chunk less useful to extract, independent of any ranking effect.
A worked example
Take a hypothetical post targeting "email warmup tool." A pre-publish pass looks like:
- Title check:
Email Warmup Tool: Improve Deliverability Before You Send (2026)render it in an incognito search for the target query and confirm it doesn't clip; watch the colon and parenthetical, which take less width than letters, giving slightly more headroom than the character count suggests. - Meta description diff: pull the last 10 posts' descriptions and check this one isn't a reworded duplicate of an existing "email deliverability checklist" post specifically, does it restate a unique number or claim from this article, or could it be swapped onto any of the other nine without anyone noticing?
- Cannibalization check: search Search Console for "email warmup" if an older post is already getting sustained impressions for that query, decide whether this is a genuinely different angle (e.g., tool comparison vs. how-to) or should be merged into the existing page instead of published as a new URL.
- Heading check: read each H2, then its first sentence does the sentence answer the question the heading poses, or is the heading there to hit a structural quota copied from another post's outline?
- Internal links: 2–3 contextual links to pages you actually want to send authority to, placed where a reader would naturally want to click through not appended as a list at the bottom to every tool page on the site.
Where a checker tool is genuinely useful
- Catching a missing or duplicate title tag before it ships
- Flagging broken internal links introduced by a URL slug change
- Spotting images with empty or missing
altattributes - Confirming a page doesn't have an accidental
noindexleft over from staging - Validating structured data (e.g.
ArticleorFAQPageschema) parses without errors a malformed schema block can silently fail rich-result eligibility with no visible symptom until you check the Rich Results Test
Where it can't help you
- It can't tell you if the content actually answers the query better than what's already ranking that's a judgment call about the competing pages, not a lint check on your own
- It can't catch keyword cannibalization, because that requires comparing this page against every other page on your domain and against Search Console query data, not just validating this one URL
- It can't catch templated content at scale if ten of your posts share the same structural skeleton with only the topic swapped, no single-page checker will flag it, but Google's spam systems increasingly do, and the fix has to happen at the content-strategy level, not the per-page level
- It can't replace Search Console the queries actually landing on the page will often differ from what you optimized for, and that gap, not the initial checklist, is what should drive the next round of edits
If you want a second pair of eyes on titles, headings, and metadata before you publish, our On-Page SEO Checker covers the mechanical checks above. The judgment calls cannibalization, whether the content is actually better, whether a section earns its place are still on you.