{"slug": "a-free-open-source-wysiwyg-markdown-editor-for-macos-windows-and-linux", "title": "A free, open-source WYSIWYG Markdown editor for macOS, Windows and Linux", "summary": "Sarala, a free, open-source WYSIWYG Markdown editor released under GPL-3.0 by developer solancer, is now available for macOS, Windows and Linux, rendering formatting in place with no preview pane or split view. The editor stores documents as plain .md files, ships with no account or telemetry, and includes an AI assistant that routes review, summarization and rewrite requests to an already-installed Claude Code, OpenAI Codex or GitHub Copilot CLI agent, returning every change as a word-level diff on a scratch copy rather than the original file. Sarala also offers on-device voice typing via an open speech model, Mermaid and D2 diagrams, KaTeX math, highlighting for 100+ languages, 13 built-in themes, and installs through Homebrew, Snap, .deb, .rpm, .AppImage, .dmg, .exe and .msi packages.", "body_md": "**Markdown that reads like a finished document.**\n\nA free, open-source WYSIWYG Markdown editor for macOS, Windows and Linux.\n\nNo preview pane, no split view: the page you write *is* the page you read.\n\n**[Website](https://sarala.solancer.com)** · **[Download](https://sarala.solancer.com/#download)** · [Release notes](https://github.com/solancer/sarala/releases) · [Build from source](#build-from-source)\n\n- **One page, not two.** Formatting appears the moment you type it. Click any block to edit its Markdown, click away and it renders in place.\n- **Plain files you own.** Documents are`.md` files in folders you choose. Open them anywhere, keep them in Git, sync them however you like.\n- **Private by default.** No account and no telemetry. Voice typing runs on your computer, and the AI assistant only changes what you approve.\n- **Free, with no paid tier.** GPL-3.0, built in the open.\n\n|   [Ask Claude Code, OpenAI Codex or GitHub Copilot CLI to review, summarise or rewrite. Every change arrives as a word-level diff you accept or reject, and the agent works on a scratch copy, never your file. Sarala uses the agent already installed on your computer, so there are no API keys to manage.](https://github.com/solancer/sarala/blob/main/screenshots/ai-assistant.webp)  |   [Hold a shortcut and talk. An open speech model on your computer turns it into text: nothing is uploaded, and there's no account. Push to talk or tap to toggle, say \"new paragraph\" or \"scratch that\", and set it all up in a minute with a live microphone check.](https://github.com/solancer/sarala/blob/main/screenshots/voice-typing.webp)  | \n\n| <sub>**Diagrams.** Mermaid and D2, rendered right in the page.</sub> | <sub>**Math.** LaTeX typeset as you write, with KaTeX.</sub> | \n| <sub>**Code.** Highlighting for 100+ languages, in your theme.</sub> | <sub>**Tables, tasks and callouts.** Edit tables cell by cell, tick tasks with a click.</sub> | \n| <sub>**Command palette.** Every action is one `Cmd/Ctrl+K` away.</sub> | <sub>**Themes.** Thirteen built in, or your own from any base16 scheme.</sub> | \n\nWith [Homebrew](https://brew.sh) (no security prompt, and `brew upgrade --cask sarala` keeps it current):\n\n```\nbrew tap solancer/sarala https://github.com/solancer/sarala\nbrew trust --cask solancer/sarala/sarala\nbrew install --cask --yes sarala\n```\n\n`brew trust` is a one-time step: Homebrew 6 refuses casks from third-party taps until you trust them. Older Homebrew has no `trust` command and doesn't need one. The cask needs Homebrew 5.1.14 or newer; `brew update` gets you there.\n\nIf `brew install` fails with ``Calling `depends_on macos: :catalina` is disabled``, your tap holds an old copy of the cask: run `brew update` (or `brew untap solancer/sarala` and tap it again), then install.\n\nOr download the universal `.dmg` (Apple Silicon and Intel, macOS 10.15+) from the [latest release](https://github.com/solancer/sarala/releases/latest). Sarala is ad-hoc signed but not notarized by Apple, so macOS blocks the first launch. After dragging it into Applications, run this once:\n\n```\nxattr -dr com.apple.quarantine /Applications/Sarala.app\n```\n\n(Or open it, click **Done**, then **System Settings › Privacy & Security › Open Anyway**.) Sarala registers for `.md`, `.markdown` and `.mdown`, so **Open With › Sarala** works in Finder, including when it's already running.\n\nDownload the installer (`.exe`) or `.msi` from the [latest release](https://github.com/solancer/sarala/releases/latest). Windows 10 and 11, 64-bit. The installer isn't code-signed yet, so if SmartScreen says **\"Windows protected your PC\"**, click **More info › Run anyway**.\n\n| Format | Install | \n|---|---|\n| [Snap Store](https://snapcraft.io/sarala) | `sudo snap install sarala` | \n| `.deb` (Ubuntu, Debian, Mint) | `sudo apt install ./Sarala_<version>_amd64.deb` | \n| `.rpm` (Fedora, RHEL, openSUSE) | `sudo dnf install ./Sarala-<version>-1.x86_64.rpm` | \n| `.AppImage` (any distribution) | `chmod +x Sarala_<version>_amd64.AppImage && ./Sarala_<version>_amd64.AppImage` | \n\nAll from the [latest release](https://github.com/solancer/sarala/releases/latest). Sarala opens `.md` files passed to it, so your file manager's **Open With** works. In-app updates cover the AppImage, `.deb` and `.rpm`; Snap and distribution packages update through their package manager.\n\n**Writing**\n\n- Live blocks: markers stay visible but dimmed while you type, then the block renders when you leave it\n- Smart Enter: continues lists and quotes, auto-numbers, closes a just-opened fence; `Shift+Enter` for a soft break\n- Click anywhere in rendered text and the caret lands at that exact spot in the source\n- Select text for a formatting bar with a block-type dropdown; type `/` for an insert menu\n- IME-safe, so CJK composition works as it should\n\n**Content**\n\n- Full GFM: tables, task lists with clickable checkboxes, strikethrough, footnotes, GitHub alerts, YAML front matter\n- Code fences highlighted by [Shiki](https://shiki.style) , with light and dark handled through CSS variables\n- Math via KaTeX; diagrams via [Mermaid](https://mermaid.js.org) and[D2](https://d2lang.com) . A broken one keeps its last good render instead of blanking\n- Tables edit in place; hover an edge to add a row or column\n- Images resolve relative to the document, with a properties panel for size, alt text and loading\n\n**Getting around**\n\n- Document tabs with independent edits and undo history (`Cmd/Ctrl+T` ,`Cmd/Ctrl+W` ,`Ctrl+Tab` )\n- Sidebar with a live file tree, outline, and full-text search across the folder\n- Open Quickly (`Shift+Cmd/Ctrl+P` ), find and replace, and a command palette (`Cmd/Ctrl+K` )\n- Focus and Typewriter modes, plus Source mode as an escape hatch to the raw document\n\n**AI assistant** (opt-in)\n\n- Works with Claude Code, OpenAI Codex or GitHub Copilot CLI, using their own sign-in; Sarala stores no keys\n- Proposals arrive block by block as word-level diffs, with Accept, Reject and Accept all; undo works as usual\n- The agent edits a scratch copy with file tools only, never your real file\n\n**Voice typing** (opt-in)\n\n- Speech becomes text on your computer: no cloud, no account, no keys. One model is downloaded when you turn it on\n- Hold the shortcut to talk, press once to start and again to stop, or let it type at each pause\n- Commands for Markdown: \"new bullet …\", \"new heading …\", \"make that bold\", \"scratch that\"; say \"what can I say\" for the rest\n- Built for people who can't easily type or see the screen: read-back through the screen reader, distinct sounds for every state, spoken punctuation, any shortcut you can reach\n\n**Making it yours**\n\n- 13 built-in themes, plus a custom theme from any [base16](https://github.com/tinted-theming/schemes) scheme\n- Any installed font for prose and code\n- A searchable settings window for the rest: Markdown extensions, autosave, line endings, images, AI and voice\n\n**Getting it out**\n\n- HTML with an outline sidebar, and real PDF via headless Chromium (page size, margins, header and footer)\n- docx, odt, rtf, epub, LaTeX, MediaWiki, rst, Textile and OPML through [Pandoc](https://pandoc.org) , with import too\n- Atomic saves, autosave, crash recovery, and signed in-app updates\n\nThe menus show every accelerator inline. The ones worth learning:\n\n| Keys | Action | \n|---|---|\n| `Cmd/Ctrl+K` | Command palette | \n| `Cmd/Ctrl+S` | Save | \n| `Shift+Cmd/Ctrl+P` | Open Quickly | \n| `Cmd/Ctrl+F` | Find ( `Cmd/Ctrl+G` next,`Alt+Cmd/Ctrl+F` replace) | \n| `Cmd/Ctrl+/` | Source mode | \n| `Shift+Cmd/Ctrl+L` | Toggle sidebar | \n| `F8` /`F9` | Focus / Typewriter mode | \n| `Cmd/Ctrl+1…6` ,`0` | Heading level / paragraph | \n| `Esc` | Render the current block | \n| `Cmd+Shift+D` (Mac),`Ctrl+Alt+Space` | Voice typing, once turned on (changeable) | \n\nNode 22+, [pnpm](https://pnpm.io), Rust stable, [Tauri's platform prerequisites](https://tauri.app/start/prerequisites/) (on Linux, `webkit2gtk-4.1` and friends), and CMake plus a C++ compiler for voice typing's speech engine (on Linux also `libasound2-dev` and `libopenblas-dev`). To build without voice typing, pass `--no-default-features` to Cargo.\n\n```\npnpm install\npnpm tauri dev      # desktop app\npnpm tauri build    # installers in src-tauri/target/release/bundle\n```\n\n`pnpm dev` runs the frontend standalone in a browser, which is handy for UI work, but file dialogs and the file tree are desktop-only.\n\nThree decisions shape everything else:\n\n**A block model, not a character model.** The document is an array of Markdown blocks (fences and YAML front matter kept whole). The active block is a `contenteditable` whose innerHTML is re-styled on every keystroke, and the load-bearing invariant is that the styled HTML's `textContent` stays *byte-identical* to the Markdown source. That exactness is what lets the caret be saved and restored by plain text offset, and it's covered by roundtrip tests.\n\n**One render pipeline.** The same `renderMarkdown()` draws editor blocks and the HTML export, so what you see and what you ship cannot drift apart.\n\n**Rust holds the filesystem, not the logic.** The backend does directory walks, atomic saves, the Pandoc bridge and the speech engine; the native menu forwards item ids as events. Every editing decision lives in one frontend command bus shared by the menus, the shortcuts and the command palette.\n\n`pnpm release X.Y.Z` bumps the manifests and tags; pushing the tag makes CI build and sign for all three platforms, publish the release, and update the manifest existing installs check. Details in [RELEASING.md](https://github.com/solancer/sarala/blob/main/RELEASING.md).\n\nGPL-3.0-or-later © Srinivas Gowda", "url": "https://wpnews.pro/news/a-free-open-source-wysiwyg-markdown-editor-for-macos-windows-and-linux", "canonical_source": "https://github.com/solancer/sarala", "published_at": "2026-10-27 09:05:05+00:00", "updated_at": "2026-10-27 09:11:43.707324+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-agents"], "entities": ["Sarala", "solancer", "Claude Code", "OpenAI Codex", "GitHub Copilot CLI", "Homebrew", "Snap Store", "GitHub"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/a-free-open-source-wysiwyg-markdown-editor-for-macos-windows-and-linux", "markdown": "https://wpnews.pro/news/a-free-open-source-wysiwyg-markdown-editor-for-macos-windows-and-linux.md", "text": "https://wpnews.pro/news/a-free-open-source-wysiwyg-markdown-editor-for-macos-windows-and-linux.txt", "jsonld": "https://wpnews.pro/news/a-free-open-source-wysiwyg-markdown-editor-for-macos-windows-and-linux.jsonld"}}