# On-page SEO: every element explained, with an audit checklist

> On-page SEO covers a page's content, title, meta description, headings, URL, links, images and markup. What Google says each does, and how to check it.

- URL: https://computese.com/on-page-seo/
- Author: Duong Quan Nguyen, CEO, Computese
- Published: 2024-06-24
- Updated: 2026-09-25
- Topics: SEO

## In short
- On-page SEO is everything you control on the page itself: the main content and the intent it answers, the title element, meta description, headings, URL, internal links, images, structured data, canonical tag, and author and date information.
- Google writes title links and snippets itself, from the title element, headings, page text and links. A unique, accurate title and description give it the best material; boilerplate titles get rewritten, and Google says it does not rank on the description.
- By Google's own account, keywords in the URL barely matter, and word count, heading order and E-E-A-T itself are not ranking factors. The words people search for belong in the title, main heading, alt text and link text of a page that answers the query.
- Structured data must describe only what readers can see. Google stopped showing FAQ rich results on May 7, 2026, and needs no special markup for AI Overviews.
- Change a page's date only when its content changes substantially. Google lists fake freshness as a warning sign; an accurate sitemap lastmod, and IndexNow for Bing, are the honest ways to announce an update.

On-page SEO is the work done on a page itself so that search engines understand it and searchers choose it: the main content and the search intent it answers, the title element, meta description, headings, URL, internal links, images, structured data, canonical tag, and author and date information. Links from other sites are off-page SEO.

This is the reference for each element: what it is, what Google's documentation says it does, how to write it, a code sample where one helps, and the mistake that most often undoes it. An audit table closes the post. To choose which pages to work on first and measure the result, follow [the on-page SEO process](https://computese.com/improving-website-rankings-through-on-page-seo/); for a shorter list across a whole site, use the [14-point SEO checklist](https://computese.com/seo-tips-for-websites-boost-your-online-presence/).

## What on-page SEO covers, and what it does not

[Google Search Essentials](https://developers.google.com/search/docs/essentials) sums up on-page SEO in one of its key best practices: use the words people would use to look for your content, and place them in prominent locations on the page, such as the title and main heading, alt text and link text. Google's [explanation of how it ranks results](https://www.google.com/search/howsearchworks/how-search-works/ranking-results/) says the same from the other side: the most basic signal that content is relevant is that it contains the keywords of the query, for example in the headings or body text.

On-page work is one of three layers, and each fails in its own way:

| Layer         | What it covers                                                     | Examples                                                                                              |
| ------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
| On-page SEO   | What the page says, and how its HTML describes it                  | Main content, title element, meta description, headings, URL, links, images, structured data, bylines |
| Technical SEO | Whether search engines can crawl, render and index the page at all | robots.txt, status codes, JavaScript rendering, XML sitemaps, page speed                              |
| Off-page SEO  | What the rest of the web says about the page                       | Links from other sites, mentions, reviews                                                             |

The layers depend on each other. A page Google has not [crawled and indexed](https://computese.com/how-google-search-engine-works/) cannot rank however good its title is, and no on-page change stands in for [links from other sites](https://computese.com/what-are-backlinks-for-seo/). The crawling, rendering and indexing layer has its own guide, [technical SEO](https://computese.com/technical-seo/). For the whole loop of auditing, fixing and measuring a site, see [how to improve SEO](https://computese.com/how-to-improve-seo-a-comprehensive-guide/).

Some popular on-page factors are not factors at all. Google's [SEO Starter Guide](https://developers.google.com/search/docs/fundamentals/seo-starter-guide) lists them among the things it believes you should not focus on:

- **The keywords meta tag.** Google Search does not use it.
- **Keywords in the domain name or URL path.** Alone, they have hardly any effect beyond appearing in breadcrumbs.
- **Content length.** There is no word count target, minimum or maximum, for ranking.
- **The number and order of headings.** Semantic order helps screen readers, but it does not matter to Google Search.
- **E-E-A-T as a ranking factor.** Google's answer is that it is not one.
- **A duplicate content "penalty".** The same content under several URLs is inefficient, but it does not cause a manual action.

## Search intent and the main content

**What it is.** Search intent is what the person searching wants to learn, do or find. The main content is the part of the page that serves it, as opposed to navigation, sidebars, ads and footers.

**What Google says.** Before ranking anything, Google works out [the intent behind a query](https://www.google.com/search/howsearchworks/how-search-works/ranking-results/) with language models and a synonym system, so a page that says "adjust laptop brightness" can match a search for "change laptop brightness". The Starter Guide says content people find compelling and useful will likely influence your presence in search results more than any of its other suggestions, and describes that content as easy to read, unique, up to date and helpful. Google's [guidance on helpful content](https://developers.google.com/search/docs/fundamentals/creating-helpful-content) asks whether a reader leaves feeling they learned enough to reach their goal, and whether the main heading or page title gives a descriptive, helpful summary of the content.

**How to get it right.**

1. Search the query yourself and note what kind of page ranks: guides, product pages, tools, comparisons or videos. Make sure yours is the same kind before you tune anything else.
2. Answer the query in the opening lines, in the words people search with, then give the detail. Bing's [webmaster guidelines](https://www.bing.com/webmasters/help/webmaster-guidelines-30fba23a) ask for the same thing: essential information near the top, and each URL focused on a single topic.
3. Cover what the reader needs next. [Semantic SEO](https://computese.com/semantic-seo/) explains how to map a topic's entities and questions; the queries that already show a page in Search Console are the best record of what is missing, and [finding untapped SEO opportunities](https://computese.com/the-untapped-key-in-seo/) shows how to read them.
4. Make the main content easy to tell apart from everything around it. Google's [guide to generative AI features](https://developers.google.com/search/docs/fundamentals/ai-optimization-guide) names that as part of a good page experience.

**Common mistake.** Writing one page for every phrasing of a query. The generative AI guide says creating separate content for every variation of how people search, primarily to manipulate rankings, violates Google's scaled content abuse policy, and that its systems understand relevance without an exact match. Repeating a phrase until it sounds unnatural is [keyword stuffing](https://developers.google.com/search/docs/essentials/spam-policies), which Google's spam policies prohibit.

## The title element and title links

**What it is.** The `<title>` element inside the page's `<head>`. Browsers show it in the tab and in bookmarks; Google uses it, with other text on and around the page, to generate the title link, the clickable headline of a search result.

**What Google says.** Google [generates title links automatically](https://developers.google.com/search/docs/appearance/title-link) from several sources: the `<title>` element, the main visual title, heading elements such as `<h1>`, the `og:title` meta tag, other large and prominent text, anchor text on the page, the text of links pointing to the page, and WebSite structured data. It calls the title link often the primary piece of information people use to decide which result to click. There is no length limit on the element, but the title link is truncated as needed to fit the device width. After you change a title, Google has to recrawl and reprocess the page, which can take a few days to a few weeks.

![Arrows run from a page's browser tab title, its large main heading and a link on another page into one search result card, whose orange headline is the title link built from them.](https://computese.com/images/blog/on-page-seo/title-link.f5ea040a8e-1536.webp)

*Google builds the headline from several parts of the page and the links to it, so a title element that disagrees with them may be replaced.*

**How to get it right.**

- Give every page its own title that describes that page. Avoid vague labels such as "Home" or "Profile".
- Keep it concise, and put the site name at the start or the end, separated by a hyphen, colon or pipe.
- Make the main visible heading say the same thing, ideally in the first visible `<h1>`, so the page has one clear main title.
- Write it in the same language and script as the page.

```html
<head>
  <title>How to test a backup restore: a monthly drill | Example Co</title>
</head>
```

**Common mistake.** A title Google has to repair. The title link documentation lists what triggers a rewrite: half-empty titles such as `| Example Co`, obsolete titles that still carry last year's date, titles that no longer match the page, and the same boilerplate repeated across a group of pages. Its best practices add keyword lists such as "backup, backups, backup testing", which can make a result look spammy. When Google detects a problem, it may build the title link from headings, anchors or other text instead. If results show a title you did not write, fix the page, not the result.

## The meta description and snippets

**What it is.** The `<meta name="description">` tag in the `<head>`: a short summary of the page that readers never see on the page itself.

**What Google says.** The snippet under a title link is [created primarily from the page content](https://developers.google.com/search/docs/appearance/snippet), chosen to preview the part that best relates to each search, so one page can show different snippets for different queries. Google uses the meta description when it describes the page more accurately than text taken from the page. There is no length limit; the snippet is truncated to fit the device. In [a 2009 post on meta tags](https://developers.google.com/search/blog/2009/09/google-does-not-use-keywords-meta-tag), Google said it sometimes uses the description for snippets but not in ranking. Bing treats it differently: its [guidelines](https://www.bing.com/webmasters/help/webmaster-guidelines-30fba23a) say missing, duplicate or overly short titles and meta descriptions may reduce indexing reliability and ranking.

**How to get it right.**

- Write a unique description for each important page. If time is short, Google suggests starting with the home page and the most visited pages.
- Summarize the page in a sentence or two, with the facts a searcher needs: for an article, the author or date; for a product, the price and key details.
- On large database-driven sites, generate descriptions from each page's own data. Google says programmatic descriptions are appropriate there, as long as they read naturally and differ from page to page.
- To limit what Google shows, use the `nosnippet` or `max-snippet:[number]` rules, or the `data-nosnippet` attribute on part of the page.

```html
<meta
  name="description"
  content="A monthly drill that proves your backups restore: pick a sample, restore it to a clean machine, time it and record the result."
/>
```

**Common mistake.** One description on every page, or a string of keywords. Google says descriptions made of long lists of keywords are less likely to be shown as the snippet at all.

## Headings that outline the page

**What it is.** The `<h1>` to `<h6>` elements that name the page and its sections.

**What Google says.** Headings are one of the places where a query's keywords [signal relevance](https://www.google.com/search/howsearchworks/how-search-works/ranking-results/). The Starter Guide recommends breaking long content into sections with headings that help people navigate; as noted above, it also says heading order and count do not matter to Google Search. The title link documentation adds one warning: when several headings carry the same visual weight, Google may use the first one as the title link.

**How to get it right.** Heading order matters to people, because browsers and assistive technologies such as screen readers use headings for in-page navigation. The W3C's [headings tutorial](https://www.w3.org/WAI/tutorials/page-structure/headings/) says to nest headings by rank and to avoid skipping ranks where possible, because a skipped level is confusing. A practical pattern:

- One `<h1>` that states what the page is, in words that match the title element.
- An `<h2>` for each question or task a reader scans for.
- `<h3>` for the steps or parts inside a section.

```text
<h1>How to test a backup restore</h1>
  <h2>Why a finished backup is not proof of recovery</h2>
  <h2>Run the monthly restore drill</h2>
    <h3>Pick a sample</h3>
    <h3>Restore it to a clean machine</h3>
  <h2>Record the result</h2>
```

**Common mistake.** Choosing a heading level for its font size. Style headings with CSS and choose the level from the outline. Headings such as "Introduction" or "More information" are the other waste: they tell a scanning reader nothing about the section.

## URL slugs

**What it is.** The slug is the readable part of the URL path that names the page, such as `backup-restore-testing` in `https://example.com/guides/backup-restore-testing/`.

**What Google says.** Google's [URL structure guidance](https://developers.google.com/search/docs/crawling-indexing/url-structure) recommends readable words rather than long ID numbers, words in your audience's language, hyphens rather than underscores between words, and as few parameters as possible. URLs are case-sensitive: Google treats `/APPLE` and `/apple` as two URLs. The Starter Guide explains why readable words still help even though keywords in the path barely affect ranking: parts of the URL can appear in results as breadcrumbs, and people use them to judge whether a result will be useful.

```text
Good:   https://example.com/guides/backup-restore-testing/
Avoid:  https://example.com/index.php?id=4821&cat=7
Avoid:  https://example.com/Guides/Backup_Restore_Testing/
```

**How to get it right.** Choose the slug when the page is created: a few lowercase words that name the topic, joined by hyphens, with no session IDs or tracking parameters. Then keep it. Bing's guidelines ask for stable URLs, and a proper redirect when one has to change.

**Common mistake.** Renaming the URL of a page that already ranks to fit a keyword in. The gain is close to nothing by Google's account, and the page's visibility then depends on the redirect being right. If a change is unavoidable, use a 301 redirect: Bing's guidelines specify it for permanent moves, and Google's [canonicalization guide](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) treats a redirect as a strong signal that the target should become the canonical URL.

## Internal links and anchor text

**What it is.** Links from one page of your site to another. The anchor text is the visible, clickable text of the link.

**What Google says.** Google [uses links](https://developers.google.com/search/docs/crawling-indexing/links-crawlable) as a signal of relevance and to find new pages; the Starter Guide says the vast majority of new pages Google finds every day are found through links. Google can generally only crawl a link that is an `<a>` element with an `href` attribute. Good anchor text is descriptive, reasonably concise and relevant to both pages, and the words around the link add context. For an image used as a link, Google uses the image's alt text as the anchor text. Every page you care about should have a link from at least one other page on your site, and there is no ideal number of links per page.

![A website drawn as a tree of linked pages that a magnifying glass follows down from the home page. One page on the right, outlined in orange, has only a dashed gap where a link to it should be.](https://computese.com/images/blog/on-page-seo/orphan.cff53c4615-1536.webp)

*Crawlers find pages by following links, so a page that no other page links to is easy to miss.*

**How to get it right.**

- Link from pages on the same subject, in the sentence that explains why the reader should follow the link.
- Use anchor text that makes sense on its own: "backup schedule", not "click here". Lighthouse's [link text audit](https://developer.chrome.com/docs/lighthouse/seo/link-text) flags generic phrases such as "click here", "here", "more" and "learn more".
- Link to the canonical URL of the target, not to a redirecting or parameter version.
- Space links out. Google advises against chaining several links next to each other, because each loses the words around it.

A crawlable link with descriptive anchor text:

```html
<p>
  Before the drill, check that your
  <a href="/guides/backup-schedule/">backup schedule</a>
  covers every server you plan to restore.
</p>
```

A link Google may not follow, with anchor text that says nothing:

```html
<span onclick="go('/guides/backup-schedule/')">Click here</span>
```

**Common mistake.** Orphan pages and links crawlers cannot follow: navigation built from `onclick` handlers on `<span>` or `<div>` elements, or new pages that appear only in a sitemap. Bing's guidelines ask for the same standard `<a href>` links, with relevant anchor text or image alt attributes.

## Images: alt text, file names and formats

**What it is.** The `<img>` element and everything that describes it: the `alt` attribute, the file name, the text around it and the format of the file.

**What Google says.** Google's [image SEO guide](https://developers.google.com/search/docs/appearance/google-images) sets out how images are found and understood:

- Google finds images in the `src` attribute of `<img>` elements, including inside `<picture>`, and does not index CSS background images.
- Alt text is the most important attribute for image metadata. Google uses it with computer vision and the page's content to understand the image, and it doubles as anchor text when the image is a link.
- The file name gives very light clues, so `restore-drill-timeline.webp` says more than `IMG00023.JPG`.
- Supported formats are BMP, GIF, JPEG, PNG, WebP, SVG and AVIF. With `srcset` or `<picture>`, always give a fallback URL in `src`.
- Images are often the largest contributor to page size, so compress them and serve responsive sizes.

**How to get it right.** Place each image next to the text it illustrates, and write alt text that says what the image shows in the context of the page. An image that adds no information, such as a divider, gets an empty `alt=""`. The W3C's [decorative images tutorial](https://www.w3.org/WAI/tutorials/images/decorative/) explains why: screen readers then skip it, while a missing alt attribute can make some of them read out the file name.

```html
<img
  src="/images/restore-drill-timeline.webp"
  alt="Timeline of a restore drill: sample chosen, restored to a test server, files compared, time recorded"
  width="1200"
  height="675"
/>
<img src="/images/section-divider.svg" alt="" />
```

**Common mistake.** Alt text written as a keyword list. Google's image guide shows a stuffed example and says the practice harms users and may cause a site to be seen as spam. The other is putting information only in images: Bing's guidelines say images should support the text on the page, not be the only place the information appears.

## Structured data that matches the visible page

**What it is.** Machine-readable statements about the page in the schema.org vocabulary. Google supports JSON-LD, Microdata and RDFa, and [recommends JSON-LD](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data) as the easiest to implement and maintain at scale.

**What Google says.** Structured data helps Google understand a page and can make it eligible for rich results, such as review stars and carousels. The [general structured data guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies) set the rules: mark up only content that is visible to readers, keep the markup a true representation of the page, include every required property of the feature, and keep time-sensitive information current. Valid markup guarantees nothing; Google decides whether to show a rich result. A structured data manual action removes a page's eligibility for rich results, and Google says it does not affect how the page ranks in web search.

Features also end. Google's [documentation update log](https://developers.google.com/search/updates) records that FAQ rich results were limited to well-known, authoritative government and health sites in September 2023, and stopped appearing in Google Search on May 7, 2026; the documentation was removed in June 2026. How-to rich results were removed in September 2023, and several other types, such as estimated salary and vehicle listing, were dropped by September 2025. For [AI Overviews and AI Mode](https://computese.com/ai-overviews-in-search/), the generative AI guide says structured data is not required and there is no special schema.org markup to add.

| Markup               | What it can do in Google Search, as of September 2026                                  |
| -------------------- | -------------------------------------------------------------------------------------- |
| Article, BlogPosting | Article features such as the title and larger-than-thumbnail images; dates and authors |
| BreadcrumbList       | Shows the page's position in the site hierarchy                                        |
| Organization         | Logo, legal name, address and contact details, for knowledge panels and attribution    |
| Product              | Price, availability and review ratings                                                 |
| FAQPage              | No rich result since May 7, 2026                                                       |
| HowTo                | No rich result since September 2023                                                    |

Check Google's [list of supported features](https://developers.google.com/search/docs/appearance/structured-data/search-gallery) before you build markup for a rich result.

> [!IMPORTANT]
> FAQ rich results no longer appear in Google Search. Keep useful questions and answers in the visible page, where they help readers; do not expect FAQPage markup to change how the result looks.

**How to get it right.** Generate the markup from the same data that renders the page, so the two cannot drift apart. Test it with Google's Rich Results Test, which the guidelines say catches most technical errors for Google's features, and with the [Schema Markup Validator](https://schema.org/docs/validator.html), which checks schema.org markup of any type for syntax mistakes. An example for an article follows in the author and date section.

**Common mistake.** Markup for content the reader cannot see: FAQ answers that exist only in JSON-LD, ratings that appear nowhere on the page, or reviews not written by real users. Google lists hidden content as a reason markup is not shown, and says reviews or ratings not by actual users may lead to a manual action.

## Canonical tags

**What it is.** A `<link rel="canonical">` element in the `<head>` that names the preferred URL when the same content is reachable at several addresses: with and without `www`, with tracking parameters, or through sorting and filter options.

**What Google says.** Google's [canonicalization guide](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) ranks the ways to state a preference: redirects and `rel="canonical"` are strong signals, sitemap inclusion a weak one, and they add up when combined. None is required; without one, Google picks the version it considers best. Declaring one tells Google which URL you want people to see in results, lets it consolidate signals such as links from other sites onto that URL, and saves crawling on duplicates. Google recommends a self-referential canonical on the preferred page itself, absolute rather than relative URLs, and internal links that point to the canonical version. The element only counts inside the `<head>`.

![Three near-identical pages at different addresses send arrows and small chain-link symbols to one larger page outlined in orange, the canonical URL that gathers them.](https://computese.com/images/blog/on-page-seo/canonical.010d5b9501-1536.webp)

*A canonical tag asks Google to fold duplicates into one URL, so links to any version can count toward the page you want shown.*

**How to get it right.** Put the same line on the preferred page and on every variant of it, such as `?utm_source=newsletter`:

```html
<link
  rel="canonical"
  href="https://example.com/guides/backup-restore-testing/"
/>
```

Then check what Google chose. The [URL Inspection tool](https://support.google.com/webmasters/answer/9012289) shows both the user-declared canonical and the Google-selected canonical; the second appears only in the indexed result, because a live test cannot predict it. Bing's guidelines add a caution: canonical tags signal a preference, but they do not replace fixing the duplication at its source.

**Common mistake.** Canonicals that contradict other signals: a sitemap that lists one URL while the canonical names another, `noindex` or robots.txt used to choose a canonical (Google advises against both), or page two of a multi-part article pointing to page one, which Google's [Article documentation](https://developers.google.com/search/docs/appearance/structured-data/article) says to avoid. Lighthouse's [canonical audit](https://developer.chrome.com/docs/lighthouse/seo/canonical) catches the mechanical errors: more than one canonical, an invalid URL, a canonical on another domain, or one that points to the site root.

## Author and date information

**What it is.** A visible byline that says who wrote the page and links to more about them, and visible publication and update dates, repeated in structured data.

**What Google says.** E-E-A-T stands for experience, expertise, authoritativeness and trustworthiness. The Starter Guide says it is not a ranking factor, and the helpful content guidance explains the nuance: Google's systems use a mix of factors that identify content with good E-E-A-T, give it even more weight on topics that could affect people's health, finances or safety, and treat trust as the most important part. Google strongly encourages accurate authorship information, such as bylines where readers would expect them, that lead to more about the author.

For dates, Google's [byline date guidance](https://developers.google.com/search/docs/appearance/publication-dates) says its systems look at several factors to estimate when a page was published or significantly updated. It recommends a prominent visible date labelled "Published" or "Last updated", plus the `datePublished` and `dateModified` properties in Article, BlogPosting or other CreativeWork markup. Google asks that the visible and structured dates match, and that neither be in the future.

**How to get it right.** A visible byline, and markup that says the same thing:

```html
<p>
  By <a href="/authors/jane-doe/">Jane Doe</a>. Published March 4, 2025. Last
  updated September 15, 2026.
</p>

<script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "BlogPosting",
    "headline": "How to test a backup restore",
    "datePublished": "2025-03-04T09:00:00-05:00",
    "dateModified": "2026-09-15T14:30:00-04:00",
    "author": [
      {
        "@type": "Person",
        "name": "Jane Doe",
        "url": "https://example.com/authors/jane-doe/"
      }
    ]
  }
</script>
```

The time zone offsets differ because Google asks for the correct zone, daylight saving time included. The Article guide sets the author rules: list each author in their own `author` entry, give the `@type` and a `url` or `sameAs` that identifies the person, and put only the name in `author.name`, without job titles, honorifics or words like "posted by".

**Common mistake.** One `author` field holding several names, or a `dateModified` that changes on every deploy while the visible date, and the content, stay the same.

## Content freshness without fake date changes

**What it is.** Keeping a page accurate as its subject changes, and saying honestly when it last changed.

**What Google says.** Freshness matters for some queries, not all. Google's [ranking systems guide](https://developers.google.com/search/docs/appearance/ranking-systems-guide) describes "query deserves freshness" systems that show newer content where people expect it, such as reviews of a film just released, and Google's ranking explainer notes that freshness weighs more for current news topics than for dictionary definitions. The helpful content guidance lists two warning signs: changing the date of a page when its content has not substantially changed, and adding or removing large amounts of content to make a site seem fresh, which it says will not work. The Starter Guide's advice is plain: check older content, update it as needed, or delete it once it is no longer relevant.

**How to get it right.**

1. Update when the facts change: a new version, a changed price, a retired feature, a better answer.
2. Change the visible "Last updated" date and `dateModified` together, in the same release as the edit.
3. Update the sitemap's `<lastmod>`. Google [uses it](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap) only when it is consistently and verifiably accurate, generally treats changes to the main content, structured data or links as significant, but not a new copyright year, and ignores `<priority>` and `<changefreq>`.
4. For other search engines, send the changed URL through [IndexNow](https://www.indexnow.org/), a ping protocol supported by Microsoft Bing, Naver, Seznam.cz, Yandex and Yep. Bing's guidelines ask for IndexNow notifications and accurate `lastmod` values.

```xml
<url>
  <loc>https://example.com/guides/backup-restore-testing/</loc>
  <lastmod>2026-09-15</lastmod>
</url>
```

**Common mistake.** A template that stamps "Last updated" with today's date on every page, or a sitemap generator that gives every URL the build time. Both tell search engines something false, and Google relies on `lastmod` only while it proves accurate.

## On-page SEO checklist: an audit table

One pass through a page, element by element. The table is the what; choosing which pages to audit first and measuring what changed is covered in [how to improve rankings with on-page SEO](https://computese.com/improving-website-rankings-through-on-page-seo/).

| Element          | Check                                                                            | Tool                                                                         |
| ---------------- | -------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| Main content     | Answers the query near the top; same kind of page as the results that rank       | A search of the query; Search Console's Performance report                   |
| Title element    | Present, unique, descriptive; agrees with the `<h1>`; site name at one end       | A site crawler such as Screaming Frog SEO Spider or Sitebulb; `site:` search |
| Meta description | Present, unique, summarizes the page; not a keyword list                         | Site crawler; Lighthouse (presence only)                                     |
| Headings         | One clear `<h1>`; `<h2>` and `<h3>` outline the content without skipped levels   | Site crawler; URL Inspection (rendered page)                                 |
| URL slug         | Lowercase words joined by hyphens; no session IDs; unchanged unless redirected   | Site crawler                                                                 |
| Internal links   | Every important page linked from another; `<a href>` links; descriptive anchors  | Site crawler (inlinks); Lighthouse link text audit                           |
| Images           | `<img>` with alt text in context; `alt=""` only for decoration; supported format | Site crawler; URL Inspection (rendered HTML)                                 |
| Structured data  | Valid; describes visible content only; the feature still exists                  | Rich Results Test; Schema Markup Validator; Google's feature list            |
| Canonical tag    | One per page, absolute, in the `<head>`; matches the Google-selected canonical   | URL Inspection; Lighthouse canonical audit                                   |
| Author and dates | Visible byline and dates; markup matches them; each author listed separately     | Rich Results Test; the page itself                                           |
| Freshness        | `dateModified` and `lastmod` change only with substantial edits                  | Sitemap file; your change log                                                |

The [Performance report](https://support.google.com/webmasters/answer/7576553) in Search Console shows which queries bring your site traffic, grouped by query or by page, which is the evidence for the first row. For the rest, a crawler finds the pattern across the site and URL Inspection confirms what Google itself sees on one page.

> [!TIP]
> A passing Lighthouse SEO audit is a floor, not a verdict. Lighthouse [does not evaluate the quality](https://developer.chrome.com/docs/lighthouse/seo/meta-description) of your meta description, only whether one is there.

If you want this done across a site's templates rather than page by page, our [SEO service](https://computese.com/services/seo/) includes on-page fixes to titles, descriptions, headings and internal links, and structured data validated on every release, with each change confirmed in the rendered HTML and in Search Console. It does not promise rankings, because no one can honestly. More guides are under [SEO](https://computese.com/category/seo/).

## Key terms
- **On-page SEO**: Optimizing the parts of a page you control directly, its content and its HTML, so that search engines understand it and searchers choose it.
- **Search intent**: What the person searching wants to learn, do or find. On-page work starts by making the page's main content satisfy it.
- **Title link**: The clickable headline of a Google result. Google generates it from the title element, the main heading, other prominent text and links pointing to the page.
- **Snippet**: The description under a title link. Google builds it mainly from the page content that best matches the search, and sometimes from the meta description.
- **Anchor text**: The visible, clickable text of a link. It tells people and search engines what the linked page is about.
- **Alt text**: The alt attribute of an img element: a short description of the image for screen readers and search engines, also used as anchor text when the image is a link.
- **Canonical URL**: The one URL a search engine shows for content reachable at several addresses. You suggest it with redirects, rel=canonical or a sitemap; Google makes the final choice.
- **Structured data**: Machine-readable statements about a page in the schema.org vocabulary, usually written as JSON-LD, that can make the page eligible for rich results.
- **E-E-A-T**: Experience, expertise, authoritativeness and trustworthiness: qualities Google's systems and quality raters look for in content. Google says it is not itself a ranking factor.
- **Byline date**: The publication or update date Google estimates for a page and may show in results, based on visible dates, structured data and other signals.

## Common questions

### What is on-page SEO?

On-page SEO is the work you do on a page itself so search engines understand it and searchers choose it: the content and the intent it answers, the title element, meta description, headings, URL, internal links, images, structured data, canonical tag, and author and date information. Technical SEO covers whether the page can be crawled and indexed; off-page SEO covers links and mentions from other sites.

### What are the most important on-page SEO factors?

Content that answers the query comes first: Google's SEO Starter Guide says compelling, useful content will likely influence your presence in search results more than anything else it suggests. After that, Google's Search Essentials ask you to put the words people search for in prominent places: the title, the main heading, alt text and link text.

### Is E-E-A-T an on-page ranking factor?

No. Google's SEO Starter Guide says E-E-A-T is not a ranking factor. Its systems use a mix of other signals to identify content that shows experience, expertise, authoritativeness and trust, and Google encourages accurate bylines and author pages because they help readers judge who wrote the content.

### How long should a title tag and meta description be?

Google sets no character limit for either. It truncates title links and snippets to fit the device width, so put the words that identify the page first and keep the rest concise. A title that accurately describes the page matters more than hitting a character count.

### Does on-page SEO matter for AI Overviews and AI Mode?

Yes. Google says its generative AI features are rooted in its core ranking systems, and a page must be indexed and eligible to show with a snippet to appear in them. Google also says you do not need llms.txt files, special markup or content chopped into chunks for AI.

### Should I still add FAQ schema to my pages?

Not for a Google rich result: FAQ rich results stopped appearing in Google Search on May 7, 2026, and Google removed their documentation in June 2026. Questions and answers that readers can see on the page still help them, and any markup you keep must describe only that visible content.

## Sources
1. [Google Search Essentials](https://developers.google.com/search/docs/essentials), Google Search Central
2. [How Search works: Ranking results](https://www.google.com/search/howsearchworks/how-search-works/ranking-results/), Google
3. [Search Engine Optimization (SEO) Starter Guide](https://developers.google.com/search/docs/fundamentals/seo-starter-guide), Google Search Central
4. [Creating helpful, reliable, people-first content](https://developers.google.com/search/docs/fundamentals/creating-helpful-content), Google Search Central
5. [Bing Webmaster Guidelines](https://www.bing.com/webmasters/help/webmaster-guidelines-30fba23a), Microsoft Bing
6. [Optimizing your website for generative AI features on Google Search](https://developers.google.com/search/docs/fundamentals/ai-optimization-guide), Google Search Central
7. [Spam policies for Google web search](https://developers.google.com/search/docs/essentials/spam-policies), Google Search Central
8. [Influencing your title links in search results](https://developers.google.com/search/docs/appearance/title-link), Google Search Central
9. [Control your snippets in search results](https://developers.google.com/search/docs/appearance/snippet), Google Search Central
10. [Google does not use the keywords meta tag in web ranking](https://developers.google.com/search/blog/2009/09/google-does-not-use-keywords-meta-tag), Google Search Central Blog
11. [Headings](https://www.w3.org/WAI/tutorials/page-structure/headings/), W3C Web Accessibility Initiative
12. [URL structure best practices for Google Search](https://developers.google.com/search/docs/crawling-indexing/url-structure), Google Search Central
13. [How to specify a canonical URL with rel="canonical" and other methods](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls), Google Search Central
14. [Link best practices for Google](https://developers.google.com/search/docs/crawling-indexing/links-crawlable), Google Search Central
15. [Links do not have descriptive text](https://developer.chrome.com/docs/lighthouse/seo/link-text), Chrome for Developers (Lighthouse)
16. [Google image SEO best practices](https://developers.google.com/search/docs/appearance/google-images), Google Search Central
17. [Decorative Images](https://www.w3.org/WAI/tutorials/images/decorative/), W3C Web Accessibility Initiative
18. [Introduction to structured data markup in Google Search](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data), Google Search Central
19. [General structured data guidelines](https://developers.google.com/search/docs/appearance/structured-data/sd-policies), Google Search Central
20. [Latest Google Search documentation updates](https://developers.google.com/search/updates), Google Search Central
21. [Structured data markup that Google Search supports](https://developers.google.com/search/docs/appearance/structured-data/search-gallery), Google Search Central
22. [Schema.org Markup Validator](https://schema.org/docs/validator.html), Schema.org
23. [URL Inspection tool](https://support.google.com/webmasters/answer/9012289), Google Search Console Help
24. [Article (Article, NewsArticle, BlogPosting) structured data](https://developers.google.com/search/docs/appearance/structured-data/article), Google Search Central
25. [Document does not have a valid rel=canonical](https://developer.chrome.com/docs/lighthouse/seo/canonical), Chrome for Developers (Lighthouse)
26. [Influence your byline dates in Google Search](https://developers.google.com/search/docs/appearance/publication-dates), Google Search Central
27. [A guide to Google Search ranking systems](https://developers.google.com/search/docs/appearance/ranking-systems-guide), Google Search Central
28. [Build and submit a sitemap](https://developers.google.com/search/docs/crawling-indexing/sitemaps/build-sitemap), Google Search Central
29. [IndexNow](https://www.indexnow.org/), IndexNow.org
30. [Performance report (Search results): Overview and basic setup](https://support.google.com/webmasters/answer/7576553), Google Search Console Help
31. [Document does not have a meta description](https://developer.chrome.com/docs/lighthouse/seo/meta-description), Chrome for Developers (Lighthouse)
