A pure bash markdown viewer for the terminal. Zero dependencies. Works everywhere.
Inspired by bat, glow, and the Unix philosophy of doing one thing well.
Left: busymd (pure bash, zero dependencies) | Right: cat/less
Left: busymd | Right: cat/less
- Syntax highlighting — Headers, lists, code blocks, links, images, tables, and more
- Pure bash — No Python, Ruby, Node.js, or Go. Just bash.
- Zero dependencies — Works on busybox, Alpine, anywhere with bash
- Portable — Drop it in as a shell function or standalone script
- Minimal — Under 300 lines of code
View a markdown file:
busymd.sh README.mdPipe from stdin:
cat README.md | busymd.sh
echo "# Hello" | busymd.sh
curl -s https://example.com/README.md | busymd.shSkip the pager (disable lazy loading):
busymd.sh --no-pager README.md- Headers (all 6 levels)
- Bold, italic, bold+italic,
strikethrough inline codeand fenced code blocks with syntax highlighting- Lists (ordered, unordered, nested, task lists)
- Links and images
- Tables
- Blockquotes
- Horizontal rules
- Admonitions (
!!! note,!!! warning, etc.)
Use as a bash function (recommended):
# Add to your ~/.bashrc or ~/.zshrc
source /path/to/busymd.sh
# Now you can use 'busymd' directlyOr as a one-liner function:
# Minimal wrapper - no sourcing needed
busymd() { bash /path/to/busymd.sh "$@"; }Install as a standalone command:
curl -sL https://raw.githubusercontent.com/avilum/busymd/refs/heads/master/busymd.sh -o ~/.local/bin/busymd && chmod +x ~/.local/bin/busymdOr just download and run:
wget https://raw.githubusercontent.com/avilum/busymd/refs/heads/master/busymd.sh
chmod +x busymd.sh
./busymd.sh README.mdWhen using the pager (less), you can:
| Key | Action |
|---|---|
g / G |
Go to beginning / end |
j / k |
Scroll down / up |
Space |
Page down |
/pattern |
Search forward |
n / N |
Next / previous match |
q |
Quit |
Sometimes all you need is to peek inside a README or markdown file — just to see how it actually renders, understand those code blocks, or check formatting without leaving your terminal.
I wanted something simple and lean for viewing Markdown — similar to how VSCode or GitHub render .md files, but right in the shell. No GUI, no browser, no fuss.
There are great tools out there like bat, glow, and mdcat, but they often come with heavier dependencies or larger codebases. busymd focuses on being minimal and fast — just pure bash, under 400 lines, and it works anywhere.
Use it as a standalone script, source it as a bash function, or copy/paste it wherever you need it.
busymd runs on:
- Alpine Linux
- Busybox
- Docker containers
- Old servers
- Your laptop
- Pretty much anywhere with bash 4.0+
# Install with curl
curl -sL https://raw.githubusercontent.com/avilum/busymd/refs/heads/master/busymd.sh -o ~/.local/bin/busymd && chmod +x ~/.local/bin/busymd.sh
# Quick preview of any GitHub repo's README
curl -s https://raw.githubusercontent.com/avilum/secimport/master/README.md | busymd.sh
# Source it once in your shell, use it anywhere
source ~/.local/bin/busymd.sh
busymd README.md
cat CHANGELOG.md | busymd
# Or with an alias for cleaner syntax
source ~/.local/bin/busymd.sh && alias md='busymd'
md README.md
# One-liner wrapper function
busymd() { bash ~/.local/bin/busymd.sh "$@"; }
busymd CHANGELOG.md
# Chain with other tools
find . -name "*.md" -exec busymd.sh {} \;- Bash 4.0+
- A terminal that supports ANSI colors
That's it. No pip, npm, gem, cargo, or go install required.
MIT