An ode to browser forgiveness. Every rule broken, nothing burned.
Press Ctrl+U (or Cmd+Option+U) to view source.
The horror is in the details.
<!DOCTYPE html PUBLIC "THIS IS NOT A REAL DOCTYPE">Browsers have seen worse. Much worse. They learned to cope.
<p><div>Block inside inline</div></p>This paragraph contains
<div><span><strong>Never closed...
</div><html class> <!-- empty class attribute -->
<div data-crime data-number=""> <!-- valueless and empty --><center><font color="red"><marquee>1999 called</marquee></font></center><div xmlns:made-up="http://not.real">
<span 🔥>Fire emoji as attribute</span><table>
<script>console.log("I'm in a table!");</script>
<tr><td>Data</td></tr>
</table><div <!-- this shouldn't be here --> id="crime8"><b><i>Bold and italic</b> just italic?</i>"Be conservative in what you send, be liberal in what you accept."
— Postel's Law (The Robustness Principle)
Browsers implement one of the most forgiving parsers ever written. They have to. The early web was chaos—hand-written HTML with every possible mistake. If browsers crashed on invalid markup, the web wouldn't exist.
The HTML5 spec doesn't just define valid HTML. It defines exactly how to handle invalid HTML. Every edge case. Every malformed tag. Every forgotten close bracket.
This page is a tribute to that resilience. Every crime here is committed in the source. Yet you're reading this just fine.
The web works despite itself.
This page passes zero validators.
It renders perfectly in every browser tested.