A minimalist, portable WYSIWYG Markdown editor — with full right‑to‑left (RTL) support.
Type Markdown, see it formatted inline — Typora‑style. Powerful enough for real writing (tables, math, code, footnotes, and right‑to‑left text for Persian, Arabic and Hebrew), yet a single ~7 MB executable that starts instantly and stays out of your way.
Features · Screenshots · Download · Configuration · Building
- Deceptively powerful. Inline WYSIWYG editing, tabbed documents, a block menu, GFM tables with drag‑to‑reorder, KaTeX math, syntax‑highlighted code, find & replace, right‑to‑left support, and self‑contained HTML / PDF export.
- Extremely lean. No Electron. Mowl is built on Tauri and your operating system's own WebView, so the whole app is a single portable executable of roughly 7 MB — no installer required, nothing to unpack, no background services.
- Genuinely fast. The core is Rust, the window is native, and cold start is effectively instant. It feels like a text editor, not a web app.
- Portable by design. One hand‑editable
settings.tomllives next to the executable. DropMowl.exeon a USB stick and your preferences travel with it.
Powered by Milkdown Crepe (ProseMirror). Headings, bold, lists, quotes and the rest render as you type — but the document on disk is always plain, portable Markdown.
Select some text, then paste a URL with Ctrl/Cmd+V — the selection becomes
the link text and the pasted URL becomes its target. No []() typing, no dialog.
Prefer the keyboard? Select text and press Ctrl/Cmd+K to turn it into a link
using whatever URL is on the clipboard (or an empty link you can fill in).
 renders inline in the editor, including relative paths
resolved against the document's own folder (./assets/diagram.png,
../shared/logo.svg) and absolute local paths — not just http(s) URLs. Add one
from the ⠿ block menu ("Image"), then paste a link or pick a file.
Mowl is a Markdown editor with genuine RTL support, not an LTR editor with a
CSS flip bolted on. One click toggles the whole document between LTR and RTL
for Persian, Arabic or Hebrew writing, quotes and lists included. The choice is
remembered per install. Code blocks are always kept left‑to‑right — even inside
an RTL document — and the direction is carried through to HTML export
(<html dir="rtl">).
Hover any block and click the ⠿ button for a quick menu that acts on that block:
- Turn into — Text, Heading 1–3, bullet list, numbered list, quote, code block, or table
- Insert a table, an image, a divider, or a blank line above / below
- Duplicate or delete the block
The current block's type is highlighted so you always know what you're editing.
The turn‑into types also have keyboard shortcuts — Ctrl/Cmd+0–7 (Text, H1, H2,
H3, bullet list, numbered list, quote, code block) — applied to the selection just
like the menu.
Press Ctrl/Cmd+. for a searchable emoji picker, or just type a :shortcode:
(e.g. :tada: → 🎉, :+1: → 👍) and it turns into the emoji as you close the
colon. Native Unicode — no images, nothing downloaded.
Open several documents as tabs. Close Mowl, reopen it, and your tabs — and even their scroll positions — come back. (Toggleable in the config.)
Toggle between the rich editor and the raw Markdown in a plain text area with
Ctrl/Cmd+Shift+C. Tab / Shift+Tab indent and outdent selected lines, and
native undo keeps working.
Ctrl/Cmd+F to find, Ctrl/Cmd+H to replace — works in both the WYSIWYG editor
and the source view.
Full GitHub‑Flavored Markdown tables. Drag rows and columns to reorder them,
add a table straight from the block menu, and hand‑typed tables are automatically
aligned and padded in the saved .md file so the raw Markdown stays readable.
- KaTeX math, inline (
$…$) and display ($$…$$) - Mermaid diagrams (flowcharts and more) in
```mermaidcode blocks, drawn right below the code - Syntax‑highlighted code blocks with language detection
Plus the rest of GFM: task lists, footnotes, strikethrough, autolinks.
- Self‑contained HTML — a single file with KaTeX and highlighting styles inlined, nothing to host
- PDF via the system print dialog
Light and dark themes that follow the OS by default, with a manual toggle. Editor font, font size, source‑view font, and accent colour are all configurable.
Markdown files from GitHub are full of small HTML snippets. Mowl shows the common
ones as what they are instead of as literal tags: <img> (including local
paths, width/align, and images wrapped in <div align="center">, <p> or
<a>), <kbd>, links written as <a href>, collapsible <details> /
<summary> sections (click the summary to fold), <div align="…"> blocks, and
<!--more--> markers. It is display only — your Markdown is saved exactly as
you wrote it, and everything else stays literal text.
Click an image and a small toolbar appears: align it left, centre or right,
scale it to 25 / 50 / 75 / 100 % of its original size, or remove it. An
untouched image stays plain Markdown (); once you scale or align
it, it is saved as <img src alt width align>, which GitHub and most other
renderers understand — and set back to defaults it becomes plain Markdown again.
Set Mowl as the default app for .md / .markdown files (via the installer).
Double‑click a Markdown file and it opens in a new tab of the running window.
You can also drag one or more .md / .markdown / .mdx / .txt files onto the
window to open them.
Using the portable Mowl.exe on Windows? The settings screen has a System
section with a Register button that adds Mowl to the "Open with" menu of
Markdown files — per user, no admin rights, and fully removable again. (Windows
never lets a program make itself the default; choose Always once in the "Open
with" dialog.) If you move the exe, Mowl repairs the registration on next start.
Every setting can be changed from an in‑app screen — the settings button in the
toolbar (or Ctrl/Cmd+,) flips it open over the editor, with one control per
option and changes applied and saved as you make them. Or edit the single,
commented settings.toml next to the executable in any text editor — Mowl
picks up the change within a second, no restart. If the program folder is
read‑only, Mowl falls back to the OS config directory and tells you so in the
window. Every release also ships a fully commented settings.example.toml.
On Windows, Mowl can update itself. About → Check for updates looks at the
latest GitHub release; if there is a newer one you can download it, and Mowl
verifies its signature against a key built into the app before it installs
anything. The portable Mowl.exe is replaced in place and restarted (the previous
version stays next to it as Mowl.exe.old until the next start), installer builds
run the new installer, and Scoop installs are pointed at scoop update mowl. Once a
day at startup Mowl checks quietly and puts a dot on the About button if something
is new. This is the only time Mowl talks to the internet by itself — switch it off
with Settings → System → Check for updates automatically or
auto_check_updates = false. Settings → System also has a
Check now button.
The interface is available in English and German, following the OS language
by default (language = "system" | "en" | "de", switchable in the settings
screen).
| Light | Dark |
|---|---|
![]() |
![]() |
| Right‑to‑left (per file) | Block menu |
|---|---|
![]() |
![]() |
| Action | Shortcut |
|---|---|
| New tab | Ctrl/Cmd+N |
| Open | Ctrl/Cmd+O |
| Save | Ctrl/Cmd+S |
| Save As | Ctrl/Cmd+Shift+S |
| Close tab | Ctrl/Cmd+W |
| Export (HTML / PDF) | Ctrl/Cmd+E |
| Toggle source view | Ctrl/Cmd+Shift+C |
| Find | Ctrl/Cmd+F |
| Replace | Ctrl/Cmd+H |
| Link from clipboard | Ctrl/Cmd+K |
| Paste URL onto selected text | Ctrl/Cmd+V |
| Block: Text / H1–H3 / lists / quote / code | Ctrl/Cmd+0–7 |
| Insert emoji | Ctrl/Cmd+. |
| Settings | Ctrl/Cmd+, |
These are the defaults. The application shortcuts (everything except the
clipboard, link and block-type keys) can be changed in the settings screen —
click a field and press the new combination — or under [shortcuts] in
settings.toml.
Grab the latest build from the Releases page.
-
Windows (x64) — portable
Mowl.exe(~7 MB, no install), the NSIS installer, or via Scoop:scoop bucket add naderi https://github.com/naderi/scoop-bucket scoop install naderi/mowl
-
macOS — universal
.dmg(Intel + Apple Silicon) -
Linux —
.AppImage,.deb, or.rpm(x64 + arm64)
Builds are not code‑signed or notarized, so the OS may warn on first launch:
- Windows — SmartScreen: More info → Run anyway
- macOS — right‑click the app → Open, or
xattr -dr com.apple.quarantine /path/to/Mowl.app - Linux —
chmod +x Mowl*.AppImageand run
SHA‑256 checksums are published with every release.
settings.toml sits next to the executable (on macOS: next to the .app), or in
the OS config directory as a fallback. The top section is meant for hand editing
and is reloaded live:
language = "system" # system (follow the OS) | en | de
theme = "system" # system | light | dark
direction = "ltr" # ltr | rtl
spellcheck = true
quit_on_escape = false # press Esc to quit
list_marker = "*" # bullet-list marker on save: * | - | +
show_path = false # show the full file path in the header, not just the name
open_last_session = true # reopen the previous session's tabs on startup
always_show_tabbar = false # keep the tab bar visible even with only one file open
editor_font = "" # WYSIWYG font family (blank = default)
editor_font_size = 16 # headings scale from this
source_font = "" # Markdown source font (monospace)
source_font_size = 15
accent = "" # accent colour, e.g. "#0969da"
# below this line: managed by the app — window geometry, open tabsPrerequisites:
- Rust (stable; MSVC toolchain on Windows) — https://rustup.rs
- Node 20+ and
pnpm - Platform WebView dependencies — see https://tauri.app/start/prerequisites/
pnpm install
pnpm tauri dev # run with hot reload
pnpm tauri build # release bundles for the host OS
pnpm tauri build --bundles nsis # Windows: installer + portable exe
pnpm exec tsc --noEmit # frontend typecheck
cargo test --manifest-path src-tauri/Cargo.toml # Rust unit testsCutting a release: bump version in package.json,
src-tauri/tauri.conf.json and src-tauri/Cargo.toml, push a v* tag, then
run .github/workflows/release.yml manually
(Actions tab or gh workflow run release.yml --ref v1.7.3) — it builds
Windows / macOS / Linux (x64 + arm64) and opens a draft GitHub release with
checksums.
Extending Mowl? Read ARCHITECTURE.md — it maps every file and shows how to add toolbar buttons, block‑menu items, settings and commands.
| Layer | Choice |
|---|---|
| Shell | Tauri v2 (Rust, system WebView) |
| Editor | @milkdown/crepe (ProseMirror) |
| Markdown → HTML export | comrak (Rust) |
| Math | KaTeX |
If Mowl saves you time, you can support its development on Ko‑fi. ☕
© 2026 Ali Naderi · digitalent.dev




