SEO Basics cheat sheet
A scannable SEO Basics reference: 19 short snippets across 11 topics, each linking back to the lesson it came from.
At a glance
| Topic | What it covers | |
|---|---|---|
| How search engines crawl and index | A search engine keeps a queue of URLs waiting to be fetched. It learns about them from links on pages it already knows | lesson |
| On-page essentials | The <title> is the strongest on-page signal you control and it is also the clickable headline in results. Put the | lesson |
| Technical SEO and measuring it | The same content is reachable from many URLs: with and without www, with and without a trailing slash, uppercase paths | lesson |
| Site architecture, URLs and internal linking | Crawlers follow links and pass authority along them. Depth is the number of clicks from the homepage to a page; a page | lesson |
| Structured data and rich results | Structured data is a machine-readable statement about the page. Add JSON-LD inside a script element with type | lesson |
| Content strategy: topic clusters and briefs | A topic cluster is one broad pillar page and a set of focused pages that each answer a narrower question, all linked to | lesson |
| Page speed and Core Web Vitals optimisation | All three are measured on real visits at the 75th percentile, split by device. A green desktop score with a red mobile | lesson |
| Local SEO and Google Business Profile | Name, address and phone must be identical everywhere - the profile, the website, directories and any structured data | lesson |
| Link building and digital PR | A link is a vote, but not all votes are equal. The two properties that matter are the authority of the linking page and | lesson |
| International SEO and hreflang | hreflang uses ISO 639-1 for language and optional ISO 3166-1 alpha-2 for region. It tells an engine which version of a | lesson |
| SEO for JavaScript-rendered sites | How rendering is handled, the difference between SSR, prerendering and client-side rendering, hydration and SPA | lesson |
Quick snippets
How search engines crawl and index
Crawling: how URLs are discovered
# robots.txt - must be served at the root of the host
User-agent: *
Disallow: /admin/
Disallow: /search?
Allow: /
Sitemap: https://example.com/sitemap.xml
Indexing: what actually gets stored
<head>
<title>Wireless Headphones Guide - Buyer Checklist</title>
<meta name="description" content="How to choose wireless headphones: battery, codecs, comfort and noise cancelling.">
<link rel="canonical" href="https://example.com/guides/wireless-headphones">
<meta name="robots" content="index, follow">
</head>Full lesson: How search engines crawl and index →
On-page essentials
Title and description
<!-- 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.">
Headings and internal links
<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>
Structured data
{
"@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" }
}Full lesson: On-page essentials →
Technical SEO and measuring it
Canonicals and duplicate URLs
<!-- on every duplicate variant, point at the same target -->
<link rel="canonical" href="https://example.com/guides/wireless-headphones">
<!-- and enforce it in the server layer, not just in markup -->
# nginx
# return 301 https://example.com$request_uri; # drop http and www once
Core Web Vitals
/* reserve space for media to avoid layout shift */
img { width: 100%; height: auto; aspect-ratio: 16 / 9; }
/* defer non-critical fonts; a font swap reflows the whole page */
@font-face { font-family: Inter; src: url(/inter.woff2) format("woff2"); font-display: swap; }Full lesson: Technical SEO and measuring it →
Site architecture, URLs and internal linking
Flat, deep and hub and spoke
Home
/guides <- hub
/guides/dns <- pillar
/guides/dns/ttl <- spoke, links back to the pillar
/guides/dns/record-types <- spoke
/guides/tls
/pricing
/docs
/docs/api
URLs that survive a redesign
https://example.com/guides/dns/ttl
Rules that pay off later:
lowercase, hyphenated words not /Guides/DNS_TTL
no dates unless truly time-bound not /2026/09/18/dns-ttl
no tracking or session parameters not /dns?utm_source=newsletter
no file extensions where avoidable not /dns-ttl.html
stable once published: changes need a 301
URLs that survive a redesign
<!-- breadcrumbs: visible to users, and mirrored in structured data -->
<nav aria-label="Breadcrumb">
<ol>
<li><a href="/guides">Guides</a></li>
<li><a href="/guides/dns">DNS</a></li>
<li aria-current="page">TTL and caching</li>
</ol>
</nav>Full lesson: Site architecture, URLs and internal linking →
Structured data and rich results
JSON-LD in practice
// inside a script element with type application/ld+json
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "DNS TTL and caching explained",
"description": "What TTL controls at each cache layer and how to plan a cutover.",
"author": { "@type": "Person", "name": "Alex Doe", "url": "https://example.com/authors/alex" },
"publisher": { "@type": "Organization", "name": "Example", "logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" } },
"datePublished": "2026-04-02",
"dateModified": "2026-09-18",
"mainEntityOfPage": { "@type": "WebPage", "@id": "https://example.com/guides/dns/ttl" }
}Full lesson: Structured data and rich results →
Content strategy: topic clusters and briefs
Pillar and cluster planning
Cluster: DNS operations
Pillar /guides/dns primary: dns guide
Spoke /guides/dns/ttl primary: dns ttl
Spoke /guides/dns/record-types primary: dns record types
Spoke /guides/dns/email-records primary: spf dkim dmarc
Spoke /guides/dns/troubleshooting primary: dig command examples
Link rules
pillar -> every spoke, in body copy, descriptive anchor
spoke -> pillar, once, near the top
spoke -> two or three sibling spokes, only where genuinely usefulFull lesson: Content strategy: topic clusters and briefs →
Page speed and Core Web Vitals optimisation
What each metric punishes
<!-- the hero image is usually the LCP element: make it discoverable and correctly sized -->
<link rel="preload" as="image" href="/hero.avif" fetchpriority="high" type="image/avif" />
<img src="/hero.avif" width="1200" height="675" alt="Dashboard overview"
fetchpriority="high" decoding="async" />
<!-- everything below the fold: lazy load it, but never the LCP image -->
<img src="/detail.webp" width="800" height="450" loading="lazy" decoding="async" alt="Report detail" />Full lesson: Page speed and Core Web Vitals optimisation →
Local SEO and Google Business Profile
Multi-location structure and reviews
Each location page needs, at minimum:
- unique local content, not a template with the city swapped
- the full address and a local phone number in text
- the services offered at that location
- staff, opening hours, parking or access notes
- the local business markup above, with that location's @id
- links to nearby locations, not to every locationFull lesson: Local SEO and Google Business Profile →
Link building and digital PR
Campaigns that earn links
Template: original data study
Asset An aggregate only you can produce (your own platform data,
a survey, a public dataset analysed properly)
Angle One clear finding worth quoting in a headline
Proof Methodology, sample size, limitations stated openly
Formats Web page with charts, a chart image set, a CSV download
Outreach Journalists and writers who covered the same topic before
Timing Start outreach the day it publishes, not a week later
Update Refresh annually under the same URL so the links compoundFull lesson: Link building and digital PR →
International SEO and hreflang
Language and country codes
<link rel="alternate" hreflang="en" href="https://example.com/guides/dns/ttl" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/en-gb/guides/dns/ttl" />
<link rel="alternate" hreflang="en-US" href="https://example.com/en-us/guides/dns/ttl" />
<link rel="alternate" hreflang="de-DE" href="https://example.com/de/guides/dns/ttl" />
<link rel="alternate" hreflang="x-default" href="https://example.com/guides/dns/ttl" />
Choosing a structure
Recommendation order for most teams
1. subfolder - simplest to run, one domain, one certificate, one CDN
2. ccTLD - when local trust or legal presence demands it
3. subdomain - only when markets genuinely need separate infrastructure
never: parameters - the effort saved is repaid many times overFull lesson: International SEO and hreflang →
SEO for JavaScript-rendered sites
The rendering options
# what does a crawler actually receive? ask as a plain client, no JS execution
curl -sL -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" \
https://example.com/guides/dns/ttl | head -60
# and then compare with a rendered view
# 1. open the URL in a browser with JavaScript disabled
# 2. check the rendered HTML in the browser devtools after load
# 3. compare the two - anything only in the second is at risk
Testing the rendered output
Weekly check, five minutes
1. curl the URL without JavaScript -> is the content there?
2. Inspect with JavaScript disabled -> does the page work at all?
3. Search Console URL inspection -> does the rendered HTML match?
4. Block the script in devtools -> is a fallback or message shown?
5. Check the canonical in both views -> same URL, no client-side overrideFull lesson: SEO for JavaScript-rendered sites →
FAQ
Is this SEO Basics cheat sheet free to use?
Where do the examples come from?
How do I go deeper than a cheat sheet?
Related cheat sheets
Domains & DNS Web Hosting CDNs & Caching Accessibility
Last refreshed 2026-09-27.