The URL or the HTML is sent to the W3C validator (validator.w3.org) through our function on Cloudflare, which stores nothing. By URL, the result is cached for a day so as not to load the W3C service.
Summary
Type a URL or paste the HTML to start.
- errors
- 0
- warnings
- 0
- notes
- 0
No errors and no warnings. The document is valid HTML.
By kind of problem
All messages
How to use it
01
Bring the page
Type the published URL or paste the whole document. Both go to the official W3C validator, the one everybody uses.
02
Read by groups, not by lines
Two hundred errors are usually three problems repeated. Every group has its count, what it means and an example with the line.
03
Fix the template
If the same error shows on every product or every article, it lives in the template: one fix removes it from all pages.
Does valid HTML matter for SEO?
Directly, no: Google does not score validity. Indirectly, a lot. Google does not read your source: it reads the DOM its parser builds from it, and that parser repairs errors the way a browser would, closing what was left open and moving what did not fit. A div inside a paragraph splits the paragraph in two. A head with a forbidden element closes early, and the metadata that came after lands in the body, where it no longer counts.
The same happens to anyone browsing with a screen reader: they hear the structure the browser rebuilt, not the one you designed. That is why the errors that matter most are not the most numerous, but the ones that change the structure: unclosed tags, blocks inside inline elements, repeated ids and the missing doctype.
Validate before publishing, not after
An online validator is for diagnosing. What stops the problem from coming back is making the check part of the publishing process: the build fails if a page has two h1s, a broken link, a repeated id or an image with no alt.
That is how we build sites: every build verifies the markup, the internal links, the metadata and the accessibility against the real output, and the site does not deploy if something is off. This validator is the same review, by hand, for the site you have today.
Frequently asked questions
Does Google penalise invalid HTML?
Not directly: Google has said many times it does not use HTML validity as a signal. But it does use the DOM it builds when parsing the page, and a badly closed document produces a DOM different from the one you wrote: headings that end up inside a paragraph, links that lose their text, structured data that lands outside the head. The ranking effect is indirect, which is what makes it treacherous.
What is the difference between errors and warnings?
An error is something the HTML specification forbids and the browser has to repair on its own, its own way. A warning is something allowed but discouraged: a redundant attribute, an unnecessary role, a section with no heading. Errors come first; warnings are reviewed once the error list is at zero.
Why do I have hundreds of identical errors?
Because they come from a template. An error in the component that renders each product card shows up as many times as there are products on the page. That is why this tool groups them: seeing "× 212" next to one message says more than seeing 212 lines. Fix it once, in the template, and it disappears from the whole site.
Does it work for pages built with React, Vue or Angular?
Yes, with one caveat. The validator analyses the HTML the server sends, not what JavaScript builds afterwards. If the page is server-rendered (Next, Nuxt, Astro, SvelteKit), what it validates is what Google sees on the first pass, which is exactly what matters. If it is an app that renders everything on the client, the validator will only see the shell.
What is the doctype and why does it matter so much?
It is the first line of the document: <!DOCTYPE html>. It tells the browser to apply modern HTML and CSS rules. Without it the browser enters quirks mode, a compatibility mode for nineties pages where boxes are measured differently, tables behave differently and some CSS properties do not work. It is the cheapest error to fix and the one that explains the most odd behaviour.
Is my HTML stored?
No. Our function forwards it to the W3C validator and returns the answer without storing the URL or the content. The W3C, for its part, publishes a privacy policy for its validator: it does not keep the documents it validates. By URL, the result is cached for a day in our function so the same query is not repeated to the W3C every time somebody asks.
Can I validate a local page?
By pasting the code. The validator cannot reach localhost or your private network, but the HTML you copy from your browser’s page source validates just as if it were published. Copy from <!DOCTYPE html> to </html> so the doctype and the head are not missing.
Also by us
Spelling, with LintGrafía
The validator checks the document's structure, not what the text says. LintGrafía is a free Chrome extension that checks spelling and grammar on the rendered page, in 30+ languages and on localhost too.
Meet LintGrafía →Hundreds of errors on every page?
It is almost always three or four template faults. If you want the markup verified on every publish so they never come back, that is what we build.
We reply within one business dayBogotá · UTC−5