Because I’m bored: EvilML

A few weeks ago, in a flash of boredom, I decided to create a rather “evil” html document. Why evil? Because, to my knowledge, there isn’t a browser under the sun that creates a sensible rendition of this document.

The “EvilML document”: can be found here, and, if you like, you can always check how the w3c validator “handles EvilML”: Yes, valid HTML 4.01 Strict.
If you “look at the source”:, and you’re unfamiliar with SGML, I’m pretty sure you would assert the validator was on crack, but really, it isn’t.
If you want to see what the rendition _should_ look like, you can always view the “unobfuscated version”:

Leave a comment


  1. How weird can HTML be…

    Some time ago, I mentioned to Vasil that HTML allows all sorts of weirdness, like unclosed tags, unspecified closing tag names, unclosed *opening* tags, and all that stuff. Finally somebody has taken the time to actually demonstrate that – a…

  2. Looks quite ok in Lynx 😉

  3. This is partly why I think the transition from HTML to XHTML is an outrageously good idea. Not that you *need* to code bad HTML, but if you’re allowed to, someone sure as hell will.

  4. No, Lasse, it doesn’t look OK in Lynx. It’s just broken in a way that happens to work better for this particular document.

  5. I’m a little surprised that you didn’t use the optional opening tags, but it was interesting enough to see. I’ve experimented a little myself. Here’s a “minimal valid HTML 4.01 document”:, containing the HTML, HEAD, TITLE, BODY and P tags…
    bc., too.

  6. Liorean, I condensed your two postings into one, making the first post look as you intended.
    The reason your initial comment failed, is that the comment cleaning is somewhat laxer when you use Textile formatting instead of xhtml.
    The textile interface has just been upgraded to a slightly modified version of Brad Choate’s Textile 2. Brad “keeps a brief tutorial here”: