rumdl - Markdown Linter for VS Code
July 6, 2026 · View on GitHub
A lightning-fast Markdown linter for VS Code powered by rumdl, a Rust-based linter with 97.2% markdownlint compatibility and 5x performance improvement.
Features
✅ Real-time linting with 50+ rules and precise column highlighting
✅ One-click auto-fixes for common issues
✅ 5x faster than markdownlint
✅ Markdownlint compatibility
✅ Zero configuration required
✅ Workspace-wide linting support
✅ Custom rule configuration
✅ Status bar integration
✅ Precise error positioning with improved column highlighting (rumdl 0.0.81+)
✅ Bundled rumdl binary - no separate installation required
✅ Cross-platform support with optimized binaries for all platforms
Installation
From VS Code
- Install the extension from the VS Code Marketplace
- That's it! rumdl is bundled with the extension - no additional setup required
From Cursor / VSCodium / Other VS Code Forks
- Install the extension from Open VSX Registry
- That's it! The extension works the same in all VS Code-compatible editors
The extension includes optimized rumdl binaries for all supported platforms:
- Windows (x64)
- macOS (Intel & Apple Silicon)
- Linux (x64 & ARM64)
Manual Installation (Optional)
If you prefer to use your own rumdl installation:
-
Install rumdl using one of these methods:
# Using Cargo (Rust) cargo install rumdl # Using pip (Python) pip install rumdl # Download binary from GitHub releases # See: https://github.com/rvben/rumdl/releases -
Configure the path in VS Code settings:
{ "rumdl.server.path": "/path/to/your/rumdl" }
Quick Start
- Install the extension from the VS Code Marketplace
- Install rumdl (if not already installed):
# Using cargo cargo install rumdl # Using homebrew (macOS) brew install rumdl # Using npm npm install -g rumdl - Open a Markdown file - linting starts automatically!
Screenshots
Real-time Diagnostics
Quick Fixes
Status Bar Integration
Commands
Access these commands via the Command Palette (Cmd/Ctrl + Shift + P):
rumdl: Fix All- Apply all available auto-fixes to the current documentrumdl: Restart Server- Restart the rumdl language serverrumdl: Show Client Logs- View extension logs in the output panelrumdl: Show Server Logs- View server logs in the output panelrumdl: Check Extension Status- Display extension status and configurationrumdl: Test Configuration Discovery- Debug configuration file discovery and test rumdl settings
Fix on Save
There are two ways to automatically fix Markdown issues when saving files:
Option 1: editor.codeActionsOnSave (Recommended)
This is the standard VS Code mechanism, used by ESLint, Ruff, and other linters. It gives you fine-grained control:
{
"editor.codeActionsOnSave": {
"source.fixAll.rumdl": "explicit"
}
}
Use "explicit" to only fix on manual save (Cmd+S / Ctrl+S), or "always" to also fix on auto-save.
Option 2: rumdl.fixOnSave
A simpler toggle that applies all fixes via the LSP server before saving:
{
"rumdl.fixOnSave": true
}
Option 3: editor.formatOnSave
Uses VS Code's formatting infrastructure to apply rumdl fixes as formatting edits:
{
"[markdown]": {
"editor.formatOnSave": true
}
}
Configuration
The extension uses VS Code's standard configuration system. Open Settings (Cmd/Ctrl + ,) and search for "rumdl" to configure:
| Setting | Description | Default |
|---|---|---|
rumdl.enable | Enable/disable the extension | true |
rumdl.fixOnSave | Automatically fix all auto-fixable problems on save. For more control, use editor.codeActionsOnSave with source.fixAll.rumdl instead. | false |
rumdl.configPath | Path to rumdl configuration file (relative to workspace root or absolute). If not specified, rumdl will auto-discover configuration files in the workspace. | undefined |
rumdl.rules.enable | Array of rule IDs to enable. Empty array enables all rules. | [] |
rumdl.rules.disable | Array of rule IDs to disable | [] |
rumdl.server.path | Path to rumdl binary. Leave empty (recommended) to use auto-detection (checks workspace .venv, then node_modules, then system PATH, then bundled binary). Set to "rumdl" to explicitly use system PATH (useful with version managers like Nix, mise, or asdf). Relative paths are resolved against the first workspace folder, a leading ~ expands to the home directory, and absolute paths are preserved. | undefined |
rumdl.server.logLevel | Server log level (error, warn, info, debug, trace) | "info" |
rumdl.trace.server | Trace LSP messages (off, messages, verbose) | "off" |
rumdl.diagnostics.deduplicate | Remove duplicate diagnostics (useful if multiple markdown linters are active) | true |
rumdl.linkCompletions.enable | Provide file path and heading anchor completions inside markdown link targets | true |
rumdl.linkCompletions.contentRoots | Root directories used to resolve absolute link completions (paths starting with /). Relative entries resolve against each workspace folder. When empty, workspace folders are used. | [] |
rumdl.linkNavigation.enable | Provide hover preview, go-to-definition, find-references, and rename for markdown links. Disable to avoid conflicts with other markdown extensions. | true |
Project Configuration
Create a .rumdl.toml file in your project root for project-specific settings:
# Enable/disable specific rules
[rules]
select = ["MD001", "MD003", "MD022"]
ignore = ["MD013", "MD033"]
# Rule-specific configuration
[rules.MD013]
line_length = 120
code_blocks = false
[rules.MD003]
style = "atx"
# File patterns to include/exclude
[files]
include = ["**/*.md", "**/*.markdown"]
exclude = ["node_modules/**", "target/**"]
Supported File Types
rumdl activates by a document's language, not its file extension. It attaches to any document whose language is one of the following (VS Code assigns these based on the file's name or extension):
| Language ID | Files |
|---|---|
markdown | .md, .markdown, .mdown, .mkd |
mdx | .mdx |
prompt | *.prompt.md |
instructions | *.instructions.md |
chatagent | *.agent.md |
skill | SKILL.md |
The prompt, instructions, chatagent, and skill languages are VS Code's
chat customization files and require a recent VS Code version; where they aren't
available, those files open as markdown or plain text. rumdl processes all
supported types as Markdown. See Fix on Save to apply fixes
automatically.
Performance
rumdl is built for speed:
| Tool | Time (1000 files) | Relative Speed |
|---|---|---|
| rumdl | 0.8s | 5x faster |
| markdownlint | 4.2s | baseline |
Rule Compatibility
rumdl supports 97.2% of markdownlint rules:
- ✅ 50+ rules fully implemented
- ✅ Auto-fixes for 40+ rules
- ✅ Custom configuration support
- ✅ Same rule IDs as markdownlint
See the full rule list for details.
Troubleshooting
rumdl not found
If you see "rumdl executable not found":
- Install rumdl: Follow the installation guide
- Check PATH: Ensure rumdl is in your system PATH
- Set custom path: Configure
rumdl.server.pathin settings
Server not starting
If the server fails to start:
- Check logs: Use "rumdl: Show client logs" command
- Verify installation: Run
rumdl --versionin terminal - Restart server: Use "rumdl: Restart Server" command
- Check configuration: Ensure
.rumdl.tomlis valid
Performance issues
If linting feels slow:
- Check file size: Very large files (>1MB) may be slower
- Exclude patterns: Add exclusions for generated files
- Reduce rules: Disable unused rules in configuration
Development
Building from Source
# Clone the repository
git clone https://github.com/rvben/rumdl-vscode.git
cd rumdl-vscode
# Install dependencies
npm install
# Build the extension
npm run compile
# Run in development mode
npm run watch
Testing
# Run linting
npm run lint
Contributing
We welcome contributions! Please check the repository for contribution guidelines.
Reporting Issues
When reporting issues, please include:
- VS Code version
- Extension version
- rumdl version (
rumdl --version) - Debug information (use "rumdl: Print debug information")
- Sample Markdown file that reproduces the issue
License
This extension is licensed under the MIT License.
Related Projects
- rumdl - The core Rust-based linter
- markdownlint - The original JavaScript linter
- markdownlint-cli2 - Command-line interface
Changelog
See CHANGELOG.md for release history.
Enjoy lightning-fast Markdown linting with rumdl! ⚡