SEO Page Checker: Audit a page free and fix what it finds
Paste a URL into the free SEO Page Checker for a 0–100 score and findings sorted by severity. Here's what it checks, what to fix first, and its limits.

Paste the address of any public page into the free SEO Page Checker and you get a score from 0 to 100 and a list of findings, most serious first. Each finding says what's wrong, how to fix it and where it sits in the HTML. You don't need an account.
The checker looks at one page at a time. To check many pages, or let an AI assistant do it, the same check runs through the Seonio API and MCP for $0.005 a page.
Run your first check
The checker needs a page anyone can open without logging in, and the page has to return HTML. For private pages, staging sites and localhost, use the Seonio Chrome extension instead.
- Open the SEO Page Checker and paste the full address of one page, for example
https://example.com/blog/my-post. - Select Run free audit. Most pages come back within seconds.
- Read the report. It has its own short link that anyone can open, so you can send it to a colleague or client. The link works for 24 hours.
You can run 10 checks a minute.
What the checker looks at
The checker reads the HTML your server sends for that one address, much like View Source in your browser. If the address redirects, it checks the page it lands on. It groups what it flags into 11 categories, the same names you'll see on each finding.
| Category | What it flags |
|---|---|
| Meta | A title that's missing, empty, repeated or over 60 characters. A meta description that's missing, empty, repeated or over 160 characters. No viewport tag. A title identical to the H1 (a note). |
| Indexability | noindex or nofollow in the robots meta tag. A page served over HTTP instead of HTTPS. |
| Canonical | No canonical link, more than one, a relative address instead of a full URL, or a canonical that points to another domain or another page on the same domain. |
| Hreflang | Only when the page has hreflang tags (the links to its language versions): an invalid language or region code, or a tag with no target URL. |
| Headings | No H1, more than one H1, empty headings. Skipped heading levels, such as H2 straight to H4 (a note). |
| Content | Fewer than 150 visible words. |
| Links | No links at all. Links with an empty address or just #, javascript: links and links with no anchor text. http:// links on an HTTPS page. Links that open a new tab without noopener or noreferrer. |
| Images | Only when the page has images: an image with no source, images without an alt attribute, images without width and height. |
| Structured data | A JSON-LD block that isn't valid JSON. |
| Social | Open Graph, the tags that shape link previews, only partly set: one or more of og:title, og:description, og:image and og:url missing. A page with no Open Graph tags at all isn't flagged. |
| Accessibility | No lang attribute on the <html> tag. |
How the score works
Every page starts at 100. Each warning or failure takes off points by its severity: critical 15, high 8, medium 4 and low 2. The score never drops below 0.
Only three findings are critical: a missing title, an empty title and noindex. High findings include a missing or empty meta description, no viewport tag, no H1, a page served over HTTP and invalid JSON-LD. The two notes in the table, a title identical to the H1 and skipped heading levels, cost nothing, and their cards show no points.
A finding counts once, however many elements it covers. Twelve images without alt text make one finding and cost 4 points, the same as one image. The finding's message gives the count, so read it before you judge how big the job is.
Here's a made-up example. A page has no meta description (−8), a 72-character title (−4) and five images without width and height (−2). Its score is 100 − 14 = 86.
The score ring is green from 80 up, amber from 60 to 79 and red below 60. The Issues card next to it counts findings by severity.
The score measures problems the checker can see in the HTML. It doesn't predict rankings: a page can score 100 and still not answer what searchers want.
Fix findings in the right order
Start with the Fix first bar under the score. It names the most serious finding, and Jump to issue opens it.
The Findings list below the previews uses the same order: most severe first, then most points. Each card shows the severity, the category, the points lost, what the checker found and what to do. Open a card to see the evidence:
- a selector and the line number, so you can find the element in your HTML
- the actual value next to the expected one, such as a 72-character title against a target of about 60
- the HTML snippet that caused the finding
On a long list, use the search box and the severity and category filters. The JSON button downloads the whole report, which is handy for a ticket or a developer.
Findings you may decide to keep
The checker can't know your intent, so some findings are fine when they're on purpose:
- Keep
noindexon pages you want out of search, such as a thank-you page. If the page should appear in search, fix it first. - Keep a canonical that points elsewhere when this page is a copy or variant of another. The page then won't collect ranking signals of its own, so make sure that's what you want.
- Fewer than 150 words is normal for a contact or login page. The checker counts words; it can't judge whether the page answers the search.
Decorative images don't need alt text. Give them an empty alt="": the checker only flags images with no alt attribute at all.
If you check the same address again within 5 minutes, you'll see the earlier report. So after your fixes, wait 5 minutes, then check the page again.
Read the previews and page facts
Two parts of the report don't change the score but help you polish the page. Previews show how the page looks when it's found or shared.
The Google SERP card shows your title, description and address as a search result. Its 4 width checks test the title and description on desktop and mobile. The widths are estimated from the number of characters, so treat them as a guide. If the page has no meta description, Google may choose text from the page instead.
The Social card shows the Open Graph preview, with the image at the common 1.91:1 ratio. It also tells you whether the title and description stay within about 70 and 200 characters.
Page facts lists what the checker found, with tabs for Headings, Images, Meta, Content, Links and Schema. Use it for the questions findings can't answer. Does the heading outline read like a table of contents? Do the top words and phrases match the topic you want to rank for? Which schema types does the page declare?
What the checker doesn't do
Knowing the limits tells you when to reach for another tool:
- It doesn't run JavaScript. If your site adds text or tags with scripts, the report shows the HTML before the scripts run.
- It checks one page and opens nothing else. It doesn't crawl your site, and it lists the images, stylesheets and scripts the page links to without fetching them. So it can't find broken links or broken images. For a whole-site review, work through our technical SEO audit checklist.
- It reads the robots meta tag only. It doesn't read robots.txt or the
X-Robots-TagHTTP header. - It doesn't judge the writing: no readability score and no spelling check.
- It only checks that JSON-LD is valid JSON. It shows which schema types you declare but doesn't test them against Schema.org rules, so use a schema validator for that.
- It doesn't measure speed. Use the free page speed test.
- It can't reach private pages. It refuses IP addresses, local hosts and addresses with a username or password in them. The Seonio Chrome extension scans the tab you have open instead, whether it's public, private, staging or localhost. The scan runs in your browser, and the extension is free with no account.
- Reports don't last. A report stays available for 24 hours, so download the JSON if you want to keep it.
Check many pages with the API or MCP
The web checker suits one page at a time. To check a list of pages, run checks from a script, or ask an AI assistant to audit pages for you, use the same check through the Seonio API or MCP. It returns the same score and findings as JSON, with the evidence, the page facts and how fast the page answered.
Each page checked costs $0.005. A verified account gets a free $1 to test, valid for 30 days, which covers 200 checks. No subscription or payment method is needed. Errors aren't charged, and neither are addresses the checker can't check, such as a page that isn't HTML.
- With the API, send the page address to
/api/v1/audit/page-checkerwith your API key, which you'll find in Settings. The page checker API docs list every field. - With MCP, connect Seonio to ChatGPT, Claude, Cursor or another MCP client and ask it to audit a URL; it uses the
page_checkertool. Set up Seonio MCP for your client.
A request from the command line looks like this:
curl -X POST https://seonio.com/api/v1/audit/page-checker \
-H "X-API-Key: <your key>" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/blog/my-post"}'
To start, create a free account. Your API key and MCP connection are in Settings.
Put it to work on your own site
Keyword research, traffic, backlinks and clustering in one place. Start with a free $1 to test, no card required.