Article No. 80
On-Page SEO Mechanics Checklist: Title Tags, Headers, URL Slugs, Keyword Placement & Alt Text
Abstract
This post covers one thing: the mechanical, page-level elements you control directly in your HTML and content structure. Title tags. Heading hierarchy. URL slugs. Where keywords belong on the page....
On this page
This post covers one thing: the mechanical, page-level elements you control directly in your HTML and content structure. Title tags. Heading hierarchy. URL slugs. Where keywords belong on the page. Alt text. Basic content formatting for readability.
It does not cover meta descriptions (that tag has its own dedicated guide), internal linking, FAQ content or schema markup, contact-page specifics, Core Web Vitals, structured data beyond alt text, crawl configuration, or conversion-rate tactics. Those are separate topics with separate guides. If you came here looking for Core Web Vitals thresholds or internal-link anchor strategy, you’re in the wrong place. This is the mechanics layer only.
Title Tags
The title tag is the single highest-leverage piece of on-page HTML you write. It’s the clickable blue link in search results, the tab title in a browser, and one of the strongest on-page relevance signals Google uses to understand what a page is about.
Google’s own documentation on title links states there’s technically “no limit on how long a <title> element can be,” but the display is truncated “as needed, typically to fit the device width.” In practice, that means anything much past roughly 50-60 characters (about 580-600 pixels on desktop) risks getting cut off with an ellipsis in the SERP. Characters have different widths, an “i” is narrower than a “W”, so character count is a rough proxy, not a hard rule. If you want precision, use a pixel-width preview tool rather than just counting characters.
More important than length is accuracy. Google’s documentation is explicit that it will generate a different title for you if your <title> element is vague, duplicated across pages, stuffed with repeated keywords, or doesn’t reflect the actual page content. The fixes are straightforward:
- Put the primary keyword or topic phrase near the front, but only if it reads naturally. Don’t force it.
- Make every title on the site unique. Duplicate titles across category or filter pages are one of the most common reasons Google overrides them.
- Use a delimiter (a hyphen, colon, or pipe) to separate the page-specific part from the brand name, and only include the brand once.
- Avoid “boilerplate” titles that are identical or near-identical across many pages (Google specifically calls this out as a trigger for rewriting).
- Skip vague titles like “Home” or “Untitled” or “Product Page” that don’t describe the content.
One distinction worth making up front: the title tag is not the meta description. They serve different jobs (the title is a label, the description is a pitch) and they’re covered separately.
If you want to know how often your existing titles are getting overridden, Search Console’s Performance report will show you: pull the page, compare the query-level impressions against what you’d expect the title to attract, and check the live SERP for that URL. A title getting rewritten on a high-traffic page is worth fixing; a title getting rewritten on a page nobody searches for is not worth the time.
Heading Hierarchy (H1-H6)
Headings do two jobs: they help readers scan and navigate the page, and they give search engines a structural outline of what the page covers and how the topics relate to each other.
The practical rules:
- One H1 per page. It should describe what the page delivers and generally align closely with the title tag’s topic, though it doesn’t need to be word-for-word identical.
- Headings nest logically. An H2 introduces a major section; H3s under it are sub-points of that section. Don’t jump from H2 straight to H4, and don’t use heading tags for visual styling alone (bolding a paragraph and calling it a heading, or using an H2 because you like the font size, breaks the outline for both readers and crawlers).
- Headings should describe content, not decorate it. A heading like “Let’s Dive In” tells a reader nothing. A heading like “How to Set Up Redirect Rules in Nginx” tells them exactly what’s coming.
- Keywords belong in headings when they fit naturally, especially the H1 and a handful of H2s tied to subtopics people actually search for. Stuffing every heading with the same phrase reads as spam and adds nothing.
Headings are also increasingly relevant for how AI-driven answer engines and Google’s own AI features parse and extract page content, since a clean hierarchy makes it easier for any system, human or machine, to identify which chunk of the page answers which question.
URL Slugs
Google’s URL structure documentation recommends keeping URLs “simple,” built from clear, human-readable words rather than IDs, session parameters, or auto-generated strings. The core guidance:
- Use words separated by hyphens, not underscores or spaces (
/on-page-seo-checklist/, not/on_page_seo_checklist/or/On%20Page%20SEO/). - Keep it short and descriptive. A slug should tell a human what the page is about before they even click.
- Avoid stacking unnecessary parameters, session IDs, or deep, redundant folder paths (
/blog/category/subcategory/seo/on-page/checklist/when/on-page-seo-checklist/says the same thing). - Use lowercase. Mixed-case URLs can create duplicate-content issues on servers that treat
/Page/and/page/as different URLs. - Match the URL to the actual topic. Changing a page’s focus without updating a now-inaccurate slug creates a small but real mismatch signal.
A slug is not a place to cram every target keyword. One clear phrase that matches the page’s topic is enough. If you’re renaming an existing slug for any of the reasons above, redirect the old URL, don’t just let it 404.
Keyword Placement
Keyword placement mechanics haven’t required an exact-match “density percentage” for a long time, and treating it as a formula (aiming for, say, 2% keyword density) is a good way to write worse content for no ranking benefit. What still matters is where terms show up structurally, because that’s what tells both readers and search engines what the page is actually about:
| Location | Why it matters |
|---|---|
| Title tag | Primary relevance signal and the clickable SERP headline |
| H1 | Confirms the page's topic to both readers and crawlers |
| First 100-150 words | Readers and crawlers both use the opening to confirm they've landed on the right page |
| At least one subheading (H2/H3) | Reinforces topical structure for longer pages covering multiple subtopics |
| Image alt text (where relevant) | Ties visual content back to the page topic (see below) |
| Body copy, naturally | Related terms and synonyms should appear as the topic requires, not on a quota |
The test for whether placement is working: read the sentence out loud. If it sounds like something a person would actually say, it’s fine. If it sounds like a keyword was wedged in, rewrite it. Search engines have gotten materially better at matching synonyms and related concepts (this is generally discussed under “topical relevance” or entity matching), so exact-match repetition matters less than covering the topic completely and using the terms a reader would naturally use.
Alt Text
Alt text (the alt attribute on an <img> tag) does two jobs: it’s read aloud by screen readers for accessibility, and it’s one of the only text signals Google has for understanding what an image shows, since Google Images guidance explicitly recommends “descriptive and contextual” text over generic labels.
Google’s own example of the progression from weak to strong image description: a bare “puppy” is functional but thin. “Dalmatian puppy playing fetch” gives real context. That’s the standard to write toward, specific and accurate, not padded.
What to avoid, per Google’s documented guidance:
- Missing alt text entirely on images that convey meaningful content (purely decorative images, like a background texture, can legitimately use an empty
alt=""). - Keyword stuffing, Google’s own bad-example is alt text reading like “puppy dog baby dog pup pups puppies doggies pups litter.” That’s flagged directly as spam behavior, not just unhelpful.
- Generic filenames as a substitute,
IMG_4821.jpgwith no alt attribute tells neither a screen reader nor Google anything. - Alt text disconnected from the surrounding content, describe what the image actually shows, not what you wish it showed for keyword purposes.
There’s no official character limit for alt text. Write a genuine, accurate description; most end up somewhere in the range of a short sentence or phrase because that’s how much detail is usually needed to describe an image accurately.
One more distinction: alt text is different from an image’s file name, caption, and surrounding text, all of which also feed image relevance, but those are separate elements with separate jobs. Renaming IMG_4821.jpg to dalmatian-puppy-playing-fetch.jpg before upload is a small, genuine improvement; it is not a substitute for writing the alt attribute itself.
Content Formatting
This is narrower than a full readability or UX guide, just the mechanical formatting choices that affect how both readers and crawlers parse a page:
- Short paragraphs. Long unbroken blocks of text get skipped by scanning readers. Two to four sentences per paragraph is a reasonable working default, not a rule.
- Lists and tables for genuinely listable or comparable information. If you’re describing steps, options, or a comparison, use a numbered list, bullet list, or table instead of burying it in prose. Don’t force content into a list format just for visual variety when it isn’t actually list-shaped.
- Bold sparingly, for terms or phrases that matter, not entire sentences. Overuse defeats the purpose, if everything is emphasized, nothing is.
- Descriptive subheadings that let a reader scan the page and find their answer without reading top to bottom. This overlaps with the heading-hierarchy guidance above; the two work together.
Quick Reference
| Element | What to check |
|---|---|
| Title tag | Unique per page, ~50-60 characters / under ~600px, primary topic near the front, no boilerplate repetition |
| H1 | Exactly one per page, matches the page's actual content |
| Heading hierarchy | H2s and H3s nest logically, no skipped levels, headings describe (not decorate) |
| URL slug | Lowercase, hyphenated, short, matches current topic, redirected if changed |
| Keyword placement | Present in title, H1, opening paragraph, at least one subheading, natural throughout |
| Alt text | Descriptive and specific, no stuffing, empty alt for purely decorative images |
| Formatting | Short paragraphs, real lists/tables where content is list-shaped, sparing bold, scannable subheadings |
These elements reinforce each other rather than working in isolation. A title tag, H1, URL slug, and opening paragraph that all describe the same topic in consistent (not identical) language give both readers and search engines a clear, repeated confirmation of what the page is about. When those four elements disagree, mismatched slug, generic H1, title about something slightly different, that’s usually a sign the page has drifted from its original purpose or was optimized piecemeal over time rather than as a whole.
Get these right and you’ve handled the layer of on-page SEO that’s entirely within your control at the HTML and content level. Everything downstream of this (how fast the page loads, how it’s linked internally, what schema wraps it, how the meta description pitches it in search results) is a separate set of decisions covered elsewhere.