On-page SEO: a practical checklist
On-page SEO is the part of ranking you fully control: no outreach, no backlinks to chase, just the elements inside a page you can fix today. Yet it is where most pages leak the easiest wins — a truncated title, a heading that says nothing, an image with no alt text, a page aimed at the wrong [search intent](/glossary#search-intent). This is a practical, ship-it checklist for [SEO](/glossary#seo): title tags and meta descriptions, heading hierarchy, matching intent, content quality, image optimization, internal links, and schema — each one a box you can tick this week. Run it top to bottom on any page and you close the gap between content that exists and content that ranks.
What is on-page SEO, and what should you check first?
On-page SEO is everything you optimize inside a page itself — title, headings, content, images, links, and schema — to help it rank and get cited. Start with search intent: confirm your page delivers the format the query wants, because no on-page fix rescues a page aimed at the wrong goal.
On-page SEO is distinct from off-page. Off-page work — backlinks, brand mentions, digital PR — happens on other people's sites and takes time and their cooperation; on-page work happens entirely on yours, which makes it the fastest, most controllable ranking lever you have.
Because you control it, on-page SEO is where a checklist pays off. Ranking factors you cannot see or influence do not belong on a to-do list, but every on-page element is inspectable and fixable in an afternoon — so a systematic sweep reliably surfaces easy wins.
Start with intent, not mechanics. Before you touch a title or a heading, confirm the page delivers what the query wants — a how-to for a 'how to' search, a comparison for a 'vs' search — because a page that answers the wrong search intent cannot be optimized into ranking.
The rest of the checklist assumes you picked the right target. On-page optimization amplifies a page that matches a real query with real demand, so pair this sweep with keyword research that ranks — polishing a page nobody searches for is effort spent on an empty room.
- Search intent — does the page deliver the format the query wants?
- Title tag and meta description — click-worthy and the right length.
- Heading hierarchy — one H1, logical nesting, question-shaped H2s.
- Content — deep, original, and genuinely answers the query.
- Images, internal links, and schema — optimized and machine-readable.
How do you write title tags and meta descriptions that earn the click?
Write one unique title tag per page, front-loaded with the primary keyword and kept near 50–60 characters so Google doesn't truncate it. Add a meta description of roughly 150–160 characters that reads like ad copy — it rarely affects ranking, but a compelling one lifts click-through from the results page.
The title tag is your strongest on-page relevance signal and your headline in the results. It tells Google what the page is about and it is usually the clickable line a searcher reads first, so it does double duty: it helps you rank and it earns the click once you do.
Front-load the primary keyword, keep every title unique, and stay near 50–60 characters. Google truncates longer titles with an ellipsis, boilerplate like a repeated brand suffix wastes the space, and two pages sharing a title tell the engine they are interchangeable — write one specific title per page.
A meta description is not a ranking factor, but it is free ad copy. Google often rewrites it and it does not move rankings directly, yet a clear, benefit-led 150–160-character summary raises click-through from the SERP — and more clicks on the same ranking is still more traffic.
Match the promise to the page. A title or description that oversells what the content delivers earns the click and then the back-button, and that quick bounce teaches the engine your page disappointed — so write the sharpest honest version, never clickbait you cannot cash.
- One unique title per page, primary keyword front-loaded, ~50–60 characters.
- No duplicate or boilerplate-padded titles across the site.
- Meta description ~150–160 characters, written like ad copy.
- Title and description honestly match what the page delivers.
Does your heading hierarchy make the page scannable for readers and machines?
Use one H1 that states the page's topic, then H2s and H3s in a logical nesting order — never skipping levels for visual size. Question-shaped H2s with a tight answer beneath each one help readers scan and give engines clean, extractable blocks to lift into featured snippets and AI answers.
Use exactly one H1, and make it describe the page. The H1 is the page's headline for readers and a strong topical signal for engines, so state the subject plainly in it — and don't dilute the signal with multiple H1s or skip it for a purely visual title.
Nest H2s and H3s by meaning, not by font size. Headings are an outline a machine reads to understand your page's structure, so an H3 should sit under the H2 it belongs to — never pick a heading level because it looks the right size, style it with CSS instead.
Shape H2s as the questions your readers actually ask. Retrieval systems match a searcher's question against your headings, so 'How do you write a title tag?' beats a vague label like 'Titles' — and it hands the engine a ready question-and-answer pair to lift.
That structure is exactly what wins the answer box. A question-shaped heading with a 40–60-word answer beneath it is the shape Google copies into a featured snippet, which is why the same headings that organize your page also help you win featured snippets and AI Overviews.
- Exactly one H1 that states the page's topic.
- H2s and H3s nested by meaning, not chosen for visual size.
- Question-shaped H2s that mirror real searches.
- A tight answer directly under each heading — extractable on its own.
How do you match search intent and prove the content is worth ranking?
Match intent by delivering the format the SERP already rewards — a guide, a comparison, a tool — then prove quality with genuine depth, first-hand specifics, and clear sourcing. Engines rank the page that satisfies the searcher, so covering the topic completely beats stuffing the keyword a dozen times.
Intent decides the format before quality even matters. Search your target query and read what already ranks: if the first page is all step-by-step guides, the engine has judged the intent instructional, and a sales page will not rank there no matter how polished — match the format the SERP rewards.
Quality, for a machine, means covering the topic completely. A page that answers the main question and the follow-ups a reader would ask next signals genuine depth, so map the subtopics and entities the query implies and cover them — thin content that touches the keyword and stops gets out-ranked by the page that finishes the job.
Original, first-hand specifics are what separate you from the reword pile. Real numbers, screenshots, examples, and a point of view are hard to fake and exactly what Google's helpful-content signals and AI engines reward — generic text spun from the top ten results adds nothing an engine cannot already quote elsewhere.
Place keywords naturally, and let intent choose them. Use the primary term where it reads well — the title, an early paragraph, a heading or two — but write for the reader; the keyword sets worth targeting come from keyword research that ranks, and matching search intent matters far more than hitting a density.
- Read the SERP and deliver the format it already rewards.
- Cover the whole topic — the main question and its follow-ups.
- Add first-hand specifics: real numbers, examples, a point of view.
- Place keywords naturally; match intent, not a density target.
Are your images and internal links pulling their weight?
Give every meaningful image descriptive alt text, a readable filename, a modern compressed format, and explicit dimensions so it loads fast without shifting layout. Then link out from the body with descriptive anchors to related pages — internal links spread authority and give both crawlers and AI a path to your best content.
Alt text does two jobs at once. It describes the image for screen-reader users, which is an accessibility requirement, and it tells engines what the image shows — so write what is genuinely in the picture, skip 'image of', and let decorative images carry empty alt so they are ignored.
Filenames, format, and dimensions decide how fast the image loads. A descriptive filename adds a little relevance, a modern compressed format like WebP or AVIF cuts the bytes, and explicit width and height stop the layout jumping as it loads — all of which protect your Core Web Vitals scores.
Internal links are the cheapest authority you can move on-page. Every descriptive, in-body link passes ranking strength to the page it points at and gives crawlers and AI a path to find it, so link each new page to related content instead of leaving it stranded — the discipline behind a real internal linking strategy.
Point your links where they do the most work. Link from strong pages to the ones you want to rank, use anchors that name the destination rather than 'click here', and keep the graph dense — the full playbook lives in internal linking: the cheapest SEO lever most sites underuse.
- Descriptive alt text on meaningful images; empty alt on decorative ones.
- Readable filenames, WebP/AVIF compression, explicit width and height.
- Descriptive, in-body internal links from related and stronger pages.
- Anchors that name the destination — never 'click here'.
Does schema markup finish the page — and what's the full checklist?
Add schema markup — Article, FAQPage, or HowTo — so machines read your facts without guessing and can cite you cleanly. Then run the whole checklist top to bottom: one canonical URL, right intent, strong title, clean headings, deep content, optimized images, real internal links, valid structured data.
Schema markup hands engines your facts in a format they read without guessing. JSON-LD types like Article, FAQPage, and HowTo label your author, dates, questions, and steps as explicit data, and that unambiguous structure is what lets classic search show rich results and AI engines cite you cleanly — schema markup is one of the lowest-risk fixes in search.
Only mark up what is genuinely on the page, then validate it. FAQ schema for questions a visitor cannot see violates Google's guidelines and can earn a manual action, so mark up real, visible facts and run every template through the Rich Results Test on the live URL.
One more box guards against duplication: the canonical URL. Declaring a single authoritative address with rel=canonical consolidates ranking signals when the same content is reachable at several URLs, so set the canonical URL on every page and point your internal links at it, not at a redirect.
All of this rests on a page engines can actually crawl and render. On-page optimization is wasted on content a bot cannot reach, so pair this checklist with a technical SEO audit — the foundation that decides whether any of your on-page work is ever seen.
Then make the sweep continuous, not a one-off. Titles drift, images pile up, new pages ship as orphans, and schema falls out of sync — SEOany runs this checklist across every page as your site grows, flagging the gaps and proposing the fixes so on-page SEO stays done, not just done once.
- Search intent — the page delivers the format the query wants.
- Title tag and meta description — right length, unique, click-worthy.
- Headings — one H1, logical nesting, question-shaped H2s.
- Content — deep, original, and genuinely complete.
- Images — descriptive alt, compressed, sized to protect Core Web Vitals.
- Internal links and schema — real anchors, valid structured data, one canonical URL.
Let the agent run this playbook for you
Start free