On-page essentials

Titles, descriptions, heading structure, internal links and structured data - the parts of a page a crawler actually reads.

Title and description

The <title> is the strongest on-page signal you control and it is also the clickable headline in results. Put the specific subject first, then the brand, and keep it under roughly 60 characters so it is not truncated. The meta description is not a ranking factor, but it is the ad copy that decides whether a ranking turns into a click.

<!-- weak: no subject, no specificity -->
<title>Home | Acme</title>

<!-- stronger: subject first, brand last -->
<title>Docker Volume Permissions Fix - Acme Guides</title>
<meta name="description" content="Why a mounted volume ends up owned by root and three ways to fix the permissions, with commands you can paste.">
  • One <h1> per page, matching the intent of the title - not a keyword-stuffed duplicate of it.
  • Descriptions should promise something concrete; they are rewritten by engines when they are generic.
  • Every page needs a unique title. Duplicated titles across a catalogue are the most common self-inflicted problem.

Headings and internal links

Headings are an outline, not a font-size picker. A crawler uses them to understand what each part of the page covers, so nesting matters: h2 sections with h3 subtopics, never a jump from h1 straight to h4. Internal links do two jobs at once - they help a human navigate and they tell the engine which pages you consider important.

<h1>Docker volume permissions</h1>
<h2>Why the mount is owned by root</h2>
<h2>Fix 1: match the container user</h2>
<h3>Setting UID and GID at runtime</h3>
<h2>Fix 2: change ownership after the first start</h2>

<!-- descriptive anchor text beats "click here" -->
<p>See <a href="/guides/docker-compose-basics">Docker Compose basics</a> for the file format.</p>
  • Link to pages with the words a reader would search for, not with "read more".
  • Keep important pages within a few clicks of the homepage - depth weakens signals.
  • Mark links that leave the site appropriately; UGC and sponsored links must be attributed.

Structured data

Structured data is machine-readable metadata that describes what the page is, using a shared vocabulary (Schema.org). It does not improve rankings directly, but it makes a page eligible for rich results - review stars, breadcrumbs, FAQ panels - which raise click-through rate. The JSON-LD below is placed inside a script element of type application/ld+json in the head or body.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Docker volume permissions",
  "datePublished": "2026-09-18",
  "dateModified": "2026-09-18",
  "author": { "@type": "Person", "name": "A. Writer" },
  "publisher": { "@type": "Organization", "name": "Acme Guides" }
}
TypeUsed for
Article / BlogPostingEditorial content and its dates
Product + OfferPrice, availability, reviews
BreadcrumbListThe path shown above the result
FAQPageQuestion and answer pairs
OrganizationBrand identity, logo, social profiles
⚠️
Only mark up what a visitor can actually see on the page. Structured data that describes hidden price, fake reviews or missing answers is a manual-action risk, not an optimisation.

FAQ

How many keywords per page?
One primary intent, plus the natural variations a reader would use. Writing for a list of keywords produces text that reads badly and matches nothing well.
Does meta description affect ranking?
No. It affects click-through, which is why it deserves real effort even though it is not a ranking signal.

How search engines crawl and index Technical SEO and measuring it

Last refreshed 2026-09-18.