For content processed by kramdown, the default Markdown renderer for Jekyll sites. Extends standard flavor with kramdown-specific syntax support including Inline Attribute Lists (IALs), extension blocks, and definition lists.
Block IALs add attributes to the preceding block element. Standalone IAL lines are recognized as kramdown syntax and skipped by rules that would otherwise flag them:
# Heading
{:.highlight #custom-id}
```ruby
puts "Hello"{:.language-ruby .numberLines}
Blockquote content {:#special-quote .emphasized}
### Span IALs
Span IALs attach attributes to inline elements. MD037 recognizes them to avoid false positives on emphasis spacing:
```markdown
*emphasized text*{:.red}
**bold text**{:#important}
[link](https://example.com){:target="_blank"}
Kramdown extension blocks ({::comment}, {::nomarkdown}, etc.) are treated as non-content regions. Content inside extension blocks is skipped by linting rules:
{::comment}
This content is hidden from rendering.
It can contain <div>HTML</div> or other syntax.
{:/comment}
{::nomarkdown}
<div class="custom">
Raw HTML that kramdown won't process
</div>
{:/nomarkdown}The shorthand close {:/} is also supported.
Kramdown options directives are recognized and skipped:
{::options parse_block_html="true" /}Definition lists use the : definition syntax:
Term 1
: Definition 1
: Another definition
Term 2
: Definition 2Kramdown-style footnote definitions and references:
Text with a footnote[^1] reference.
[^1]: Footnote content here.Abbreviation definitions:
*[HTML]: HyperText Markup Language
*[W3C]: World Wide Web ConsortiumThe ^ character on its own line ends the current block:
First paragraph
^
Second paragraph starts a new block| Rule | Standard Behavior | Kramdown Behavior |
|---|---|---|
| MD022 | Check blanks around headings | Allow IALs immediately after headings |
| MD041 | Check first line is heading | Skip IALs and extension blocks as preamble |
| MD051 | Use GitHub anchor style | Default to kramdown anchor generation |
Additionally, the filtered_lines() API supports skip_kramdown_extension_blocks() for rules that need to skip content inside {::comment} and {::nomarkdown} blocks.
When kramdown flavor is active, MD051 (link fragment validation) defaults to kramdown's anchor generation algorithm instead of GitHub's. This matches how Jekyll generates heading IDs.
To explicitly configure anchor style:
[MD051]
anchor-style = "kramdown" # Pure kramdown style
# anchor-style = "kramdown-gfm" # Jekyll with GFM input[global]
flavor = "kramdown"The jekyll alias is also accepted:
[global]
flavor = "jekyll"Files with the .kramdown extension are automatically detected as kramdown flavor.
For Jekyll projects, add flavor = "kramdown" (or flavor = "jekyll") to your .rumdl.toml.
Use the kramdown flavor when:
- Building Jekyll sites that use kramdown as the Markdown renderer
- Using kramdown-specific syntax like IALs, ALDs, or extension blocks
- Documents contain
{:.class}or{:#id}attribute syntax - Using kramdown's
{::comment}or{::nomarkdown}extension blocks
- Flavors Overview - Compare all flavors
- Standard Flavor - Base flavor without kramdown extensions
- kramdown Documentation
- Jekyll Documentation