A modern, cross-platform markdown viewer and editor with platform-native styling.
Built with Tauri v2, React 19, and TypeScript.
The samples/ directory is a tiny demo workspace. Open it as a folder (Cmd/Ctrl+Shift+O) to see every rendering feature plus working wikilinks. samples/README.md is the showcase document; the surrounding files exist so its [[wikilinks]] resolve.
- GitHub Flavored Markdown, alerts, footnotes, heading anchors, and emoji shortcodes
- Wikilinks and backlinks with hover preview and inline note embeds (
[[note]],![[note]]) - Math (KaTeX), Mermaid and D2 diagrams, CSV/TSV tables, and syntax-highlighted code (6 themes)
- YAML frontmatter, sanitised inline HTML, and bidirectional (RTL) text
- Local and remote images with a zoomable lightbox
- Per-syntax toggles in Settings → Markdown
- Source, split, and live-preview modes per tab
- New untitled (in-memory) documents (
Cmd/Ctrl+N), save withCmd/Ctrl+S, and an optional Auto Save toggle - Format toolbar, inline formatting shortcuts, and wrap-selection
- Wikilink autocomplete, spell check, and Vim/VSCode keymaps
- Undo/redo for programmatic edits (task toggles, etc.)
- Folder workspaces with a sidebar tree, tabs, and create/rename/move/delete; create a new workspace from within the app
- Graph view (
Cmd/Ctrl+G), command palette (Cmd/Ctrl+K, withtag:/ frontmatter filters), a sidebar Tags panel, and in-document search (Cmd/Ctrl+F) - Table of contents, resizable panels, zoom, and session/window restore
- Drag-and-drop, file associations, and a
glyphCLI (glyph file.md,glyph ~/notes/)
- Jupyter notebooks (
.ipynb) and JSON Canvas (.canvas) boards - Print and export to HTML, DOCX, EPUB, and PDF (vector diagrams, self-contained, offline)
- Export a whole workspace as a static website, in-app or headless from the CLI
- Per-workspace, Git-backed Cloud Sync to any remote you control, with a status-bar ahead/behind/dirty pill
- System / Light / Dark themes and platform-native styling (macOS vibrancy, Windows Mica)
- Localized, RTL-aware UI; customizable fonts, size, line height, and content width
- Chat sidebar, quick actions (summarize, explain, translate, simplify), and text-to-speech
- Providers: Claude, OpenAI, and Ollama (local)
- macOS, Windows, and Linux; native menu bar with remappable shortcuts and update notifications
- iOS and Android (experimental): open and read single files, with a touch layout for phones and tablets; folder workspaces are desktop-only for now
- Plugins (experimental): extend rendering, palette, status bar, dictionaries, and themes; sandboxed by default with consent-gated permissions and checksum-verified marketplace installs (see the plugin docs)
- Local-first with opt-in crash reporting (off by default; see Privacy & Error Reporting)
brew tap glyph-md/tap
brew trust glyph-md/tap
brew install --cask glyphbrew trust is required once because Glyph ships from a third-party tap; recent Homebrew refuses to load casks from untrusted taps.
winget install hamidfzm.Glyphchoco install glyphscoop bucket add glyph-md https://github.com/glyph-md/scoop-bucket
scoop install glyphsudo snap install glyphyay -S glyph-md-binbrew tap glyph-md/tap
brew install glyphsudo add-apt-repository ppa:hamidfzm/glyph
sudo apt update
sudo apt install glyphcurl -fsSL https://glyph-md.github.io/apt-repo/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/glyph.gpg
echo "deb [signed-by=/usr/share/keyrings/glyph.gpg] https://glyph-md.github.io/apt-repo stable main" | sudo tee /etc/apt/sources.list.d/glyph.list
sudo apt update
sudo apt install glyphsudo tee /etc/yum.repos.d/glyph.repo < <(curl -fsSL https://glyph-md.github.io/rpm-repo/glyph.repo)
sudo dnf install glyphDownload the .deb, .rpm, or .AppImage from Releases.
# Debian/Ubuntu
sudo dpkg -i glyph_*.deb
# Fedora/RHEL
sudo dnf install ./Glyph-*.rpm
# AppImage
chmod +x Glyph_*.AppImage
./Glyph_*.AppImageInstalling from a package manager puts a glyph command on your PATH:
glyph README.md # open a file
glyph ~/notes/ # open a folder as a workspace
glyph --help # usage, flags, and export formats
# export a document (headless; exits when done)
glyph README.md --export pdf # writes README.pdf beside it
glyph notes.md --export docx --out ~/out.docx
# export a workspace as a static website
glyph ~/notes/ --export site --out ./site--export accepts pdf, docx, epub, html, and site. Without --out a document export writes beside its input with the format's extension; site always needs one. Exports run without showing a window, print the path they wrote to stdout, and exit nonzero with a message on stderr if they fail, so they can drive CI publishing (on Linux runners, wrap the command in xvfb-run). A document export includes the table of contents when Settings > Print has it enabled.
The command is provided by the Homebrew cask (macOS), Chocolatey or Scoop (Windows), and the deb package or Homebrew formula (Linux). The macOS .dmg and Windows MSI install the app only; use a package manager for the terminal command.
pnpm install
pnpm tauri devOpen a file or folder via CLI argument:
pnpm tauri dev -- -- /path/to/file.md
pnpm tauri dev -- -- /path/to/folderBuild for production:
pnpm tauri buildpnpm test # Run frontend tests (Vitest)
pnpm test:coverage # Run with coverage report
cd src-tauri && cargo test # Run Rust testspnpm lint # Lint TypeScript (Biome)
pnpm format:check # Check formatting (Biome)
pnpm check # Lint + format + organize imports
cd src-tauri && cargo clippy # Lint RustGlyph is built around speed, native feel, and offline-first usage. The tables below compare its current capabilities against widely used markdown apps. Items marked "planned" track to issues on the roadmap.
| Feature | Glyph | Obsidian | Typora | MarkText | Zettlr | Joplin | VS Code |
|---|---|---|---|---|---|---|---|
| GitHub Flavored Markdown | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Math (KaTeX/MathJax) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | plugin |
| Mermaid diagrams | ✅ | ✅ | ✅ | ✅ | ✅ | plugin | |
| D2 diagrams | ✅ | plugin | ❌ | ❌ | ❌ | ❌ | plugin |
| Syntax-highlighted code | ✅ (6 themes) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| GitHub-style alerts | ✅ | ✅ | ❌ | ❌ | ✅ | ||
| YAML frontmatter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Emoji shortcodes | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | plugin |
Jupyter notebooks (.ipynb) |
✅ | plugin | ❌ | ❌ | ❌ | ❌ | ✅ |
JSON Canvas (.canvas) |
✅ | ✅ | ❌ | ❌ | ❌ | ❌ | plugin |
| Feature | Glyph | Obsidian | Typora | MarkText | Zettlr | Joplin | VS Code |
|---|---|---|---|---|---|---|---|
| Source editor | ✅ | ✅ | n/a | ✅ | ✅ | ✅ | ✅ |
| WYSIWYG / inline preview | ✅ | ✅ | ✅ | ❌ | |||
| Split view | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ |
| Spell check | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Feature | Glyph | Obsidian | Typora | MarkText | Zettlr | Joplin | VS Code |
|---|---|---|---|---|---|---|---|
| Tabs | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ |
| Folder / workspace (vault) sidebar | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Wikilinks & backlinks | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | plugin |
| Graph view | ✅ | ✅ | ❌ | ❌ | ❌ | plugin | plugin |
| Tag / metadata search | planned | ✅ | ❌ | ❌ | ✅ | ✅ | plugin |
| Command palette | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| In-document search | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Table of contents | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Live reload on disk change | ✅ | n/a | n/a | n/a | ✅ |
| Feature | Glyph | Obsidian | Typora | MarkText | Zettlr | Joplin | VS Code |
|---|---|---|---|---|---|---|---|
| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| Export PDF | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | plugin |
| Export HTML / DOCX / EPUB | ✅ | plugin | ✅ (Pandoc) | ✅ (Pandoc) | plugin |
| Feature | Glyph | Obsidian | Typora | MarkText | Zettlr | Joplin | VS Code |
|---|---|---|---|---|---|---|---|
| AI (multi-provider, local) | ✅ | plugin | ❌ | ❌ | ❌ | ❌ | plugin |
| Text-to-speech | ✅ | plugin | ❌ | ❌ | ❌ | ❌ | plugin |
| Plugin / extension API | ✅ | ❌ | ❌ | ✅ | ✅ | ||
| Cloud sync | paid | ❌ | ❌ | ❌ | ✅ | ✅ | |
| Graph view | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | plugin |
| Feature | Glyph | Obsidian | Typora | MarkText | Zettlr | Joplin | VS Code |
|---|---|---|---|---|---|---|---|
| Native window styling | ✅ (vibrancy/Mica) | ||||||
| Native bundle (non-Electron) | ✅ Tauri (~3 MB core) | ❌ | ✅ Qt | ❌ | ❌ | ❌ | ❌ |
| macOS / Windows / Linux | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Mobile (iOS / Android) | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ | |
| File associations + CLI | ✅ | ✅ | ❌ | ✅ | |||
| Open source | ✅ MIT | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ |
| Free | ✅ | ✅ | $14.99 | ✅ | ✅ | ✅ | ✅ |
Legend: ✅ supported ·
Note on "WYSIWYG / inline preview": Glyph's editor has split-view live preview and styled markdown tokens (bold/italic render as bold/italic in source), but markdown markers remain visible. Typora-style fully inline rendering is not implemented.
Glyph is local-first: your documents are read and written on your machine. Nothing is uploaded anywhere unless you opt into Cloud Sync for a workspace, which pushes that workspace to a Git remote you control.
Crash and error reporting is opt-in and off by default. Nothing is sent until you turn it on in Settings → Privacy → Send crash reports, and even then it is only active in production builds (never during development).
When enabled, reports include only:
- Stack traces of the crash or unhandled error
- Operating system and Glyph version
- The error message
They never include your file contents, file paths, file names, or any links: these are stripped from every report before it is sent. You can turn reporting off again at any time from the same setting.
Glyph is free and open source. These sponsors help keep it that way.
Sentry provides error monitoring through their Sponsored Business plan, which we use for the opt-in crash reporting above.
If Glyph is useful to you, donations are welcome via crypto:
| Network | Asset | Address |
|---|---|---|
| Solana | SOL | <pending> |
| BNB Smart Chain (BEP-20) | USDT | <pending> |
| Tron (TRC-20) | USDT | <pending> |