A fast, lightweight markdown viewer for Linux built with Rust and egui. Designed for distraction-free reading with excellent typography and syntax highlighting.
- GitHub Flavored Markdown - Full GFM support including tables, task lists, and footnotes
- Syntax Highlighting - 200+ languages via syntect with beautiful color schemes
- Mermaid Diagrams - Flowcharts, sequence diagrams, and more rendered natively via merman (click to enlarge)
- HTML Tables - Rendered as formatted grids with proper cell padding
- Images & SVG - Embedded and remote image support (PNG, JPEG, GIF, SVG, HTTP URLs)
- Unicode Support - System font fallbacks (Noto, DejaVu) for emojis, CJK, and non-Latin scripts
- 60 FPS Rendering - Smooth scrolling with viewport-based lazy rendering
- Typography - 1.5x line height for optimal readability (WCAG 2.1 compliant)
- Tab System - Open multiple documents with tab bar (Ctrl+Click links to open in new tab)
- File Explorer - Hierarchical sidebar with lazy-loading directories and sorting options
- Outline Sidebar - Click-to-navigate table of contents from document headers
- Navigation Buttons - Back/forward buttons in title bar for quick history navigation
- Per-Tab History - Independent back/forward navigation within each tab (Alt+Left/Right)
- Internal Links - Navigate between markdown files with relative links
- Dark & Light Themes - Toggle with Ctrl+D
- Zoom - 50% to 300% zoom (Ctrl++/-/0 or Ctrl+Scroll)
- Live Reload - Auto-refresh on file changes (enabled by default)
- Drag and Drop - Drop markdown files onto the window to open
- Native Dialogs - System file picker integration
- Session Persistence - Remembers open tabs, theme, zoom, and sidebar state
- Cross-Platform - Works on X11 and Wayland
Mermaid flowchart, tech stack table, file explorer, and outline sidebar
Rust and YAML code blocks with semantic coloring, mermaid sequence diagram
Documentation with bullet lists, blockquotes, inline code, and bash code blocks
JSON syntax highlighting, inline code rendering, and outline navigation
Troubleshooting table with inline code, ordered lists, and hyperlinks
| Shortcut | Action |
|---|---|
| Ctrl+T | New tab (open file dialog) |
| Ctrl+W | Close current tab |
| Ctrl+Tab | Next tab |
| Ctrl+Shift+Tab | Previous tab |
| Ctrl+1-9 | Switch to tab 1-9 |
| Shortcut | Action |
|---|---|
| Ctrl+O | Open file dialog |
| Alt+Left | Navigate back in history |
| Alt+Right | Navigate forward in history |
| Click link | Navigate in current tab |
| Ctrl+Click link | Open link in new tab |
| Shortcut | Action |
|---|---|
| Ctrl+D | Toggle dark/light mode |
| Ctrl+Shift+E | Toggle file explorer |
| Ctrl+Shift+O | Toggle outline sidebar |
| Ctrl++ / Ctrl+= | Zoom in |
| Ctrl+- | Zoom out |
| Ctrl+0 | Reset zoom to 100% |
| Ctrl+Scroll | Zoom with mouse wheel |
| Shortcut | Action |
|---|---|
| F5 | Toggle file watching |
| Ctrl+Q | Quit application |
# Using yay
yay -S md-viewer-git
# Using paru
paru -S md-viewer-gitsudo snap install md-viewercargo install md-viewer# Clone the repository
git clone https://github.com/aydiler/md-viewer
cd md-viewer
# Build release binary
cargo build --release
# Install to ~/.local/bin (optional)
make installsudo pacman -S --needed \
base-devel clang pkg-config \
libxcb libxkbcommon openssl \
gtk3 fontconfig dbus zenity \
xdg-desktop-portal xdg-desktop-portal-gtk# Open a file (live reload is enabled by default)
md-viewer README.md
# Disable live reload
md-viewer README.md --no-watch- Binary size: ~35 MB (includes syntax highlighting, mermaid renderer, math rendering, image support, X11+Wayland). ~7 MB as snap.
- Startup time: < 200ms
- Rendering: 60 FPS with viewport-based clipping
- Memory: Uses mimalloc for improved allocation performance
- Platform: Linux (X11 and Wayland via glow backend)
- eframe/egui - Immediate mode GUI framework
- egui_commonmark - Markdown rendering (vendored fork with typography improvements)
- merman - Mermaid diagram rendering
- syntect - Syntax highlighting
- notify - File watching
- rfd - Native file dialogs
MIT




