# On-page SEO: what to check on every page (with a 14-point checklist) On-page SEO is everything you control on the page itself to help search engines understand it and people choose it: the title, the URL, the headings, the words, the links, the images, and a handful of tags in the HTML that visitors never see. This guide covers all of it, in the order it matters, with the rule for each element taken from Google’s own documentation rather than from other guides, and tested against pages that rank today. It also includes something the other guides do not: a scan of 73 pages that rank on Google’s first page today, showing what Google actually did with their titles, and what happened to those pages between the HTML and the browser. If you only have ten minutes, skip to the checklist near the end and run it on your most important page. If you have an hour, read the elements first. ## What on-page SEO is, and is not A page ranks when a search engine can tell what it is about, decides it is a good answer, and shows a result people want to click. On-page SEO covers all three: - **Understanding.** The title element, headings, URL, body text, image alt text and structured data tell search engines what the page is about. - **Quality.** Whether the content answers the question the searcher had, says something the other results do not, and comes from someone who knows the subject. - **Presentation.** What the search result looks like: the title link and the snippet, both of which Google builds from what is on the page. The three kinds of SEO overlap, but the division of labor is clear enough to put in a table. | Kind | On-page | Technical | Off-page | | --- | --- | --- | --- | | What it is | What the page says and how it is marked up | Whether search engines can reach, render and index the page | What other sites say about the page | | Who fixes it | The writer or editor | A developer or the platform | Whoever earns the links | | Examples | Title, meta description, headings, content, internal links, images, structured data | Crawlability, sitemaps, redirects, speed at the server, HTTPS | Backlinks, mentions, reviews | | How fast it changes | Every edit, every template update | Every deploy | Slowly | Two technical items, canonicals and JavaScript rendering, sit close enough to the page that this guide treats them as on-page. Writers do not set them, but writers get blamed when they go wrong.  ## The on-page elements, with what Google says about each Most on-page advice is passed from one guide to the next without a source. Where Google documents a rule, it is quoted and linked here. Where Google is silent, that is said too. ### 1. The title element The title element is the strongest single statement of what a page is about, and it is usually the text Google turns into the blue title link in results. Google’s [documentation on title links](https://developers.google.com/search/docs/appearance/title-link) asks for titles that are “unique to the page, clear and concise, and accurately describe the contents of the page”, and says to make sure “every page on your site has a title specified in the title element”. Four things in that documentation contradict common advice: - **There is no length limit.** Google says “there’s no limit on how long a title element can be”. Title links are truncated to fit the device, so the rule is to put the important words first, not to count characters. The 50 to 60 character guideline is a rough estimate of what survives truncation on desktop. - **Google rewrites titles it does not trust.** Half-empty titles (“| Site Name”), boilerplate that differs by one word across pages, titles with stale years, and titles that do not match the page are replaced from other sources: the page’s main visible heading, the `og:title`, other prominent text, and the anchor text of links pointing at the page. - **The site name is handled separately.** Google [shows a site name](https://developers.google.com/search/docs/appearance/site-names) beside the result and may drop a brand suffix from the title link when it would repeat it. Our scan below puts a number on how often that happens. - **Repeating words is a spam signal.** Keyword stuffing in a title “doesn’t help users and can look spammy”, and anywhere on the page it violates Google’s [spam policies](https://developers.google.com/search/docs/essentials/spam-policies). **What we found.** We fetched the 79 organic results on Google’s first page for ten SEO and marketing queries, from on-page SEO to keyword research to content marketing (the full list is under the chart), compared each page’s title element with the title Google showed in the result, and read the page’s H1. Of the 70 pages where the comparison was clean: - Google showed the title element unchanged for **44%**. - It dropped or moved the site name and left the rest alone for **43%**. - It rewrote the wording for **13%**. - When the H1 matched the title element, Google kept the title in **11 of 12** cases. - When the title ran past 60 characters, Google changed it in **12 of 15** cases, nearly always by cutting the site name.  The rewrites are the useful part. In three of the four clearest cases, the title Google showed was the page’s own H1, word for word. Ahrefs titled its keyword research guide “Keyword Research: The Beginner’s Guide by Ahrefs” and Google showed the H1, “How to Do Keyword Research for SEO (Start to Finish)”. WP Engine’s “Using Google Docs with WordPress | WP Engine” became its H1, “How to Integrate Google Docs with WordPress”. Semrush’s “What Are Meta Tags? How to Use Them for Google SEO” became its H1, “Meta Tags: What They Are & How to Use Them for SEO”.  So the practical rule is simpler than the character-counting advice: write one title, use it as both the title element and the H1, put the words people search for at the start, and let Google handle the brand. ### 2. The meta description The meta description does not affect rankings. It affects whether people click, because Google may use it as the snippet under the title link. Google’s [snippet documentation](https://developers.google.com/search/docs/appearance/snippet) says snippets are “primarily created from the page content itself” and the description tag is used when it gives “a more accurate description of the page than would be possible purely from the on-page content”. When it does not, Google writes its own snippet from the page text, which is how a page with no description ends up with a snippet made of navigation links. Google’s guidance, in order of importance: make each description unique; summarize the whole page rather than one anecdote from it; be specific (a single product name is too short); include details such as author, date or price when they matter; and do not write a list of keywords, which is “less likely to be displayed”. Large sites can generate descriptions programmatically provided they are “human-readable and diverse”. There is no length limit here either; the snippet is truncated to fit the device. In our scan, 6 of 73 page-one results had no meta description at all (Wikipedia pages, a protocol spec, a free tool page), and 13 had descriptions over 160 characters. Neither stopped them ranking, which is the point: the description is for the click, not the rank.  ### 3. The URL Google’s [URL structure guidance](https://developers.google.com/search/docs/crawling-indexing/url-structure) is specific: “use readable words rather than long ID numbers”, separate words with hyphens rather than underscores (“use hyphens instead of underscores”), keep the structure simple, and remove parameters that do not change the content. Google treats `/Apple` and `/apple` as different URLs, so pick one case and stick to it. Keep slugs short, leave out dates unless the page is about that date, and never let tracking parameters or session IDs become the URL people link to. One page, one URL: if the same content answers at two addresses, pick one and canonicalize the other (element 9). Changing a URL after publishing costs more than it gains. The words in the slug are a minor signal, and every change needs a redirect and loses some of the links pointing at the old address. If you publish through a CMS, set the slug before the page goes live; Workover’s WordPress sync [sends the slug with the post](https://workover.io/docs/pushing-to-wordpress) so it is not generated from a working title. ### 4. The H1 and the headings Give the page one clear main heading that matches the title element, and make it, in Google’s words, “the most prominent text on the page”, usually by putting it in the first visible `