Markdown is a terrible language
TL;DR
Markdown won by being dead simple, then lost by trying to do everything — Theo starts by admitting he was so committed to Markdown he submitted résumé links to GitHub instead of formatted resumes, but says the moment we added inline HTML, MDX-style extensions, and agent workflows, the original bargain broke.
The core complaint is ambiguity: Markdown has too many ways to say the same thing — the article he reacts to shows identical output generated from wildly different syntax, from ATX vs Setext headings to multiple bold/italic forms, which Theo says matches his own pain building T3 Chat’s Markdown renderer.
Parsing Markdown isn’t just annoying — it creates real security and performance bugs — he highlights a 6.9-severity CVE in markdown-it tied to ReDoS, where malicious strings with stars inside links can explode parsing work to 65,553 steps and effectively DoS a system.
Inline HTML is where Markdown stops being a markup convenience and turns into a Frankenstein language — Theo repeatedly comes back to the absurdity of needing both a Markdown parser and a “friendly HTML parser,” then opens his own blog and immediately finds iframes, linked image tags, and other cursed embedded HTML.
Modern Markdown behaves less like a transliterator and more like a compiler — once you add reference links, footnotes, math, custom callouts, CSS, and Obsidian-style plugins, Theo agrees with the author that you’ve moved into context-sensitive grammar, dependency graphs, execution engines, and injection risk.
The proposed fix isn’t MDX, reStructuredText, or plain text — it’s a new, formal markup tool with a build system — the article’s author argues for a purpose-built language with well-defined shortcodes, compile-time hooks, and no inline HTML, and Theo says that’s the first alternative that actually sounds serious.
The Breakdown
From Markdown superfan to Markdown skeptic
Theo opens by saying he loved Markdown so much he let it affect his career, refusing to apply to companies that wouldn’t accept a Markdown résumé and hosting his whole resume on GitHub. That’s what makes this reaction hit: he’s not a hater arriving cold, he’s a convert realizing the religion got weird.
The article’s opening punch: HTML, Markdown, and a midlife crisis
The piece he’s reacting to opens with “HTML is the best programming language,” which Theo loves for the sheer audacity. From there, the argument gets more grounded: CommonMark helped standardize things, but the real problem isn’t the spec — it’s that Markdown no longer knows whether it wants to be a minimal markup language, UI layer, or programming language.
Same output, wildly different syntax
One of the first concrete examples is just how many different ways Markdown lets you produce the exact same rendered result. Theo winces at heading styles, stars vs underscores, and all the overlapping emphasis syntax, then says this lines up perfectly with the pain his team has had handling weird Markdown edge cases in T3 Chat.
When parsing turns into vulnerability research
Then it gets darker: layered bold/italic examples become nearly impossible to reason about by eye, and Theo basically gives up trying to parse one of them live. He calls out a real ReDoS vulnerability in markdown-it — a 6.9-severity CVE — where malformed star-heavy link input can balloon into 65,553 parsing steps and become a legit denial-of-service vector.
Inline HTML: the original sin
The biggest shift in tone comes when the article compares inline HTML in Markdown to inline assembly in old systems languages. Theo is fully on board here; he says the hard part of shipping Markdown isn’t Markdown syntax, it’s that you also have to ship an HTML parser, and if that’s true, maybe you should’ve just used HTML from the start.
Theo checks his own blog and immediately finds cursed Markdown
This part is great because he stops theorizing and audits his own content. Within a couple paragraphs of one blog post he finds an iframe embed, linked image tags nested inside Markdown brackets, and enough random inline HTML to prove the point that once you want anything interesting, Markdown pushes you into hacks.
Obsidian, Notion, and the compiler-shaped hole in Markdown
The article’s most technical claim is that modern Markdown isn’t a simple transliterator anymore; footnotes and reference links make meaning depend on declarations elsewhere, so you’ve left context-free parsing behind. Theo says this is exactly why Obsidian-style workflows feel cursed, though he gives Notion a small nod for using Markdown more like hotkeys than as the true underlying document model.
The proposed replacement: not MDX, not plain text, not vibes
By the end, Theo is sold on the author’s thesis that every current alternative is broken in its own way: plain text is too raw, reStructuredText is miserable to write, and MDX is too busy trying to be HTML. What actually sounds promising is a new markup language with a formal grammar, build system, defined shortcodes and hooks, and fewer “Frankenstein’s monster” compromises — which leaves Theo jokingly tempted to invent T3-down, while also admitting that absolutely should not happen.