mo is a Markdown viewer that opens .md files in a browser.
- GitHub-flavored Markdown (tables, task lists, footnotes, etc.)
- Syntax highlighting (Shiki)
- Mermaid diagram rendering
- Dark / light theme
- File grouping
- Table of contents panel
- Flat / tree sidebar view with drag-and-drop reorder
- Live-reload on save
homebrew tap:
$ brew install k1LoW/tap/momanually:
Download binary from releases page
$ mo README.md # Open a single file
$ mo README.md CHANGELOG.md docs/*.md # Open multiple files
$ mo spec.md --target design # Open in a named groupmo opens Markdown files in a browser with live-reload. When you save a file, the browser automatically reflects the changes.
By default, mo runs a single server on port 6275. If a server is already running on the same port, subsequent mo invocations add files to the existing session instead of starting a new one.
$ mo README.md # Starts a mo server in the background
$ mo CHANGELOG.md # Adds the file to the running mo serverTo run a completely separate session, use a different port:
$ mo draft.md -p 6276Files can be organized into named groups using the --target (-t) flag. Each group gets its own URL path and sidebar.
$ mo spec.md --target design # Opens at http://localhost:6275/design
$ mo api.md --target design # Adds to the "design" group
$ mo notes.md --target notes # Opens at http://localhost:6275/notesThe sidebar supports flat and tree view modes. Flat view shows file names only, while tree view displays the directory hierarchy.
| Flat | Tree |
|---|---|
![]() |
![]() |
mo runs in the background by default — the command returns immediately, leaving the shell free for other work. This makes it easy to incorporate into scripts, tool chains, or LLM-driven workflows.
$ mo README.md
mo: serving at http://localhost:6275 (pid 12345)
$ # shell is available immediatelyUse --status to check all running mo servers, and --shutdown to stop one:
$ mo --status # Show all running mo servers
$ mo --shutdown # Shut down the mo server on the default port
$ mo --shutdown -p 6276 # Shut down the mo server on a specific portIf you need the mo server to run in the foreground (e.g. for debugging), use --foreground:
$ mo --foreground README.mdClick the restart button (bottom-right corner) to restart the mo server process. The current session — all open files and groups — is preserved across the restart. This is useful when you have updated the mo binary and want to pick up the new version without re-opening your files.
| Flag | Short | Default | Description |
|---|---|---|---|
--target |
-t |
default |
Group name |
--port |
-p |
6275 |
Server port |
--open |
Always open browser | ||
--no-open |
Never open browser | ||
--status |
Show all running mo servers | ||
--shutdown |
Shut down the running mo server | ||
--foreground |
Run mo server in foreground |
Requires Go and pnpm.
$ make build- yusukebe/gh-markdown-preview: GitHub CLI extension to preview Markdown looks like GitHub.



