Documentation

MarkDW documentation

How MarkDW's View/Edit/Split modes, clipboard paste, export, and the Harbor/Sage designs work, its keyboard shortcuts, install steps per platform, browser mode behavior, and fixes for common issues.

How it's built

MarkDW is a single SvelteKit frontend (static/SPA build) that runs unmodified in two hosts. A platform-detection layer decides at runtime how files actually get read and written: through Tauri's Rust backend on desktop, or through the browser's File System Access API on the web. The editor pane is CodeMirror 6, lazy-loaded so it costs nothing until you open Edit or Split. Rendering goes through marked with marked-highlight and highlight.js for syntax-highlighted code fences, and every rendered file is passed through DOMPurify.sanitize() before it reaches the page — there's no "trusted source" exception, since the whole point is opening files from disk.

View, Edit and Split modes

Every open file has a mode: View renders the markdown read-only, Edit shows the CodeMirror source editor, and Split shows both side by side, live. Ctrl/Cmd+E toggles between View and Edit; Split is a separate toolbar option. Switching modes never discards unsaved changes — the underlying content is the same string regardless of which pane is showing it.

Opening files and folders

Open File opens a single .md file. Open Folder lists that folder's top-level markdown files in the sidebar so you can switch between them with a click — it does not recurse into subfolders. Selecting a different file while the current one has unsaved changes triggers a confirmation prompt before switching.

New from Clipboard

The New from Clipboard button (in the sidebar and the empty-state screen) reads text from your system clipboard and opens it as a new, unsaved document. The clipboard is read only at the moment you click it — never automatically, and never in the background. Because a pasted document has no backing file on disk, saving it goes through the same "save as" flow as any brand-new file, rather than writing in place.

Saving

The toolbar's Save button (or Ctrl/Cmd+S) saves the current file in place. On desktop this writes directly to the original path via a Tauri command, with a retry if the write is momentarily blocked (e.g. by another process holding the file). In the browser, save-in-place works the same way in Chromium browsers via the File System Access API; in browsers without that API, saving downloads a new file instead of overwriting the original.

Exporting

The Export ▾ menu offers three formats, all generated locally with nothing uploaded anywhere:

  • as HTML — a single self-contained .html file with its own inline stylesheet, so it looks reasonable on its own without depending on MarkDW's theme system.
  • as PDF… — switches to View (or keeps Split) and calls the browser's native window.print(), so the OS/browser print dialog opens with the rendered document as the page. Choose "Save as PDF" (or a real printer) from there — there's no bundled PDF-generation library, it's the same print pipeline as any other page.
  • as Plain Text — the visible, rendered text of the preview (what you'd get selecting-all and copying it), not the raw markdown source — Open/Save already gives you that.

On desktop, HTML and plain-text exports go through a native save dialog, the same as Save. On the web, they download as a new file via the browser's normal download mechanism.

About MarkDW

The icon in the toolbar opens an About dialog showing the current version and a plain-language explainer of exactly what desktop and web builds each do with your data — the same facts documented on this page and in the privacy policy, kept in the app itself so you don't have to leave it to check.

Layout and appearance

The file sidebar can be shrunk to a slim icon rail — click the collapse icon at its top, or expand it again the same way — for a wider editing/preview area on smaller screens or when you just want the file list out of the way.

MarkDW ships two built-in designs, chosen from an icon in the sidebar: Harbor (the default — teal accents on deep navy) and Sage (warm gold on charcoal green). Each has its own light and dark mode, switched separately with the theme toggle. The choice is cosmetic only — every feature works identically regardless of which design or mode is active — and is remembered the next time you open MarkDW, the same way your light/dark preference is.

Keyboard shortcuts

ShortcutAction
Ctrl/Cmd+EToggle View / Edit mode
Ctrl/Cmd+SSave the current file in place

Installation

Windows

Download MarkDW_<version>_x64-setup.exe or the .msi from the latest release and run it — either installer works. MarkDW isn't code-signed, so Windows SmartScreen will show an "unrecognized publisher" warning the first time: click More info, then Run anyway.

macOS

Download the .dmg matching your Mac's chip: _aarch64.dmg for Apple Silicon, _x64.dmg for Intel. The app isn't code-signed, so Gatekeeper blocks the first launch — right-click the app in Applications and choose Open once to bypass it. (The .app.tar.gz files in each release are auto-update artifacts, not for manual download.)

Linux

Use whichever package matches your distro: .deb for Debian/Ubuntu, .rpm for Fedora/RHEL, or the .AppImage for any distro (make it executable and run it directly).

Browser (no install)

Open markdw.netlify.app. In Chrome or Edge, folder browsing and save-in-place work via the File System Access API, matching the desktop experience. In Firefox, Safari and other browsers without that API, you can still open and edit a single file, but saving downloads a new copy instead of overwriting the original.

Troubleshooting

Windows blocks the installer with a SmartScreen warning

This is expected for an unsigned build. Click "More info" in the SmartScreen dialog, then "Run anyway."

macOS says the app is damaged or can't be opened

Right-click (not double-click) the app in Finder and choose Open — this is Gatekeeper's one-time confirmation for unsigned apps, not an actual problem with the download.

Save isn't overwriting my file in the browser

Save-in-place needs the File System Access API, which only Chromium-based browsers (Chrome, Edge) currently support. In other browsers, saving always downloads a new file — this is a platform limitation, not something the app can work around.

A subfolder's markdown files aren't showing up

Open Folder only lists a folder's top-level .md files by design; it doesn't recurse into subfolders. Open a subfolder directly, or open the file individually with Open File.

"New from Clipboard" says the clipboard is empty or blocked

Either the clipboard genuinely has no text, or the browser blocked the read — some browsers only allow clipboard reads triggered by a direct user action, or require the page to have focus. Click into the page first, then try again.

Source & license

MarkDW is MIT-licensed and open source. Full source, issues and releases are on GitHub.

Related

Back to the product page, release notes, or privacy details.

Product overview Changelog Privacy policy