Skip to content
ViewSource

On-Page SEO Audit Checklist: 15 Things to Check in a Page's Source

A practical 15-point on-page SEO audit you can run by reading raw HTML. Covers title tags, meta descriptions, headings, canonical, robots, Open Graph, Twitter Cards, JSON-LD, hreflang, alt text, links, viewport, charset, and page weight.

View Source Online9 min read

Most on-page SEO problems are visible in the first 200 lines of a document’s <head>. You do not need a crawler to find them. You need the raw source and a checklist. Paste any public URL into the analyzer at /#tool and you get the full syntax-highlighted HTML next to a parsed page summary, so you can verify each item below in seconds. This is the checklist, in the order the signals appear in the document.

1. Title Tag Length and Uniqueness

The <title> is the strongest on-page relevance signal and the clickable headline in search results.

What good looks like: 30-60 characters, the primary phrase near the front, and the brand at the end.

How to verify: search the source for <title>. Count characters, not words. Google truncates by pixel width, so a 70-character title full of wide letters may be visually cut off even before a 65-character cap.

Every indexable URL should own a distinct title.

2. Meta Description

The description does not rank you, but it controls the snippet and the click-through rate.

What good looks like: 120-160 characters, written as a reason to click, including the target phrase naturally.

How to verify: look for <meta name="description" content="...">. If it is missing, the search engine writes its own snippet from page text. If it is over 165 characters it will truncate.

3. A Single H1

One <h1> gives the document a clear top-level topic.

What good looks like: exactly one <h1>, matching the page’s intent.

How to verify: count <h1 occurrences. Zero is a fail; three is usually a sign of a theme or component that renders the site name on every block. The analyzer’s heading outline lists every heading in order, so you can see the whole structure at a glance.

4. Heading Order

Headings form an outline, and skipped levels blur that outline.

What good looks like: an h2 should not appear before the h1, and an h4 should not jump directly from an h2.

How to verify: read the heading outline top to bottom. Styling can make an <h3> look like a section title, but the tag is what assistive tech and crawlers read.

5. Canonical URL

The canonical link declares which URL is the preferred version when the same content is reachable through several paths.

What good looks like: <link rel="canonical" href="https://example.com/page/"> pointing at the absolute, live URL.

How to verify: search for rel="canonical". A common bug is a canonical that points at a staging host, a http:// version, or a URL with tracking parameters. It should be self-referential on a normal page.

6. Robots Meta Directive

This controls indexing and link following at the page level.

What good looks like: either no robots meta (defaults to index, follow) or an explicit index, follow. Use noindex only where you mean it.

How to verify: look for <meta name="robots">. A leftover noindex from a staging deploy is one of the most expensive mistakes in SEO, because a canonical will not override it.

7. Open Graph Tags

Open Graph controls how a link renders when shared on social platforms and in many chat apps.

What good looks like: at minimum og:title, og:type, og:image, and og:url.

How to verify: grep the head for property="og:. Missing og:image causes the bland, text-only card. Check the image dimensions too; 1200x630 is the widely supported ratio.

8. Twitter Card Tags

Twitter (X) cards use their own namespace, though they fall back to Open Graph when absent.

What good looks like: twitter:card set to summary_large_image, plus twitter:title, twitter:description, and twitter:image.

How to verify: search for name="twitter:. Everything prefixed twitter: is collected on the analyzer’s metadata panel.

9. Structured Data (JSON-LD)

Structured data helps search engines understand entities: an article, a product, a FAQ, a breadcrumb trail.

What good looks like: valid JSON inside <script type="application/ld+json">, using the correct @type and required properties for that type.

How to verify: find each application/ld+json block and confirm the JSON parses. A trailing comma breaks the whole block silently. The analyzer reports the detected @type values and flags parse errors, so a broken block is easy to spot.

10. Hreflang

For multilingual or multi-region sites, hreflang tells search engines which language and region each URL targets.

What good looks like: reciprocal link rel="alternate" hreflang="..." tags, including an x-default.

How to verify: look for rel="alternate" with an hreflang attribute. Every target should point back, or the annotations are ignored. Hreflang is not a ranking boost; it is a routing instruction for the correct audience.

11. Image Alt Text

Alt text describes an image for screen readers and for search engines when the image cannot be rendered.

What good looks like: every meaningful <img> has a descriptive alt. Purely decorative images use alt="".

How to verify: count <img tags against images with an alt attribute. The analyzer totals images and images missing alt, which exposes templated galleries and product grids that omit descriptions.

Internal links spread authority and help crawlers discover pages. External links support claims and context.

What good looks like: a healthy ratio of internal links, with descriptive anchor text. Avoid “click here”.

How to verify: the link table splits internal, external, and nofollow counts and lists the external domains, so you can spot link schemes or a footer stuffed with outbound links.

13. Nofollow and Sponsored Attributes

rel="nofollow" tells crawlers not to pass authority. rel="sponsored" and rel="ugc" are the modern, more specific alternatives.

What good looks like: user-generated and paid links marked appropriately; editorial links left clean.

How to verify: the link panel counts nofollow links. Blanket-nofollowing your own internal links is a quiet, self-inflicted wound worth checking for.

14. Viewport and Charset

The viewport meta tells mobile browsers how to scale the layout. The charset declaration tells the browser how to decode bytes.

What good looks like: <meta name="viewport" content="width=device-width, initial-scale=1"> and <meta charset="utf-8"> as the first thing in <head>.

How to verify: both are shown in the page info panel. A missing viewport forces a zoomed-out desktop layout on phones and hurts mobile usability signals.

15. Page Weight and Resource Count

HTML size, script count, inline bytes, and stylesheet count all feed Core Web Vitals, and speed is a ranking factor.

What good looks like: lean, compressed HTML with deferred or async scripts and a small number of stylesheets.

How to verify: the analyzer reports the HTML byte size, compression, the number of scripts and stylesheets, and the inline style and script byte totals. Cross-check with the DNS, TCP, TLS, TTFB, and download timings from the same run. If TTFB dominates, the problem is the server; if download dominates, the problem is page weight. The blog has a companion piece on reading those timings in order.

Putting the checklist to work

Pick your three highest-traffic URLs and run each through the source analyzer. Record the status of all 15 checks in a spreadsheet, then fix in order of blast radius: noindex and broken canonicals first, then title and heading structure, then metadata, then performance. Re-run the same URLs after the fix and confirm the checks flipped from warn or fail to pass. Doing this by hand teaches you what your templates actually emit.

on page seo auditseo checker freehtml seo checklistview source seo

Put this into practice

Paste any URL into the analyzer to read its source, run an SEO audit, and grade its security headers — free, no signup.

Analyze a page