Based on Google Search Essentials and the Search Central docs. No trick replaces a fast, crawlable site with genuinely useful pages. Check the docs before using any feature with a date or “supported” status.
Crawling and indexing
Section titled “Crawling and indexing”- Public content is in the server or pre-rendered HTML with a 200 status. Missing pages return a real 404 or 410, never a 200 “not found” page.
- Links are real
<a href>elements with resolvable URLs. Google does not click buttons, runonclicknavigation or follow#fragmentroutes. - Don’t block CSS, JS or images that are needed to render the page in
robots.txt.robots.txtcontrols crawling, not indexing: usenoindexto keep a page out, and don’t block that page inrobots.txtor Google never sees thenoindex. - Previews, staging, internal search results, thin tag pages and account pages are
noindex. Protect private content with authentication, notnoindex. - The mobile page has the same content, links, metadata and structured data as desktop (mobile-first indexing).
- XML sitemap lists only canonical, indexable 200 URLs, with
lastmodonly when it is accurate (Google ignorespriorityandchangefreq). Link it fromrobots.txtand submit it.
URLs and duplicates
Section titled “URLs and duplicates”- URLs are readable words in lowercase, separated by hyphens, in a logical hierarchy. No session IDs or tracking parameters in internal links.
- One host, one protocol (HTTPS) and one trailing-slash style. Redirect every variant with a 301 to it.
- When a URL changes, 301-redirect the old one permanently, update internal links and the sitemap. Avoid redirect chains.
- Every indexable page has an absolute, self-referencing
rel="canonical". Duplicates point to the preferred URL. Paginated pages each get their own canonical; never canonicalise page 2 to page 1. - Multilingual sites use
hreflangon every version, including a self-reference andx-default. Never auto-redirect by IP or browser language.
Titles, snippets and headings
Section titled “Titles, snippets and headings”- Each page has a unique, concise, descriptive
<title>that leads with the page’s topic and adds the site name briefly. No keyword stuffing or boilerplate titles. Google may rewrite poor titles. - Each page has a unique meta description that summarises it, with the most important information first. Google sets no character limit and may show other text instead; about 50–60 characters for titles and 120–160 for descriptions is a house heuristic that limits truncation, not a Google rule.
- One visible main heading that matches the title’s intent. Headings form a logical outline.
- Use
data-nosnippet,max-snippetornosnippetonly when you need to limit what search and AI features quote. - Social previews:
og:title,og:description,og:url, a 1200×630og:imagewith alt, andtwitter:card. - Articles show a visible author (linked to an author page) and published and updated dates that match
datePublishedanddateModified. - Set the site name with
WebSitestructured data on the home page. The favicon is square, at least 48×48 px, at a stable crawlable URL.
Links and structure
Section titled “Links and structure”- Plan the site map first. Every important page is reachable through crawlable internal links within a few clicks of home. Breadcrumbs show typical user paths; a page in several hierarchies may have several trails.
- No orphan pages. Link up to the hub, across to siblings and down to details. Link text describes the target (“pricing for teams”, not “click here”).
- Categories and tags come from a fixed list in code. Index a tag page only once it has real content (3 or more items).
- Listing and pagination pages link each page with plain
<a href>links. Client-side filters only show or hide items; filter combinations that are not real landing pages arenoindexor not linked. - Mark paid, sponsored or user-generated outbound links with
rel="sponsored"orrel="ugc"(nofollowwhen neither applies).
Images and video
Section titled “Images and video”- Important images are
<img>elements (not CSS backgrounds) with descriptivealt, a descriptive filename and nearby relevant text. - Use responsive images in modern formats (see performance). Add
max-image-preview:largewhere large previews are wanted. - Video has a dedicated watch page, a thumbnail, and
VideoObjectstructured data.
Structured data
Section titled “Structured data”- Use JSON-LD, generated from the same data that renders the page. Mark up only content visible on the page; never invent reviews, ratings or prices.
- One
@graphper page with stable@ids:WebSiteandOrganizationorPersonsite-wide;BreadcrumbList; then the page type (Article/BlogPosting,Product,SoftwareApplication,Event,LocalBusiness,Recipe,JobPosting,VideoObject) where it fits. - Only features in Google’s current Search Gallery can produce rich results. Google no longer shows FAQ or HowTo rich results, so don’t add that markup for Google Search.
- Validate with the Rich Results Test and the Schema Markup Validator. Check the Search Console enhancement reports after release.
Spam policies (never)
Section titled “Spam policies (never)”- Cloaking, sneaky redirects, hidden text or links, keyword stuffing, doorway pages, or link schemes (bought, exchanged or automated links).
- Scaled content abuse: mass-producing pages (by AI or otherwise) mainly to rank, without real value for readers.
- Site reputation abuse (hosting third-party pages to exploit the site’s ranking) and expired-domain abuse.
Launch and monitoring
Section titled “Launch and monitoring”- Verify Google Search Console and Bing Webmaster Tools, and submit the sitemap. Check the page indexing, Core Web Vitals and manual actions reports.
- Before launch: no
noindexorDisallow: /left over from staging, canonicals point to production URLs, redirects for any old URLs, and every template passes the Rich Results Test. - Review indexing and performance reports monthly. Investigate sudden drops by page type and query.