YouTube Summaries

← All summaries

Markdown is a terrible language

2026-04-27 Mon ⏱ 22 min @t3dotgg

Theo reacts to Brock's blog post "Why are we still using Markdown?" (https://bgslabs.org/blog/why-are-we-using-markdown). Despite being a long-time Markdown advocate (he once refused jobs that wouldn't accept a Markdown resume), he agrees we've pushed the format past its breaking point.

The good

  • Minimal language for typesetting trivial documents: .md in, .html out.
  • Near-zero learning curve; legible without rendering.
  • Credit to John Gruber and Aaron Swartz for something genuinely magical.

The bad — the language can't decide what it is

  • Multiple syntaxes for the same output. Bold can be **, __, or <b>; headings have ATX (#) and Setext (underline) forms; unordered lists have multiple markers; ordered lists ignore the numbers you write.
  • Edge cases everywhere. Nested bold/italic combinations are nearly unparseable. Real CVE: a 6.9-severity ReDoS in markdown-it (just stars in a link can DoS a parser).
  • Inline HTML — "ASM bolted into a sandboxed doc format". Means every Markdown parser must also ship a friendly HTML parser → recurring XSS vulnerabilities across major implementations.
  • Old/obscure syntax inherited from Usenet/email (quote :, pipe-separated columns) that Markdown can't actually render properly.
  • T3 Chat hit these rendering edge cases hard; LaTeX edge cases are even worse.

Parsing isn't even the hard part — rendering is

  • Footnotes / reference-style links require global definition resolution → grammar becomes context-sensitive, not context-free.
  • Adding what people actually want (footnotes, callouts, math, custom CSS, plugins) escalates from a transliterator to a full compiler with a dependency graph and execution engine.
  • Quote: "Markdown is the C++ of markup languages."

Notion aside (Theo's hot take)

  • Notion's export of Markdown is broken/garbage — don't use it.
  • But Notion's use of Markdown syntax as input hotkeys (~# ~ → H1) is genuinely good UX.

Proposed direction (from the article)

  • Plain text, MDX, reStructuredText all fail in their own ways.
  • Real fix: a purpose-built markup language with a proper build system, no inline HTML, well-defined shortcodes/hooks, and a trivially-parsable grammar.
  • Theo agrees: "we are trying to use it like [a programming language] and because it lacks a formal foundation, it's failing at both."

Historical note

  • 2012: Jeff Atwood begged Gruber to bless a standard. Gruber's original markdown.pl called "one of the worst small programs I've ever read" — so buggy that an MD5-hash collision in inline-escape handling caused a Reddit XSS incident.

Takeaway

Theo started as an unconditional Markdown fan and ended the video admitting the article pushed him "over the edge" — Markdown is bad, we use it daily anyway, and the LLM/agent era (everything emits Markdown) is making the parsing/security situation worse.