mdcat

A cat command for Markdown — renders Markdown with formatting, syntax-highlighted code blocks, and inline images directly in your terminal.

mdcat is a cat-like tool for Markdown files. Instead of dumping raw Markdown syntax to the terminal, it renders headings, bold, italic, lists, blockquotes, and code blocks with proper formatting and syntax highlighting — and even displays inline images in terminals that support it.

It's the natural companion for reading README.md, changelogs, and documentation files without leaving the terminal.

Features

  • Full Markdown rendering — headings, emphasis, lists, blockquotes, horizontal rules, and tables all render cleanly
  • Syntax highlighting — fenced code blocks are highlighted using the same syntect engine as bat
  • Inline images — displays images directly in the terminal via the Kitty graphics protocol, iTerm2 inline images, or Sixel (depending on terminal support)
  • Clickable links — renders hyperlinks using OSC 8 terminal hyperlinks in supported terminals; displays the URL as a footnote in others
  • Paging — pipes output through a pager (less) when the content is longer than the terminal
  • CommonMark compliant — parses Markdown according to the CommonMark spec

Installation

cargo install mdcat

Or via your system package manager:

# Debian / Ubuntu
apt install mdcat

# Fedora
dnf install mdcat

# macOS
brew install mdcat

# Arch Linux
pacman -S mdcat

# Nix
nix-env -iA nixpkgs.mdcat

Usage

# Render a Markdown file
mdcat README.md

# Render from stdin
curl -sL https://raw.githubusercontent.com/BurntSushi/ripgrep/master/README.md | mdcat

# Disable paging (always print to stdout directly)
mdcat --no-pager README.md

# Print without any formatting (plain text)
mdcat --plain README.md

# Render multiple files in sequence
mdcat CHANGELOG.md README.md

Terminal compatibility

FeatureKittyiTerm2WezTermVTE (GNOME Terminal, etc.)xterm
Inline images✅✅✅❌❌
Clickable links✅✅✅✅❌
Syntax highlighting✅✅✅✅✅

In terminals without image support, image alt text is shown instead.

Tips

  • Alias cat for .md files — add a shell function so opening a Markdown file automatically uses mdcat:
# bash / zsh
function cat() {
  if [[ "$1" == *.md ]]; then
    mdcat "$@"
  else
    command cat "$@"
  fi
}
  • Pair with bat — use bat for source code files and mdcat for documentation; together they make browsing any project directory in the terminal much more pleasant.
  • Read man page alternatives — many projects ship docs/ directories full of Markdown. mdcat makes reading them as comfortable as a web browser.