A Markdown Editor for Mac
  • TypeScript 62.1%
  • Svelte 27.3%
  • Rust 8.3%
  • JavaScript 1.4%
  • CSS 0.6%
  • Other 0.3%
Find a file
2026-04-16 09:08:21 -07:00
.github/workflows ci: add svelte-check and cargo clippy; fix recent_files ptr_arg lint 2026-04-12 02:05:08 -07:00
.vscode feat: Day 1 — Tauri + Svelte scaffold with CI pipeline 2026-04-08 14:12:30 -07:00
docs docs: add screenshots and overhaul README for GitHub front page 2026-04-16 09:03:19 -07:00
src chore: prettier formatting fixes 2026-04-16 09:07:04 -07:00
src-tauri chore: rustfmt formatting fixes 2026-04-16 09:08:21 -07:00
static feat: Day 1 — Tauri + Svelte scaffold with CI pipeline 2026-04-08 14:12:30 -07:00
tests fix: wire FindBar ✕ close button to hide the find bar 2026-04-12 02:01:26 -07:00
.gitignore chore: ignore coverage/ and large fixture in Prettier/ESLint/git 2026-04-09 22:27:17 -07:00
.npmrc feat: Day 1 — Tauri + Svelte scaffold with CI pipeline 2026-04-08 14:12:30 -07:00
.prettierignore chore: ignore coverage/ and large fixture in Prettier/ESLint/git 2026-04-09 22:27:17 -07:00
.prettierrc feat: Day 1 — Tauri + Svelte scaffold with CI pipeline 2026-04-08 14:12:30 -07:00
ARCHITECTURE.md chore: prettier formatting fixes 2026-04-16 09:07:04 -07:00
eslint.config.js fix(lint): resolve all ESLint errors blocking CI 2026-04-09 20:16:41 -07:00
EXECUTION.md chore: prettier --write auto-format 2026-04-09 20:29:25 -07:00
package-lock.json fix(build): point frontendDist at ../build; bump @tauri-apps/api to 2.10.1 2026-04-09 22:36:00 -07:00
package.json chore: bump version to 0.2.0 2026-04-16 09:04:49 -07:00
playwright.config.ts feat: Day 1 — Tauri + Svelte scaffold with CI pipeline 2026-04-08 14:12:30 -07:00
README.md chore: prettier formatting fixes 2026-04-16 09:07:04 -07:00
svelte.config.js refactor: remove scaffold bloat 2026-04-08 15:05:57 -07:00
tsconfig.json feat: Day 1 — Tauri + Svelte scaffold with CI pipeline 2026-04-08 14:12:30 -07:00
vite.config.ts feat: implement Day 7 file open flow and Tauri command wiring 2026-04-08 17:58:43 -07:00
vitest.config.ts feat: implement Day 7 file open flow and Tauri command wiring 2026-04-08 17:58:43 -07:00

mdreader icon

mdreader

A native macOS markdown editor that renders as you type — no preview pane.

macOS Tauri 2 Svelte 5 License: MIT


Screenshots

Light theme

mdreader in light mode

Dark Theme

mdreader in dark mode

What it is

mdreader is a minimal, distraction-free markdown editor for macOS. It uses TipTap (ProseMirror) for rich editing and CodeMirror for source mode — markdown syntax is parsed on the fly, so headings, bold, tables, and code blocks render immediately without a split-pane preview.


Features

In-place rendering Markdown renders as you type — no preview pane required
Source mode Toggle raw markdown with Cmd+/; edits sync back to rich mode
Syntax highlighting Fenced code blocks highlighted via highlight.js
Find & Replace Cmd+F to find, Cmd+H to replace
Auto-save Opt-in via File Auto Save; saves every 30 seconds
Dark mode Follows system; cycle with Cmd+Shift+T — persists across restarts
Distraction-free Cmd+Shift+F hides sidebar and status bar
Quit protection Native dialog when closing with unsaved changes
Font scaling Cmd+= / Cmd+- to resize editor text
Word count Live count in the status bar
Recent files Sidebar lists recently opened files
External links Clicked links open in your default browser

Supported markdown

Headings · Bold · Italic · Strikethrough · Inline code · Blockquotes · Ordered & unordered lists · Task lists · Tables · Fenced code blocks


Keyboard shortcuts

Shortcut Action
Cmd+O Open file
Cmd+S Save
Cmd+Shift+S Save as
Cmd+N New file
Cmd+/ Toggle source mode
Cmd+Shift+F Toggle distraction-free mode
Cmd+Shift+L Toggle sidebar
Cmd+Shift+T Cycle theme (light → dark → system)
Cmd+= / Cmd+- Increase / decrease font size
Cmd+F Find
Cmd+H Find and replace

Tech stack

Layer Technology
Native shell & file I/O Tauri 2 (Rust)
UI Svelte 5 with runes reactivity
Rich editor TipTap 2 (ProseMirror)
Source editor CodeMirror 6
Markdown serialization tiptap-markdown
Syntax highlighting highlight.js

Development

npm install
npm run dev        # Vite dev server (browser only, no Tauri)
npm run tauri dev  # full Tauri app with native features

Testing

npm run test:unit          # Vitest unit tests
npx playwright test        # e2e tests against Vite dev server
cd src-tauri && cargo test # Rust unit tests

Building

npm run tauri build        # produces a .dmg in src-tauri/target/release/bundle/