Your files never leave your device. All processing happens locally in your browser.
How do I run a full on-page SEO audit of a page — title, meta, headings, images, links, content and keyword usage — with a score, without uploading my HTML?
Open AnyTool’s On-Page SEO Analyzer, paste your page’s HTML source (View Source / Ctrl+U), optionally add a target keyword, and it runs a complete on-page audit entirely in your browser. It checks the <strong><title></strong> and <strong>meta description</strong> (present + length), that there is <strong>exactly one H1</strong> with a logical H2–H6 outline, every <strong>image’s alt text</strong> (counting missing ones), <strong>internal vs external links</strong> (and nofollow / empty-anchor / http links), <strong>content length</strong>, the <strong>canonical</strong>, <strong>robots/noindex</strong>, <strong>viewport</strong>, <strong>html lang</strong>, <strong>charset</strong> and <strong>JSON-LD structured-data</strong> presence. With a target keyword it checks whether the keyword is in the title, H1, first paragraph, meta description and URL, plus its body density. Each check is a pass / warn / fail with a concrete fix, grouped into Titles & Meta, Content & Headings, Images, Links and Technical, and everything rolls up into a weighted <strong>0–100 score</strong> with a letter grade and a prioritized fix list. It is broader than a meta-tag checker — a whole-page audit. Honest caveat: it audits only the on-page factors <strong>in the HTML you paste</strong> against common best practices; it is guidance, not a ranking guarantee, and it cannot see off-page factors (backlinks, authority), real rendering or Core Web Vitals. Your HTML is never uploaded.
Optional target keyword checked in title, H1, first paragraph, meta description, URL + body density (flags absence AND stuffing)
Weighted 0–100 score + letter grade, grouped pass / warn / fail checks with a fix each, and a prioritized to-do list
100% client-side — your page HTML is parsed in the browser and never uploaded; safe for staging / unreleased pages
Honest: guidance not a ranking guarantee; can’t see off-page factors, rendering or Core Web Vitals — paste your source
What is
On-page SEO audit
An on-page SEO audit reviews the elements within a single page’s own HTML — title, meta description, headings, image alt text, links, content and technical tags — against best practices and reports what to fix. It covers on-page factors only, not off-page signals like backlinks.
SEO & Web
Related terms
Title tagMeta descriptionH1 headingImage alt textInternal linkingCanonical URLStructured data
Frequently Asked Questions
It checks a page’s title, meta description, headings (one H1), image alt text, internal and external links, content length, canonical, viewport, language and structured data, and gives a score.
An on-page SEO analyzer audits the factors inside a single page’s HTML: the title tag (present and ~50–60 chars), the meta description (~150–160 chars), a single H1 with a logical H2–H6 heading order, image alt text (flagging missing alt), internal versus external links (and nofollow / empty anchors), content/word count, the canonical link, the robots/noindex directive, the mobile viewport, the html lang attribute, character encoding and JSON-LD structured-data presence. AnyTool’s tool grades each as pass, warn or fail with a specific fix, then rolls everything into a weighted 0–100 score — all computed in your browser from the HTML you paste, with nothing uploaded.
A meta tag analyzer only checks the tags in the head. This audits the whole page — headings, images, links, content and keyword usage too — and gives one overall score.
The sibling Meta Tag Analyzer focuses on the meta and link tags in the document head (title, description, robots, canonical, viewport, Open Graph, Twitter Card). The On-Page SEO Analyzer is broader: it also audits the body — the H1 and heading outline, image alt text, internal versus external links, content length and how a target keyword is used across the title, H1, first paragraph and body — and combines all of it into a single weighted score with a prioritized fix list. Use the meta analyzer for a deep meta-tag pass and this one for a whole-page audit.
Yes — your HTML is parsed in your browser and never uploaded, so it is safe for staging, unreleased or internal pages.
The analyzer runs 100% client-side. The HTML you paste is parsed with the browser’s own DOMParser and audited locally — nothing is fetched, uploaded, logged or crawled, and there is no server proxy. That makes it safe for staging, unreleased or internal pages that you cannot or do not want to expose to an online checker. Because most live sites block cross-origin fetches (CORS) and there is no proxy, the reliable path is to open your page, copy its source (View Source / Ctrl+U) and paste it in.
No. It’s guidance on the on-page basics in your HTML. Rankings also depend on off-page factors, rendering and Core Web Vitals it can’t see.
A high score means the on-page fundamentals present in your HTML follow common best practices — a strong foundation, but not a ranking guarantee. The tool cannot see off-page factors (backlinks, domain authority, brand signals), how the page actually renders (JavaScript-injected content, layout), or your Core Web Vitals and real page speed, and Google frequently rewrites titles and snippets. The length and count thresholds are widely-cited approximations, not hard rules. For a full site crawl, rendered analysis and performance data, pair it with Screaming Frog, Google Search Console and PageSpeed Insights.
Detailed Explanation
📖How It Works
What the On-Page SEO Analyzer Does
On-Page SEO Analyzer is a 100% client-side tool that runs a full on-page SEO audit of a single page from its pasted HTML source. Unlike a meta-tag-only checker, it audits the <strong>whole page</strong>: the <strong><title></strong> and <strong>meta description</strong> (present and length), that there is <strong>exactly one H1</strong> with a logical H2–H6 outline, every <strong>image’s alt text</strong> (counting missing ones), <strong>internal vs external links</strong> (and nofollow, empty-anchor and insecure http links), <strong>content length</strong>, the <strong>canonical</strong>, the <strong>robots/noindex</strong> directive, the mobile <strong>viewport</strong>, the <strong>html lang</strong> attribute, character <strong>encoding</strong> and <strong>JSON-LD structured-data</strong> presence. An optional <strong>target keyword</strong> is checked in the title, H1, first paragraph, meta description and URL, with its body density. Every check is a pass / warn / fail with a concrete fix, grouped into Titles & Meta, Content & Headings, Images, Links and Technical, and everything rolls up into a weighted <strong>0–100 score</strong> with a letter grade and a prioritized fix list.
Full-page audit, not just meta tags: title, meta, headings, image alt, links, content, canonical, robots, viewport, lang, charset, JSON-LD
Exactly-one-H1 and heading-order checks; internal vs external link counts with nofollow / empty-anchor / http flags
Optional target keyword checked in title, H1, first paragraph, meta description and URL, plus body density (flags absence and stuffing)
Weighted 0–100 score + letter grade, grouped pass / warn / fail checks with a fix each, and a prioritized to-do list
Reuses the shared text-stats engine for word count; parses with the browser’s DOMParser (regex fallback so it never throws)
⚙️Methodology
How the Audit and Score Are Computed
The engine (onPageSeoEngine.ts, no new dependency) parses the pasted HTML with the browser’s DOMParser, extracting the title, meta description, canonical, robots, viewport, lang and charset; every heading with its level; every image and whether it has an alt attribute; and every <a href> classified as internal (relative / root-relative) or external (absolute), with its rel (nofollow) and anchor text. Non-navigational hrefs (mailto:, tel:, javascript:, bare #fragments) are excluded from the link counts. Visible body text is read after stripping script / style / noscript, and word count comes from the shared textStats() façade. Each check carries a <strong>weight</strong> reflecting how important the on-page factor is; the score is the weighted percentage of checks passed, where a warning counts as half credit and a failure as zero, mapped to a letter grade (A–F). Suggestions are sorted failures-first, then by weight, so the highest-impact fixes surface at the top.
DOMParser-based extraction with a regex fallback for non-DOM environments (SSR / worker)
Links classified internal vs external; mailto / tel / javascript / #fragment excluded from counts
Body text stripped of script/style/noscript; word count via the shared textStats() engine
Weighted score: pass = full weight, warn = half, fail = zero → 0–100 and an A–F grade
Prioritized fix list orders failures first, then by weight (most impactful on top)
⚠️Limitations
Honest Scope and Limitations
This audits only the on-page factors <strong>present in the HTML you paste</strong>, against widely-cited best practices — it is <strong>guidance, not a ranking guarantee</strong>. It cannot see <strong>off-page factors</strong> (backlinks, domain authority, brand signals), how the page actually <strong>renders</strong> (JavaScript-injected content, layout, visual hierarchy), or your <strong>Core Web Vitals</strong> and real page speed. The length and count thresholds (title ~50–60 chars, description ~150–160, 300+ words, one H1) are approximations, not hard rules, and Google frequently rewrites titles and snippets. Your browser cannot fetch most live URLs (cross-origin / CORS) and there is deliberately <strong>no server proxy</strong> (so your page stays private), so the reliable path is to paste your page source. For a full multi-page crawl, rendered analysis and performance data, pair it with a dedicated crawler and Google’s own tools.
On-page guidance only — cannot see backlinks, domain authority or other off-page signals
Sees the HTML as pasted — no JavaScript rendering, no Core Web Vitals, no real page-speed measurement
Length / count thresholds are approximations; Google often rewrites titles and snippets per query
No server proxy — most live URLs are CORS-blocked, so paste your source (which keeps your page private)
For a full crawl and performance data, use Screaming Frog, Google Search Console and PageSpeed Insights
On-Page SEO Analyzer vs typical online SEO checkers
Capability
AnyTool On-Page SEO Analyzer
Typical online SEO checker
Processing
Runs entirely in your browser
Sends your page / URL to a server
Your page
HTML never uploaded, works offline
Page or URL crawled server-side
Staging / unreleased pages
Safe — nothing leaves the device
Exposed to a third-party service
Scope
Full page: title, meta, headings, images, links, content, technical
Sometimes meta-only or a URL crawl
Score
Weighted 0–100 score + letter grade + prioritized fixes
Varies; sometimes no score
Target keyword
Checked in title, H1, first paragraph, meta desc, URL + density
Often absent or basic
Fixes
A concrete fix per check
Sometimes vague or upsold
Honesty
Guidance — can’t see off-page / rendering / CWV
Often implies an authoritative verdict
Cost / signup
Free, no signup
Often gated or ad-heavy
AnyTool audits a page’s on-page factors locally from pasted HTML and uploads nothing, which is safe for staging or unreleased pages. It checks common best practices (length and count thresholds are approximations; Google rewrites titles / snippets), covers on-page factors only (not backlinks, rendering or Core Web Vitals), and is guidance rather than a ranking guarantee — for a full crawl and performance data use Screaming Frog, Google Search Console and PageSpeed Insights. Comparison as of July 2026.