Lint an Obsidian vault with rumdl¶
Use rumdl's obsidian flavor to lint vault content without treating callouts,
wikilinks, tags, Obsidian comments, Dataview fields, or Templater expressions as
ordinary Markdown errors. Standard Markdown checks continue to run outside
those recognized constructs.
Supported Patterns¶
Tags with Hash Syntax¶
MD018 recognizes Obsidian's tag syntax to avoid false positives:
This is a #tag not a malformed heading.
Multiple #tags #in-one-line are supported.
Nested #tags/with/hierarchy work too.
Callouts (Admonitions)¶
MD028 recognizes Obsidian callout syntax to prevent false positives when blank lines appear between callout blocks:
> [!NOTE]
> This is a note callout.
> [!WARNING]
> This is a warning.
> [!TIP]+ Foldable (expanded by default)
> Tip content here.
> [!INFO]- Collapsed by default
> Info content here.
Supported callout types include:
- note, abstract, summary, tldr
- info, todo, tip, hint, important
- success, check, done
- question, help, faq
- warning, caution, attention
- failure, fail, missing
- danger, error, bug
- example, quote, cite
Custom callout types are also supported.
Comments¶
Rules skip Obsidian comment syntax to avoid false positives inside comments:
Rules affected: MD011, MD012, MD034, MD037, MD044, MD049, MD061, MD064, MD069
Highlights¶
MD037 and other emphasis-related rules recognize Obsidian highlight syntax:
Wikilinks in Tables¶
Table rules treat the pipe in an aliased wikilink as part of the link rather than a cell delimiter, so a row like this one has two cells and not three, and a paragraph whose only pipes sit inside wikilinks is not mistaken for a row that lost its table:
| Character | Note |
| --------- | --------------------------- |
| Alice | [[White Rabbit|the Rabbit]] |
Dataview Inline Queries¶
MD038 recognizes Dataview plugin inline query syntax:
Dataview Inline Fields¶
MD011 recognizes Dataview inline field syntax to prevent false positives:
These patterns look like reversed links but are valid Dataview inline field syntax.
Extended Task Checkboxes¶
MD064 recognizes extended task checkbox syntax beyond the standard [ ], [x], and [X]:
- [/] In progress
- [-] Cancelled
- [>] Deferred
- [<] Scheduled
- [?] Question
- [!] Important
- [*] Star/highlight
These extended checkboxes are commonly used in Obsidian with plugins like Tasks or custom CSS.
Templater Syntax¶
MD033 correctly ignores Templater plugin syntax (not flagged as inline HTML):
Rule Behavior Changes¶
| Rule | Standard Behavior | Obsidian Behavior |
|---|---|---|
| MD018 | Flag #text without space |
Allow #tag syntax |
| MD028 | Flag blanks between blockquotes | Recognize callout blocks |
| MD033 | Flag inline HTML | Ignore Templater <% %> syntax |
| MD037 | Check emphasis spacing | Recognize ==highlight== syntax |
| MD038 | Check code span spacing | Allow = and $= Dataview prefixes |
| MD011 | Check reversed links | Skip %%comments%% and (field:: value) patterns |
| MD012 | Check multiple blanks | Skip content in %%comments%% |
| MD034 | Check bare URLs | Skip content in %%comments%% |
| MD044 | Check proper names | Skip content in %%comments%% |
| MD049 | Check emphasis style | Skip content in %%comments%% |
| MD061 | Check link fragments | Skip content in %%comments%% |
| MD064 | Check multiple consecutive spaces | Skip %%comments%%, allow extended checkboxes [/], [-], etc. |
| MD069 | Check reference links | Skip content in %%comments%% |
| MD056 | Count \| as a cell delimiter |
Treat [[Target\|Label]] as one cell |
| MD075 | Pipe line after a table is a row | Wikilink-only pipes stay prose |
Configuration¶
When to Use¶
Use the Obsidian flavor when:
- Linting notes from your Obsidian vault
- Using Obsidian-specific syntax like callouts or comments
- Using the Dataview plugin for dynamic content
- Using the Templater plugin for templates
- Using Obsidian's tag syntax extensively
Plugin Compatibility¶
The Obsidian flavor is designed to work with common Obsidian plugins:
- Dataview: Inline queries with
=and$=prefixes - Templater: Template syntax with
<% %>delimiters - Core plugins: Callouts, tags, wiki-links, block references
Coming from Obsidian Linter?¶
Comparison with Obsidian Linter maps every
Obsidian Linter rule to its rumdl counterpart, gives a starter .rumdl.toml
for a vault, and lists the behaviors that differ.
See Also¶
- Comparison with Obsidian Linter - Rule mapping and starter configuration
- Flavors Overview - Compare all flavors
- Standard Flavor - Base flavor without Obsidian extensions
- Obsidian Help - Callouts
- Obsidian Help - Tags
- Dataview Documentation
- Templater Documentation