53 developer tools, always updated, new upstream releases land in apt within hours. Join the Discord

📅 From , the apt mirror will require a subscription. See pricing · 🆓 There is an always-free mirror

📐 Install Latest rumdl on Ubuntu

A fast Markdown linter and formatter written in Rust

Latest version: 0.2.60 · updated 2026-08-23
SourceVersion
deb.griffo.io0.2.60 ✅
Official Ubuntu🚫 not packaged
← Back to home

What is rumdl?

rumdl is a Markdown linter and formatter written in Rust. It implements the rule set everyone already knows from markdownlint, the MD001 to MD059 checks for heading levels, list indentation, line length, code fence style, link syntax and trailing whitespace, and it runs them over a documentation tree in milliseconds instead of seconds. Most of those rules come with a fix, so rumdl check --fix repairs what it reports rather than leaving you a list, and rumdl fmt reformats a file outright. Configuration is a rumdl.toml file or a [tool.rumdl] table in pyproject.toml, an existing .markdownlint.json can be converted with rumdl import, and rumdl server speaks the Language Server Protocol so the same binary underlines problems in your editor. Think of it as what Ruff is to Python, applied to Markdown.

😤 Markdown linting pain points: markdownlint-cli means Node on every build agent, a node_modules tree for one check, and a lint step that crawls once the docs directory grows past a few hundred files. rumdl is a single static binary with no runtime behind it, it reads the config you already have, and installing it with apt puts it on the PATH of every project, CI job and pre-commit hook on the machine without npm or pip.
🚀 Why Latest Versions Matter: rumdl is still adding rules, fixes and configuration keys release by release, and each new rule is a check your documentation is not getting until you upgrade. Fix behaviour is refined in the same releases, so an old binary can rewrite a file in a way the current one no longer would, and a rumdl.toml written against today's documentation may name options an older build silently ignores. Neither Debian nor Ubuntu packages rumdl at all, so a current build is not a nicety here; it is the only way to have it through apt.

⚡ Key Features of rumdl

🏎️ markdownlint Rules at Rust Speed

The familiar MD001 to MD059 checks, run by a compiled binary with no interpreter to start. A documentation tree that took a lint step of its own in CI finishes fast enough to run on every save.

🔧 Fixes, Not Just Complaints

rumdl check --fix repairs the violations that have a safe fix: heading punctuation, list markers and indentation, blank lines around blocks, trailing spaces, fence style, in place across the whole tree.

🖊️ A Formatter Too

rumdl fmt reformats Markdown the way a code formatter does, so the shape of a file stops being a review comment. --check makes it a CI gate that changes nothing.

🔌 Editor Integration Built In

rumdl server is a Language Server, so VS Code, Neovim, Helix and Zed get the same diagnostics and the same fixes as the command line, from the one binary you installed.

♻️ Keeps Your markdownlint Config

rumdl import reads an existing .markdownlint.json or .markdownlintrc and writes the equivalent rumdl.toml, so switching a repository over is one command, not a rules audit.

📖 Rules That Explain Themselves

rumdl rule lists every check and rumdl explain MD013 describes one, with what it fixes and how to configure it, so nobody has to guess what a code in a CI log meant.

🚀 Always ahead of the official archives: Debian and Ubuntu freeze package versions when a release ships. This repository publishes new upstream releases typically within hours. A simple apt upgrade keeps you on the latest version.

📦 Installation from deb.griffo.io

Run the commands

Step 1: Add Repository

sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt update
install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt update

🆓 There is an always-free mirror. deb-free.griffo.io serves packages free forever, no account, no subscription, at most 2 months behind upstream, security fixes immediately. It currently carries cliamp, Ghostty, lazydocker, Oh My Posh and Zed; rumdl is not one of them, so the repository above is the only way to get it today, ask and it can be enrolled.

How the free mirror works →

Step 2: Install rumdl

# Install latest rumdl
sudo apt install rumdl

# Verify installation
rumdl --version
# Install latest rumdl
apt install rumdl

# Verify installation
rumdl --version

Step 3: First run

# Lint every Markdown file under the current directory
rumdl check .

# Fix everything that has a safe fix
rumdl check --fix .

# Write a starting rumdl.toml you can edit
rumdl init

# See what a rule code means
rumdl explain MD013

# Every subcommand and flag
rumdl --help

🎯 Basic Usage Examples

Checking and fixing:

# One file, a directory, or a glob
rumdl check README.md
rumdl check docs/
rumdl check "**/*.md"

# Fix in place, then show what is left
rumdl check --fix .

# Turn one noisy rule off for this run
rumdl check --disable MD013 .

# Run only the rules you care about right now
rumdl check --enable MD001,MD009,MD047 .

# Machine-readable output for a CI annotation step
rumdl check --output-format json .

Formatting:

# Reformat the files in place
rumdl fmt docs/

# Fail without writing anything, the CI form
rumdl fmt --check docs/

# See the changes before accepting them
rumdl fmt --diff docs/

Configuration and rules:

# Create rumdl.toml in this repository
rumdl init

# Convert a markdownlint config you already have
rumdl import .markdownlint.json

# What configuration is actually in effect, and from where
rumdl config

# List every rule, then read one in full
rumdl rule
rumdl explain MD024

# Shell completions, written where your shell reads them
rumdl completions bash | sudo tee /etc/bash_completion.d/rumdl > /dev/null
# Create rumdl.toml in this repository
rumdl init

# Convert a markdownlint config you already have
rumdl import .markdownlint.json

# What configuration is actually in effect, and from where
rumdl config

# List every rule, then read one in full
rumdl rule
rumdl explain MD024

# Shell completions, written where your shell reads them
rumdl completions bash | tee /etc/bash_completion.d/rumdl > /dev/null

🔧 Tool Integrations

rumdl is built to drop into the places markdownlint already sits:

  • Your editor: rumdl server is a Language Server, so Neovim, Helix, VS Code and Zed show the diagnostics inline and apply the fixes as code actions
  • markdownlint configs: rumdl import turns .markdownlint.json or .markdownlintrc into rumdl.toml, and the rule codes are the same ones your team already argues about
  • pyproject.toml: a [tool.rumdl] table keeps the settings next to your Ruff and pytest configuration instead of adding another dotfile
  • CI and pre-commit: rumdl check . exits non-zero on violations and rumdl fmt --check gates formatting, with no Node or Python runtime to install first on the agent
  • Static site generators: the docs sources for MkDocs, Hugo, Docusaurus and mdBook are ordinary Markdown, so the same check runs over them before the build does

🚀 Why Choose deb.griffo.io?

📊 Repository Comparison:
  • Official Ubuntu: does not package rumdl, apt install rumdl fails on a stock system
  • npm or pip: works, but ties a Markdown check to a Node or Python environment and reinstalls it in every project and every CI image
  • Building from source: current, but a Rust toolchain on every machine and a binary that apt knows nothing about
  • deb.griffo.io: latest version with automatic updates

📦 Package Build Repository

The Ubuntu packages are automatically built and maintained in this GitHub repository:

🔗 Related Packages

Also available from deb.griffo.io:

🎯 Perfect for: keeping a documentation site consistent without arguing about heading levels in review, replacing markdownlint-cli in a CI pipeline that no longer needs Node, fixing years of accumulated Markdown drift in one --fix run, and getting the same warnings in your editor that the build will give you.

💝 Support This Project

If this repository saves you time and effort, please consider supporting it!

⭐ Star on GitHub 🐦 Share on Twitter

Just after the command? See apt install rumdl, one page covering Debian and Ubuntu.

📦 Recent releases from this repository

📚 Release-specific install guides

❓ Frequently asked questions

Is rumdl in the official Ubuntu repositories?

No, rumdl is not packaged in the official Ubuntu archives. This repository is currently the only apt source, serving rumdl 0.2.60.

How do I install the latest rumdl on Ubuntu?

Add the deb.griffo.io repository once using the instructions above, then run: sudo apt install rumdl. New releases arrive through the normal sudo apt upgrade.

Are the packages signed and how are they built?

Every package is signed with the repository's GPG key (EA0F721D231FDD3A0A17B9AC7808B4DD62C41256) and built from upstream releases in public GitHub packaging repositories that anyone can inspect.

Which Ubuntu releases are supported?

Ubuntu 22.04 Jammy, 24.04 Noble, 25.10 Questing and 26.04 Resolute.