Based on the analysis of the codebase against the GFM spec, here are the unsupported features:
Not Implemented
Block-level: - Indented code blocks (4+
space indentation) - HTML blocks (all 7 types:
<script>, comments, processing
instructions, CDATA, etc.) - Soft line breaks (newline
rendered as space)
Inline: - Backslash escapes
(\!, \", \#, etc.) -
Extended autolinks (www.example.com, bare
http:// URLs) - Email autolinks
(<user@example.com>) - Numeric character
references (#, {)
- Disallowed raw HTML filtering (security)
Partially Implemented
Block-level: - Lists - missing tight/loose distinction, multi-paragraph items, complex nesting - Link reference definitions - single-line only, no multiline titles
Inline: - Emphasis - basic
*bold*/_italic_ works, but missing
full left/right-flanking delimiter rules - Code spans -
basic backticks work, missing proper N-backtick matching and
space stripping rules - HTML entities - ~30 supported vs
5000+ in spec - Raw HTML - some inline tags work, missing
full precedence rules
Fully Supported
- ATX headings, Setext headings, thematic breaks
- Fenced code blocks, paragraphs, block quotes
- Basic links and images
- Hard line breaks (trailing spaces, backslash)
- Strikethrough (
~~text~~) - Tables with alignment
-
Task list syntax (
- [ ],- [x])
The most impactful gaps are indented code blocks, HTML blocks, backslash escapes, and extended autolinks - these are commonly used in real-world markdown.