Free CSS validator: why one typo removes styles you never touched
CSS fails silently and generously. A single malformed declaration causes the browser to discard the rest of its block, which is why the symptom is usually 'this style does nothing'.
By Sapun Lamichhane · Arcetis
CSS was designed to fail forgivingly. When a browser meets something it does not understand, it throws that thing away and carries on. That design decision is why the web did not break as CSS evolved, and it is also why a stylesheet error is one of the hardest bugs to notice.
Why does my CSS not apply?
There are two distinct failure modes and they behave differently.
- An invalid property or value is dropped on its own. The declaration is discarded, the rest of the block applies normally, and the only symptom is one style not taking effect.
- A syntax error — a missing semicolon, an unbalanced brace, a stray character — causes the parser to discard the rest of the block while it recovers. This is the dangerous one: a typo in the second declaration silently removes the other eight, none of which are wrong.
Neither writes anything to the console. If you have ever added a style, seen no change, and assumed a specificity conflict, this is worth ruling out first.
The prefixes that are now doing harm
Most vendor prefixes stopped being necessary years ago, and a stale prefixed declaration placed after the standard one will override it. The rule is that the unprefixed version goes last, and if you are not sure the prefix is still needed, it almost certainly is not.
Support is a spectrum, not a yes or no
A property can be valid and still unusable for your audience. The useful question is not whether a property exists but whether it exists in the browsers your visitors have — and when it does not, whether the declaration immediately before it leaves them with something sensible.
This is what makes CSS fallbacks worth writing deliberately rather than hoping. The cascade already gives you the mechanism: put the safe value first, the modern one second, and browsers that do not understand the second keep the first.
Where CSS meets performance
Stylesheets block rendering. Everything in them is downloaded and parsed before the page paints, including every rule that no longer matches anything. On a site that has been through two redesigns, that is frequently most of the file.
Dead CSS does not throw errors and does not appear in any audit as a failure, which is exactly why it accumulates. It shows up instead as a slow first paint that nobody can account for.
What free means here
Our CSS validator is free, with no account needed for your first full scan. Because it works from the rendered page it sees the stylesheets your site actually loads — including any injected at runtime — rather than only the ones linked in your source.