Skip to main content

Verso — Markdown Viewer & Editor

Open Source (MIT)
Verso — Markdown Viewer & Editor

Desktop Markdown viewer and editor that opens a .md file in under a second and renders it like a finished document. Live preview in the Typora style — the raw syntax appears only on the line your caret touches. Real tables, KaTeX formulas, Mermaid diagrams, section folding, outline, tabs, folder tree. Opens files other editors refuse: windows-1251, KOI8-R, DOS 866 and other legacy encodings, saved back byte for byte. Export to standalone HTML or print to PDF. Windows, macOS, Linux. Open Source MIT.

Verso: Markdown That Looks Like a Document

Markdown won because it is plain text: it survives every editor, every version control system and every decade. But most of the time you are not writing it — you are reading it. A README someone sent you. A specification. Notes from last year. And plain text is exactly what you get: hashes in front of headings, asterisks around words, tables that are rows of pipe characters you have to decode in your head.

The usual answers are all compromises. A code editor shows you the source and asks you to imagine the document. A browser preview loses your place every time you touch it. Note applications want your files inside their vault first.

📖

The Challenge

Double-clicking a .md file should show you a document, not source code — instantly, without importing it anywhere, and without the application ever rewriting a byte you did not type. Verso is built for that first, and edits second.

Reading first

Verso is viewer-first. Associate .md with it, double-click, and the document is on screen in well under a second — headings set in real type, tables drawn as tables, code in panels, formulas and diagrams rendered. A freshly opened file stays a clean reading page: nothing reveals its markup until you actually start interacting with it.

When you do start editing, it works the way Typora taught everyone to expect. The raw syntax appears only on the line your caret touches, and folds away again when you leave. There is no second pane, no preview to keep in sync, and no moment where you are looking at a copy of your document instead of the document.

What it does

  • Live preview in place. Markup becomes formatting as you type; the line
under the caret shows its source so you can edit it directly.
  • Real tables. Alignment, inline formatting inside cells, click a cell to
edit exactly that cell. Tab walks the cells; a new row copies the shape of the one above it, so hand-aligned tables stay aligned and ragged ones stay ragged.
  • Formulas and diagrams. $E = mc^2$ through KaTeX, `mermaid fences
through Mermaid. Both load only when a document actually uses them.
  • Everything a working document needs. Tabs, a folder tree, an outline that
follows where you are, find and replace with a match count, go-to-heading, section folding, session restore.
  • Export and print. One standalone HTML file that carries its own styles,
pictures, diagrams and formulas — it opens anywhere, offline. Print goes through the same page, so "Save as PDF" gives you the document, not a screenshot of a scroll position.
  • Themes are one CSS file. Override design tokens and every part of the
application follows. Save the file and the window repaints while you watch.
🗄️

It opens the files other editors refuse

Almost everything written in Russian before UTF-8 won is in windows-1251, DOS 866 or KOI8 — and most modern editors either refuse it or open it as mojibake. Verso detects the encoding, reads the file correctly, and writes it back in the same encoding, byte for byte. If you then type a character the old encoding cannot hold, it refuses the save and tells you which character, instead of quietly replacing it.

Your file is the only source of truth

Verso never keeps a document model of its own. The file's text is the document; rendering is decoration drawn over it. That is not an implementation detail — it is what the following guarantees are made of:

  • Open an untouched file and save it: the bytes are identical. Encoding,
BOM and line endings are preserved, including files that mix CRLF and LF — lines you did not edit keep the endings they had.
  • Saves are atomic. What is on disk is the old version or the new one,
never a half-written mix.
  • Unsaved text is mirrored to a draft, so a crash or a power cut costs
nothing — including in a document that has never been saved.
  • A file changed by another program reloads when your tab is clean and asks
when it is not.
  • Raw HTML in a document is displayed as text, never executed — in the
editor and in exports alike.

Built to stay out of the way

| | | | --- | --- | | Cold start | Under a second to a rendered document | | Installer | 3.8 MB | | Memory | About 40 MB | | Engine | Tauri 2 and the system webview — no bundled browser |

A large file does not stop it: a 2.7 MB, 300,000-word archive opens and scrolls, and says plainly when a document is big enough that it stops rendering tables and formulas rather than making typing lag.

Under the hood

| Layer | Stack | | --- | --- | | Shell | Tauri 2 (Rust) — file associations, single instance, filesystem, watching | | UI | Svelte 5 + Vite + TypeScript | | Editor | CodeMirror 6 with a custom live-preview decoration layer |

The rendering, the export and the search all read the same syntax tree, so a document looks the same on screen, in the file you export and on the page you print. There is no second Markdown implementation anywhere in it.

Who it is for

  • Anyone who is sent .md files — READMEs, specifications, AI-generated
reports — and wants to read them, not decode them.
  • Developers who want their documentation to look like documentation
without leaving the file where it lives, in the repository.
  • Anyone with an archive of old notes in a legacy encoding that modern
editors will not open.

Status

Verso is 0.1 and not yet released. It is built and used on Windows daily; macOS and Linux builds are wired into CI but have not been hand-tested yet. Open source under the MIT licence — the source, the design documents and the decision records are all in the repository.

🔗 Resources

📂

GitHub Repository

Explore the complete source code, documentation, and latest releases on GitHub.

View on GitHub