Free · no account · nothing to install
Check 25 pages at once. Export the lot to a spreadsheet.
Paste your URLs. Get every title, meta description, heading, word count, link, image and schema block back as CSV. No account, nothing to install, nothing stored.
Paste your URLs What it will not do
- Worth knowing: it reads the HTML your server sends, so content added by JavaScript won't appear. There's no overall score either; you get the raw data and decide what it means.
25 URLs per run
7 Data tables
51 Columns in the pages export
Paste up to 25 URLs
Each address is fetched once, parsed in your browser, and added to the tables below as it completes.
Ready.
One row per URL. The CSV carries every column, including all Open Graph and Twitter tags.
0 rowsEvery h1-h6 in document order. Level and order together show the outline a crawler sees.
0 rowsTop 20 words per page after common stop words are removed. Share is measured against the total word count of the page.
0 rowsEvery anchor with an href, classified internal or external, with its anchor text.
0 rowsOne row per image. A missing alt attribute and an empty one mean different things, so they are separate columns.
0 rowsStructured data blocks: JSON-LD, microdata and RDFa types. A block that fails to parse is reported, not hidden.
0 rowsAnything that went wrong. An empty table here is the result you want.
0 rowsFour steps, one of them on a server
Only one step runs on a server. Here's what happens at each.
-
You enter URLs
Nothing is sent anywhere while you type. The list is cleaned, deduplicated and capped at 25 in your browser.
-
A relay fetches the HTML
Browsers refuse to fetch pages from other domains. A small Cloudflare Worker on this site's domain requests each page and passes the HTML back. It stores nothing and logs nothing.
-
Your browser does the work
Parsing, counting, classifying, all of it happens on your machine.
-
You export what you need
Each table downloads as its own CSV, generated in the browser. They share a
urlcolumn, so they join cleanly in a spreadsheet.
Seven tables, each one exportable
Each table covers one part of the page and downloads as its own CSV. There's no overall score, just the data.
-
Pages
One row per URL: status, title and its length, meta description, canonical, robots directive, language, viewport, heading counts, word counts, link and image counts, every Open Graph and Twitter tag, and the structured data types found. 51 columns in the export.
-
Headings
Every h1 through h6 in document order, with its level, position and character length. A broken outline stands out here: four h1s, or an h3 with no h2 above it.
-
Words
The 20 most repeated words on each page, with counts and share of total. A quick way to check that a page is about what you think it's about.
-
Links
Every anchor on the page, split into internal and external, with anchor text,
relvalue and whether it is nofollowed. Empty anchor text and bare “click here” links show up here. -
Images
Every image with its source, alt text, and whether the alt attribute is missing entirely or deliberately empty. Those are different problems and get different columns.
-
Schema
JSON-LD, microdata and RDFa types, one row per block, with the raw JSON in the export. A block that is present but malformed is flagged rather than skipped; broken structured data is a finding.
-
Errors
Every failure: timeouts, 404s, redirects that led nowhere, pages that were too large, JSON-LD that would not parse. Nothing is dropped silently.
What this tool does not do
Worth knowing before you rely on the results.
-
It does not run JavaScript
Static HTML only, exactly as it arrives from the server. If your site builds its content in the browser, the tables will come back mostly empty. That's useful to know, but it isn't a verdict on your site.
-
It does not discover pages
It fetches the URLs you type and nothing else. No sitemap parsing, no following links, no recursion. Orphan pages stay invisible.
-
It does not score anything
No score out of 100, no grade and no traffic lights. You get the data as it is.
-
It does not check rankings, backlinks or search volume
That data lives behind third-party APIs this tool has no connection to. Everything here comes from the page itself.
-
Word counts are approximate
Navigation, headers and footers are stripped where they are marked up as such. On sites that do not use those elements, shared boilerplate will inflate the count.
-
Title length is characters, not pixels
Search engines truncate titles on rendered width, not character count. The number here is a useful proxy and nothing more.
What happens to the URLs you enter
The URL goes to the relay, and nowhere else
To fetch a page, its address has to reach a server. The relay, on Cloudflare's network, receives it, makes one request and returns the HTML. It writes nothing to a database, a log file or an analytics tool.
The page content never leaves your browser
The HTML comes back to your machine and is parsed there. Titles, headings, word counts, links, images and structured data are all derived locally. None of it is sent anywhere.
No account, and the tool stores nothing
The checker needs no sign-up and stores nothing in your browser. Close the tab and the results are gone, so download the CSVs first if you want to keep them. Like the rest of the site, this page uses Google Analytics, which you can turn off in Cookie settings, and analytics never sees the addresses you enter.
The CSVs are made on your machine
Each export is assembled in the browser and handed straight to your downloads folder. No file is generated or stored on a server.
What other services can see
The review badge comes from Clutch, so Clutch sees your IP address, as with any content loaded from another server. The checker works the same with it blocked.
Common questions
Why does it need a server at all?
Browsers don't let a page on one domain read a page on another. It's called the same-origin policy, and a website can't switch it off from its own side, so a small relay does the fetching.
Can I use it on a site I don't own?
Yes. It reads exactly what any visitor's browser would read, one page at a time, with a pause between requests. It's meant for a handful of pages, not a whole site.
Why only 25 URLs?
Because it runs in a browser tab. Beyond that, memory gets tight, the tables slow down, and it stops being polite to the server on the other end. For hundreds of pages, a desktop crawler is the better fit.
Does it work on a site built with React, Vue or Next.js?
Only if that site sends finished HTML. Server-rendered and statically generated pages read normally. A single-page app that draws everything after load will come back nearly empty here, and that emptiness is itself worth seeing, because a crawler that does not render will see something close to it.
Why is the word count different from another tool?
Every tool draws the line between content and boilerplate somewhere different, and none of them are wrong. This one strips nav, header, footer, script and style, and prefers main when a page has one. Compare a page against itself over time rather than against another tool's number.
Why is it free?
It's the same data collection I use at the start of an audit, and it's useful on its own. There's no account, no upgrade and no email sign-up.
Does this replace an SEO audit?
No. The tool shows what's on your pages. An audit works out which of it matters, why, and what to fix first. If the tables are all you need, that's fine.
When you want the full picture
The checker covers the data-collection step of an audit. A full audit reviews technical SEO, content, keywords, links, competitors and AI visibility point by point, and ends in a written report with every fix in order.
Get in touch See the auditsOther checks the same tool runs: Meta tag check, Heading check, Alt text check, Word count check, Canonical check, Open Graph check, Schema check