Markdown viewer · ~10 MB

A quiet place for markdown.

Open any .md file. Render Mermaid graphs that actually work. Read with typography that respects your eyes. Native binary, ~10 MB.

Free · Open source · macOS · No telemetry

architecture.md

Architecture

The pipeline pipes react-markdown through remark-gfm and rehype-highlight, then hands every ```mermaid block to a dedicated renderer.

.md file remark prose mermaid view
// Re-init Mermaid on theme switch
const init = (theme) => mermaid.initialize({
  startOnLoad: false,
  theme: theme === "dark" ? "dark" : "default",
  securityLevel: "strict",
  fontFamily: "Geist, system-ui, sans-serif",
});
Blocks are identified by the ```mermaid fence, so code and diagrams freely mix in the same document.
~/Documents/architecture.md 184 words 1,247 chars read
~10 MB binary Mermaid 11 GitHub Flavored Markdown No telemetry

Section 01 / Diagrams

Diagrams that actually render.

Mermaid blocks are identified by the standard ```mermaid fence. Flowchart, sequence, class, ER, gantt, journey, C4, state and gitGraph. Each block is re-rendered on theme switch so the palette always matches.

  • Flowchart
  • Sequence
  • Class · ER · State
  • Gantt · Journey · C4
  • gitGraph
Source · markdown sequence.md
```mermaid
sequenceDiagram
  User->>App: open file
  App->>FS: readTextFile
  FS-->>App: "# Hello"
  App->>Mermaid: render block
  Mermaid-->>App: svg
  App-->>User: rendered
```
Rendered · svg live
User App FS Mer. open() read "# Hello" render svg → user

Theme-reactive rendering

Mermaid is re-initialized on every theme switch so existing SVGs are regenerated with the right palette. No stale colors when you toggle dark mode.

Section 02 / Surface

Built around the act of reading.

No floating toolbars, no chrome you didn't ask for. The window stays out of the way until you need it.

Read · Edit

Split-pane live preview

Toggle with ⌘E. Edit on the left, watch the prose recompute on the right.

# Title

A **quiet** place for markdown.

- Mermaid
- Highlighting
- Themes
Title

A quiet place for markdown.

  • · Mermaid
  • · Highlighting
  • · Themes

Themes

Light, dark, persisted.

Stored to local. Mermaid + hljs recompute on every switch.

ink
coal

Drag · Drop

Throw a file at it.

Native dialog or drag a file onto the window.

Drop .md here

GitHub Flavored MD

Tables, tasks, footnotes.

  • Task lists
  • Tables with alignment
  • Strikethrough · autolinks
  • Footnotes

Code · highlight.js

Tokens that don't shout.

// highlight.js 11 · ~190 languages
fn render(md: &str) -> Html {
  let ast = parse(md);
  ast.to_html()
}

Native · Rust

~10 MB native binary.

No Electron. No 250 MB RAM tax. Boots before your dock icon stops bouncing.

10
MB BIN
7.7
MB DMG
0
NETWORK

Section 03 / Hands

Five keys.
Nothing else.

Every action you'll do daily lives one keystroke away. The mouse stays optional.

Open file O
Save S
Find in document F
Toggle read · edit E
Toggle theme D

Press D on this page to try the theme toggle ↗

Section 04 / Honest notes

The boring details, on purpose.

Why not Obsidian / VS Code?

MDora is not a knowledge base. It's a viewer first, with a basic split-pane edit mode behind ⌘E for fixing typos. The chrome scales down to match.

Telemetry

None. The binary makes no network calls. Open a file, render it.

MDora app icon

Read your markdown in peace.

Free, open source, no account. The first file you open will probably be README.md.