The classic search-engine fundamentals that crawlers and rankings still depend on.
Reached without a redirect chain
Low Each redirect hop is another request an AI client or crawler has to make before it reaches your content, and some give up. A single clean redirect is normal; a chain of them is latency you are adding to every visit. A page that does not answer at all is reported separately, as a refusal rather than a score.
Good looks like The URL answers directly, or through one clean redirect.
Read more about reached without a redirect chain →
The site settles on one host (www vs non-www)
High Serving the same content on both www and non-www (or http and https) splits ranking authority.
Good looks like All variants 301 to one preferred host.
Read more about the site settles on one host (www vs non-www) →
robots.txt is present and not over-blocking
High A stray Disallow: / can hide your whole site from search; a missing robots.txt leaves crawling ambiguous.
Good looks like A valid robots.txt that allows your public pages and links to the sitemap.
Read more about robots.txt is present and not over-blocking →
Not accidentally set to noindex
High A meta robots or X-Robots-Tag noindex removes the page from search entirely — often left on by mistake after launch.
Good looks like No noindex on pages you want found.
Read more about not accidentally set to noindex →
This page declares its canonical URL
High The canonical consolidates ranking signals onto the URL you want and resolves duplicate-content ambiguity. It counts whether you declare it as a link element or an HTTP Link header — Google treats both the same.
Good looks like A self-referencing canonical pointing to the preferred, on-domain URL — as a <link rel="canonical"> element or a Link: rel="canonical" response header.
Read more about this page declares its canonical url →
Mobile viewport is set
High Google indexes mobile-first; without a viewport tag the page renders broken on phones and its rankings are capped.
Good looks like A width=device-width viewport meta tag.
Read more about mobile viewport is set →
Has a title tag
Critical The title is the strongest on-page relevance signal and the first thing a search engine or an answer engine reads to know what a page is. A page with no title is unnamed to a machine.
Good looks like Every page has a unique, keyword-led title element.
Read more about has a title tag →
Title fits a search snippet
Low A title outside roughly 30-60 characters either gets truncated in a search result or is too thin to say what the page is. It's a presentation detail rather than a machine-readability one, which is why it's weighted lightly — the title existing is what actually matters.
Good looks like A title of roughly 30-60 characters — long enough to be specific, short enough to show in full.
Compelling meta description
High It doesn't rank you directly, but it owns the search snippet and lifts click-through.
Good looks like A unique description roughly 70–160 characters — ~120–160 is the sweet spot for a full snippet.
Read more about compelling meta description →
Exactly one H1
High One clear H1 states the page topic to crawlers and AI; none or several muddies the signal.
Good looks like A single H1 that states the page's topic.
Read more about exactly one h1 →
Logical heading order
High A clean H1→H2→H3 structure is how crawlers, screen readers, and AI parse your content.
Good looks like Headings nest in order with no skipped levels.
Read more about logical heading order →
Topic is consistent across title, H1 and URL
Medium When the title, H1, URL, and opening line agree on the topic, relevance is unambiguous.
Good looks like The main topic appears in the title, the H1, the slug, and the first paragraph.
Images have descriptive alt text
Medium Alt text powers image search, gives screen-reader context, and helps machines understand the page.
Good looks like Meaningful images carry concise, descriptive alt text.
Read more about images have descriptive alt text →
Open Graph tags for sharing
Medium OG tags control the preview card when your links are shared or cited — a growing discovery surface.
Good looks like og:title, og:description, og:image and og:url are all set, declared with property=.
Read more about open graph tags for sharing →
XML sitemap is present and referenced
Medium A sitemap speeds discovery and indexing, especially for newer pages with few inbound links.
Good looks like A valid /sitemap.xml, referenced from robots.txt, whose URLs resolve.
Read more about xml sitemap is present and referenced →
Missing pages return a real 404
Medium A soft-404 (a 200 for a missing page) confuses crawlers and can get junk indexed.
Good looks like Unknown URLs return a true 404 with a helpful page.
Read more about missing pages return a real 404 →
Images are optimised
Medium Heavy, unsized images are the most common cause of slow loads and layout shift.
Good looks like Modern formats (WebP/AVIF), lazy-loading below the fold, and explicit width/height.
Language and charset declared
Low A lang attribute and UTF-8 charset help engines, browsers and screen readers render correctly.
Good looks like A valid <!doctype html>, lang attribute, and UTF-8 charset.
hreflang for language variants
Low hreflang serves the right language/region version and prevents duplicate-content confusion.
Good looks like Valid, reciprocal hreflang tags across your language variants.
Analytics is installed
Low You can't improve what you don't measure; no analytics means no baseline and no lead attribution.
Good looks like GA4 (or a privacy-first equivalent) is installed, ideally via GTM.
Search Console / Bing verification
Low Verifying the site is your direct line to index status, errors and search performance.
Good looks like Google Search Console (and ideally Bing) verification is in place.
A favicon is set
Low Your favicon shows next to your result in search and in some AI answer interfaces — a small but real trust and brand signal.
Good looks like A <link rel="icon"> (or apple-touch-icon) pointing at a real icon.
No meta-refresh redirect
Low A client-side <meta http-equiv="refresh"> redirect is slower than a server 301, can be ignored by crawlers, and is treated as a mild cloaking smell.
Good looks like Redirects use a server 301/302, not a meta refresh.