On-page SEO checker
Free public tool that reads the live HTML at any URL and grades seventeen on-page SEO checks with a 0-100 score.
Last updated 2026-08-06
Summary#
The Free On-Page SEO Checker fetches the URL you enter, parses the HTML that came back, and grades seventeen on-page checks into a 0-100 score. It reports the values it found rather than generic advice: the actual title length, the number of H1 tags, the alt-text coverage across your images. It runs at /free-tools/onpage-seo-checker with no account.
Purpose#
On-page SEO is the part you fully control. You cannot make another site link to you and you cannot change how many people search for your topic, but you can set a title, write a meta description, use one H1, and describe your images. Those basics are also the part that quietly breaks: a template change drops a canonical tag, a CMS migration empties every meta description, an editor pastes three H1 tags into a page.
This checker gives you the current state of all seventeen in one fetch.
Overview#
One request is made to the URL you entered, following redirects. Everything else is computed from the HTML that came back: title, meta description, meta keywords, viewport, robots meta, canonical, <html lang>, every heading, every image and its alt attribute, every link split into internal and external, Open Graph and Twitter Card tags, JSON-LD blocks, and the visible word count once scripts and styles are stripped out.
The score starts at 100 and subtracts twelve points for each critical failure and four for each warning, clamped to the 0-100 range.
Benefits#
- Reports real values, not advice. You see
52 chars, not "keep your title short". - Covers seventeen checks in a single fetch, including the ones people forget such as
langand Twitter Card. - Works on any public URL, including a competitor's page.
- Nine headline factors summarize the result before you read the full list.
- No account, no credits.
Use Cases#
- Pre-publish check. Run it on a staging or live URL before you promote it.
- Template regression check. Run it after a deploy on one page of each content type.
- Freelance or agency spot check. A fast, defensible answer to "is this page set up correctly".
- Teaching. The check list is a usable on-page curriculum for a junior marketer.
Requirements#
A public URL returning HTML. Private, loopback and internal hosts are refused, and a page behind a login cannot be read.
Permissions#
Anyone. No account, plan or role. A shared hourly fair-use limit applies per IP address across the free tools.
Cost#
Free. Zero credits.
Navigation Path#
metricvaultai.com → Free tools → On-Page SEO Checker
The page is at /free-tools/onpage-seo-checker.
Inputs#
| Field | Label / placeholder | Required | Valid value | Notes |
|---|---|---|---|---|
| URL | example.com/page | Yes | A bare domain or a full URL with a path | https:// is added if omitted. The placeholder includes a path because this tool is designed for a specific page. |
Helper line: No signup · No credit card · Reads the live HTML at the URL you enter.
Step-by-Step Guide#
- Open
/free-tools/onpage-seo-checker. - Enter the page in the field marked
example.com/page. - Select Check page. The button reads
Checking…and the result area showsFetching and analyzing the page…. - Read the score, scan the nine factor tiles for the red and amber ones, then use the
All checkslist for the exact detail behind each.
Reading the Results#
The score ring. 0-100 with a tier badge and a verdict line:
| Score | Badge | Verdict line |
|---|---|---|
| 80-100 | Strong on-page SEO | The on-page basics are in good shape on this page. |
| 55-79 | Some fixes needed | A few on-page factors are missing or off. See the checks below. |
| 0-54 | Needs work | Several on-page basics are missing. Start with the failed checks below. |
The heading beside the ring reads On-page SEO score, and a How to read it strip shows the bands 80-100 strong, 55-79 some fixes and 0-54 needs work.
On-page factors. Nine tiles, each colored green, amber or red, each showing the measured value:
| Tile | Shows |
|---|---|
| Title tag | Character count, or Missing, with the quality band in brackets |
| Meta description | Character count, or Missing, with the quality band |
| H1 heading | 1 (good), 0 (missing) or <N> (multiple) |
| Heading structure | H1:<n> · H2:<n> · H3:<n> |
| Canonical URL | Set or Missing |
| Structured data | <N> blocks or None |
| Open Graph | Complete or Incomplete |
| Image alt text | <N>% covered or No images |
| Word count | <N> words with the depth band |
Each tile carries an i marker with a short explanation of the factor and what a good value looks like.
All checks. The seventeen checks, each marked pass, warning or critical, with the value that produced the verdict:
| Check | Passes when | Critical when |
|---|---|---|
| HTTPS | The final URL is HTTPS | It is not |
| Status Code | HTTP 200 | Anything else |
| Title Tag | 30 to 60 characters | No title at all |
| Meta Description | 70 to 160 characters | No meta description at all |
| H1 Tag | Exactly one | None |
| H2 Tags | One or more | — |
| Viewport | A viewport meta tag exists | It does not |
| Canonical | A canonical URL is set | — |
| Language | <html lang> is set | — |
| Robots Meta | No noindex | — |
| Image Alt Text | No image is missing alt | — |
| Internal Links | One or more | — |
| External Links | Always reported as a pass | — |
| Open Graph | og:title and og:description both present | — |
| Twitter Card | A twitter:card tag exists | — |
| Structured Data | One or more JSON-LD blocks | — |
| Word Count | 300 words or more | Zero words |
Checks with no critical condition can only pass or warn.
Note: The tiles and the check list use slightly different thresholds on purpose. The Title Tag check passes between 30 and 60 characters, while the Title tag tile reports its quality band using the same range. The Meta description tile calls 120 to 160 characters good, while the Meta Description check passes from 70. Where the two disagree, the check list is what feeds the score.
Examples#
Example: A blog post scores 76 with Some fixes needed. Two warnings drive it: Meta Description at 48 characters and Image Alt Text reporting 14 images, 9 missing alt. The alt-text tile shows 36% covered. Both are single-session fixes and together they return twelve points.
Example: A landing page scores 52. The critical entries are H1 Tag with 0 H1 tags found and Meta Description with Missing meta description. The designer had styled a div as the headline. Changing it to an H1 and writing a description takes the page to 76.
Screenshots#
Tips#
- Read the detail text, not just the color.
Title Tagshows the first eighty characters of your actual title, which often reveals a templating bug. - The
Heading structuretile is the fastest way to spot a page that usesH3for visual size rather than hierarchy. - Alt-text coverage counts images with a genuinely descriptive
alt. Emptyaltattributes are counted as uncovered, which is correct for content images and harsh for decorative ones. - Re-run immediately after each fix. Nothing is cached.
Best Practices#
- Clear the criticals first. Each is worth twelve points, three times a warning.
- Write the title and the meta description for the person deciding whether to click, then check the lengths. Length is a constraint, not the goal.
- Use exactly one
H1per page and letH2carry the sections. It helps this score, the AI-readiness tools, and readers using screen readers. - Fix template-level items once. Canonical, viewport,
lang, Open Graph and Twitter Card are usually set in one place.
Common Mistakes#
- Chasing 100.
External Linksalways passes and several checks can only warn, so a realistic strong page lands in the eighties. Fix the real problems rather than the number. - Checking only the homepage. Templates differ by content type. Check one page of each.
- Ignoring
Word Counton a deliberately short page. A pricing page with ninety words will warn. Judge the warning against the page's job. - Assuming a JavaScript-rendered page is empty. The fetch reads the HTML your server returned, so client-rendered content is not counted.
Limitations#
- One URL per run. There is no crawl. Whole-site auditing is Site Audit.
- Server-rendered HTML only. Content added by JavaScript after load is invisible.
- Parsing is pattern based rather than a full browser render, so unusual markup can be miscounted.
- The checks are technical. Nothing here judges whether the copy is good, whether the keyword is right, or whether the page deserves to rank.
- No structured-data validation beyond counting JSON-LD blocks. Use Schema validator for that.
- No export, history, scheduling or recommendations panel. See Free tools, no account needed.
Troubleshooting#
| Symptom | Likely cause | Fix |
|---|---|---|
That does not look like a valid URL. Try example.com/page | The input is not a plausible hostname | Enter example.com or example.com/page |
Check failed: On-Page SEO check failed: <message> | The fetch failed | Confirm the URL loads in a browser and the domain resolves |
Status Code reports something other than 200 | A redirect chain ended badly, or the page errors | Load the URL directly and follow the redirects |
| Word count near zero on a full page | The page renders content with JavaScript | Check the raw HTML source; consider server-side rendering |
| Alt-text coverage lower than expected | Decorative images use empty alt attributes | Expected behavior; judge the number against how many images are decorative |
Hourly fair-use limit reached (100 light-tool calls/hour)… | Too many free-tool runs from one network within the hour | Wait for the next hourly reset |
FAQs#
How is the score calculated? It starts at 100 and subtracts twelve for each critical check and four for each warning, then clamps the result between 0 and 100.
Why did my score change without me changing the page? Something the checks read changed. A different redirect target, a slow-loading element that was not in the HTML this time, or an A/B test serving a different template are the usual causes.
Does this check my whole site? No. One URL per run. Site Audit in the app crawls a property.
Is it really free? Yes. No account, no card, no credits.
Can I run it on a competitor? Yes. It reads publicly served HTML, the same as any browser.
What does the in-app version add? On-Page SEO Checker runs the same seventeen checks inside your workspace, where results are saved to your history, exportable and part of a wider technical workflow. See What you get on Free for what a signed-in account includes.
See also
Was this article helpful?
Thanks — feedback noted for the docs team.