Validators
Stylesheets parsed and checked against the W3C property grammars
A CSS mistake does not throw an error. The browser drops the declaration it cannot understand and carries on, so a misspelled property (`colour`, `font-wieght`) or a value that does not match its grammar produces a page that is subtly, silently wrong - and looks like a layout bug rather than a typo.
Every inline `<style>` block and every linked stylesheet is fetched and parsed by a conformance parser, then each declaration is matched against the formal grammar from the CSS specifications, carried in the same machine-readable form MDN itself is generated from. Three things come out: parse errors, unknown properties, and values that do not match what the property accepts.
It also answers a question validity alone cannot: will this work in your visitors' browsers? Each property is resolved against Baseline, the W3C WebDX group's shared definition of 'safe to use', so you find out that a declaration is valid CSS *and* unsupported in Safari before your customers do.
Why this matters
You checked the site in your own browser and it looked right. Then a customer sends a screenshot where the header is stacked wrong or the price is white on white, and there is nothing to search for - no error message, no line number, no crash. The only alarm a broken stylesheet ever raises is someone taking the trouble to tell you.
A missing brace or a malformed selector does not fail on its own line. The browser discards the rule around it, so one typo can strip the styling from an entire component while your editor still shows complete, sensible CSS.
When a value does not match what the property accepts, the browser throws the declaration away and applies whatever was set before it - usually its own default. The page renders, nothing is logged, and the button is grey because the brand colour was written in a form that property does not take.
A declaration can be flawless by the specification and still be missing from a desktop engine, so a layout that holds together for you collapses for everyone on that browser. You find out from the one visitor who bothers to email, long after the rest have left.
Only a genuine grammar mismatch is called a defect. A value the checker cannot evaluate - anything containing var(), or a feature-query condition - is recorded as unchecked rather than reported, which removed 25 false errors on the first real page scanned and seven more from a valid @supports block. The W3C's own service is known to report modern CSS this way.
The W3C service checks conformance and says nothing about whether a property works in your visitors' browsers. Every property declared here is also resolved against Baseline, and a feature that only recently became available everywhere is reported without ever affecting your score, because adopting one is a decision rather than a defect.
Any stylesheet that could not be read is listed with the reason - a timeout, an HTTP error, or the size ceiling. Findings are capped at 25 per kind so one missing brace cannot flood the report, and the real count is carried alongside, so a page with 300 invalid values is never described as having three.
This check runs on its own here, and as part of the full audit alongside the other 985 rules. Either way the findings carry their evidence and their citation, and the report is never published or kept.
A single malformed declaration does not fail alone. The parser discards the rest of its block, so one typo can silently remove styling you never connected to it.
Fix parse errors before anything else — a missing semicolon or unbalanced brace causes the browser to drop every declaration after it in that block.
Correct invalid property values. An unrecognised value is discarded silently, which is why the symptom is usually 'this style does nothing' rather than an error.
Check vendor prefixes are still needed. Most are not, and stale prefixed properties clutter the sheet while overriding the standard version.
Replace properties with poor support, or provide a fallback declaration immediately before them so older browsers keep the previous value.
Remove rules that no longer match anything after a markup change — dead CSS is downloaded and parsed on every visit.
Just the domain is enough — example.com, with or without the https. No account, no card, no crawl of your whole site.
Your page opens in a real browser and JavaScript runs to completion, so what gets audited is the page a person actually sees — not the raw HTML your server sent. A screenshot comes back with the report as evidence of exactly what we measured.
Up to 986 checks run against that rendered page. Each finding names the rule, quotes the evidence found on your page, cites the public specification behind it, and says what to change. Nothing is a judgement call — run it twice on an unchanged page and the score is identical.
Named because provenance is the product. Every finding in your report says which of these produced it, so you can check the reasoning rather than take a score on faith.
This page answers these searches too — they are the same job, so they share one page rather than being split across near-identical ones:
No signup, no credit card. Quick answers in seconds; a full audit takes about a minute.
Run a free scanNo signup. No credit card. Nothing stored but the result.