Fuck Markdown (2025)

By Xah Lee. Date: . Last updated: .

fuck markdown

fuck markdown. fuck John Gruber, refusing to standardize the syntax.

Markdown problem, should there be an blank line before list

markdown problem 2026-04-18 1d7ff
markdown problem 2026-04-18 1d7ff
markdown problem 2026-04-18 2274c
markdown problem 2026-04-18 2274c

problem example:

markdown problem 2026-04-18 2250d
markdown problem 2026-04-18 2250d

the python code called is this:

markdown problem 2026-04-18 225a2
markdown problem 2026-04-18 225a2

in CommonMark, must there is be a newline before list or ordered list:

markdown problem 2026-04-18 22676
markdown problem 2026-04-18 22676
markdown problem 2026-04-18 227b0
markdown problem 2026-04-18 227b0
markdown problem 2026-04-18 2288f
markdown problem 2026-04-18 2288f

2026-04-18 addendum:

markdown commonmark 2026-04-18 39113
markdown commonmark 2026-04-18 39113

Nested list, 2 space or 4 space indent

markdown nested list 2026-04-19 1d736
markdown nested list 2026-04-19 1d736
markdown 2025-11-30 14d59
markdown 2025-11-30 14d59
markdown python markdown output 2025-11-30 14db1
markdown python markdown output 2025-11-30 14db1

Python markdown to html, code block bug

Fucking idiotic python markdown to html. Does not convert code block. Jisus, what kinda idiot possibly write this? am i delusional or am i correct the industrial coders are fucking idiots?

```css
/* Traditional flat CSS */
.card {
  background: #f8f9fa;
  padding: 1rem;
  border-radius: 8px;
}

.card h2 {
  color: #333;
  margin-bottom: 0.5rem;
}
```
import markdown
import sys
print(markdown.markdown(sys.stdin.read()))
python markdown to html 2026-04-21 1fcfc
python markdown to html 2026-04-21 1fcfc

why

python markdown code block 2026-04-21 22bb0
python markdown code block 2026-04-21 22bb0

solution

pip install cmarkgfm
import cmarkgfm
import sys
print(cmarkgfm.github_flavored_markdown_to_html(sys.stdin.read()))
# print(cmarkgfm.markdown_to_html(sys.stdin.read()))

using lang attribute for computer language in pre tag

now, if u use python cmarkgfm package, it creates code like

<pre lang="css">

markdown lang attribute pre tag 2026-04-22
markdown lang attribute pre tag 2026-04-22

but that's incorrect use of lang.

fuck these industrial coding mathafaakers

markdown lang attribute pre tag 2026-04-22 nt2M5
markdown lang attribute pre tag 2026-04-22 nt2M5

github flavored markdown converter idiocy.

it converts QUOTATION MARK (codepoint 34) to html entity.

markdown quote 2026-04-22 1979b
markdown quote 2026-04-22 1979b

markdown