Markdown Block vs Inline Precedence

Last updated: 2026-10-14

Block vs Inline Precedence CommonMark core

Markdown parses blocks first (headings, lists, quotes, fences), then inline content inside them. Blocks interrupt everything: a # at line start is a heading, whatever came before.

GroupEdge Cases & Rules
Spec levelCommonMark core
Spec versionCommonMark 0.31.2 + GFM

📝 Syntax

Parse order: blocks first, then inline

▶ Live Example

Edit Markdown on the left, see the result on the right

💡 Key points

ℹ️ Note This explains a lot: # inside inline code is not a heading; an indented # inside a list item is a list heading.
💡 Tip When syntax 'does not work', first check whether a block swallowed it.

❓ FAQ

Q Can a list item hold a heading?
A Yes — indent the # to the item's content level for a heading inside the item.
Q Can inline code contain block syntax?
A No — inline code is fully literal; # is just a hash.
Q Why can quotes contain anything?
A A quote is a block container; its content is parsed as blocks again.

📚 See also

Inline CodeCommonMark core HeadingsCommonMark core List NestingCommonMark core
Web-Tutorial.com

Web-Tutorial Tech Team

A team of developers maintaining programming tutorials. Each tutorial is written and reviewed by developers with expertise in that field. We work to keep our content accurate and reliable — if you spot an issue, please let us know.

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏