Refine your mind.
Your thoughts, secure and free. Leaftext is a free desktop app for reading and writing your own documents. Everything stays on your device, in plain files you own.

Download for Windows Download for macOS
Free · Windows 10+ and macOS Universal · All releases
How to install it → · Mac won't open it? →
Read this if you're on a Mac. macOS refuses the first launch of any app Apple hasn't been paid to vouch for, and Leaftext is free, so it hasn't. Nothing was scanned and nothing was found. Let it through once — System Settings → Privacy & Security → Open Anyway — and it opens normally from then on. The four clicks, spelled out →
Get started → · Read the docs → · This site on GitHub →
Your notes deserve better than a text editor. Open a file in Leaftext and it becomes a page you actually want to read — quiet, well set, and easy to move through. Click into a sentence and you can write. Nothing saves until you say so.
There's no account and no sign-up. Your files never leave your computer, and they stay Markdown, source files, HTML, XML, JSON, and YAML, plain text and config files — and even saved emails and Word, Excel, PowerPoint and OpenDocument files — formats every other app can read, so you're never locked in.
Free, on macOS and Windows.
Find it fast
| If you want to… | Go to |
|---|---|
| See what it looks like | Read your files |
| Open a Word, Excel or PowerPoint file | Word, Excel and PowerPoint files |
| Write in the page, not in an editor | Write where you read |
| Search your notes and see how they link | Keep a library |
| Find a word in the document you are reading | Search everything you've written |
| Keep your place across long documents | Move around |
| Change the look | Make it yours |
| Know what leaves your machine | Your thoughts stay yours |
| Install it | Install it |
| Learn the whole app | Learn it |
| Build it from source | Development |
Read your files
Markdown, rendered the way GitHub renders it

Open a .md file and it renders the way you'd expect, with the extras people actually use: highlighted code, math, callouts, footnotes, emoji, task lists, tables, collapsible sections, frontmatter, and your own images. Rendering →
Diagrams that take your theme's colors

Write a mermaid code fence and get a diagram — flowchart, sequence, gantt, mindmap, pie — drawn offline in your theme's own colors and font. Switch theme and the diagrams on the page are redrawn to match. A page of sixty opens as fast as a page of three: only the ones near what you are reading are drawn, and the rest fill in as you scroll to them. Drag one to move it, Ctrl and the wheel to zoom, without the page around it shifting. Diagrams →
XML, sitemaps, feeds, and TEI

Any XML reads as sections, fields, and tables instead of tags — a sitemap, a feed, a pom.xml. And TEI, the markup scholarly editions and archives are written in, gets a reader that understands its conventions: titles, front matter, nested divisions, verse, endnotes. XML →
JSON and YAML as pages

A lock file, a CI workflow, or a Kubernetes manifest as headed sections, aligned fields, and record tables instead of punctuation — read by the same shape rules as XML, so the same field is named the same way in both. JSON and YAML →
Saved email

An .eml from Gmail, Outlook, or Apple Mail opens as the message it carries: headers, body, inline images, attachments — instead of a wall of base64. Nothing in the message reaches the network. Email →
HTML as the page it is
A saved report, exported note, or hand-written .html page opens as the page its own CSS draws — its colors, its type, its layout, its sticky headers — with nothing to press and nothing to turn off. It runs no script and reaches no network address; what it may read is the folder it sits in. Find, the outline, the minimap and the right-click menu all still work on it, and the source view keeps the original file for editing. HTML →
Plain text, exactly as you typed it
A .txt opens as one block with every space and every line break kept, so an ASCII banner stays lined up and an indented list stays indented. Nothing is reflowed and nothing is guessed at. Plain text →
Config files as a page
An .ini opens as sections with their keys and values under each, every value ready to be typed into and written straight back. Each key is drawn the way it was written, because font_size is a name somebody chose. INI →
Word, Excel and PowerPoint files

A .docx, .docm, .xlsx, .xlsm, .pptx, .pptm, .odt, .ods or .odp opens as the document it is — headings, paragraphs, lists and tables, a sheet as a table of records, a deck as one entry per slide. Type into a paragraph or a cell, save, and everything Leaftext never read — your styles, themes, comments, tracked changes, charts and macros — is byte for byte what it was. A macro is read past and never run; Leaftext has no way to run one. No network, no account, no sign-in. Word, Excel, PowerPoint and OpenDocument →
Read faster when you need to

Turn on Speed Reader and the page dims back while bold anchors mark the start of each word. Your eye follows the path down instead of hunting for it. Speed Reader →
Write where you read
Click into a sentence and type

Split a paragraph with Enter, join it back with Backspace — the change lands in your file at exactly that spot, and undo walks back step by step, with Redo beside it for a press too many. Text edits never autosave: nothing touches your file until you press Save. Ticking a checkbox is the one exception — that saves on the spot, and works even with editing locked. Editing →
A format bar where the words are

Highlight words and a small bar appears over them: bold, italic, strikethrough, code, link, badge — then text, a bigger or smaller heading, and quote for the whole block — and copy, highlight and annotate at the end. A button with nowhere to go grays out. The last three are offered on a locked document too, so a passage can be marked up or annotated without unlocking the file. The format bar →
Reach into the margin to move a block

Take the handle and a block lifts off the page; drop it where its neighbors have opened a gap. Press the plus on an empty line and a row of block kinds fans out — text, heading, list, quote, code, table, image, flowchart, divider, framed figure, badge and bars. The block gutter →
Restructure a table without typing a pipe

Point at a table and a grip appears beside the row and above the column: take either and drag it to reorder. Right-click a cell to add a row or a column, delete one, align a column left, center or right, or sort by it — numbers and dates by value, everything else as text. Tab and Enter walk the cells, and Tab at the last one writes the next row. The corner copies the whole table as CSV. Editing a table →
A table that adds itself up
Right-click the cell a total belongs in and ask for the sum, average, count, smallest or largest of the rows above it. The number goes into the file with a formula line under the table saying what that cell is, and Leaftext keeps it right as the rows under it change — one press of undo takes an edit and its totals back together. A table that adds itself up →
Read a table as cards, a board or a list

Point at a table with a header row and a few body rows and a quiet bar appears above it: Table, Cards, Board, List, Sort, Filter and Describe. Leaftext works out what each column holds — numbers, dates, checkboxes, short repeated values, pictures, links into another table — and a cell's link can pull in the row it points at. Nothing is written: the file stays an ordinary Markdown table, and reopening it restores the table as you wrote it. Relational tables →
Draw a flowchart instead of typing one

A canvas beside the Mermaid text, each following the other. Double-click to add a box and name it, pick from forty-seven shapes grouped by what they are for, drag a handle onto another box to connect them or back onto the box it came from for a step that loops on itself, and group boxes together. A box can also carry a link, one of the app's own icons, or a picture. Every other kind of diagram opens the same sheet as a live preview. Open it on any diagram already in a page, and export any diagram as its own Markdown file, picture or PDF from the button in its corner. The flowchart editor →
Or work in the raw source

Drop into code view for the file's actual source — Markdown, HTML, XML, JSON, YAML, a raw email, or the XML of the part a Word, Excel, PowerPoint or OpenDocument file is anchored to — with line numbers, a minimap, and the headings you're under pinned to the top edge. Markdown, HTML, XML, YAML, JSON and the XML inside an Office file come colored in your theme's own syntax colors; email is plain text. A color written in the source carries a small square of itself in the line beside it. Code view →
Typing help drawn from your own notes

Type [[ and your notes are listed, by file name and by any other name they answer to. Type # for a heading. Hover a wikilink for a preview, and a link that answers to nothing gets a wavy underline. It knows only what you pointed it at. Typing help →
Keep a library
Point it at a folder and it becomes a vault

A side pane that browses one folder at a time, with a breadcrumb that always says where you are. Name a folder a vault and it becomes the thing search and syncing work over; the same switcher over the start screen takes you back from Library. Nothing is crawled, and nothing is written into your folder. Library →
The button that changes where the list is rooted is a caret and a mark, which says nothing on its own — so the first time you open the pane, one small bubble points at it and then never appears again. The first-launch bubble →
Until you have a vault the start screen offers to add your notes folder, and the pane says once what one buys you. Both go for good the moment there is one. Your first vault →
Put a date on a checkbox and the start screen keeps a box of everything in the vault still open, nearest due first, over Recent and Favorites. Press a row and you land on that checkbox. Scheduled tasks →
Open the calendar at the foot of the library and a month of the vault shows which days its documents were changed, made or dated. Pick a day and the pane lists them. Calendar →
Search everything you've written

Name matches first — the whole name beats the start of it, which beats a word inside it — then content matches ranked for the document's size, so a long file cannot win by being long. Up to three rows per file, one per place the word is, and clicking one lands on that line. There's no index on disk: the text is read once and held in memory, so nothing can go stale against your files, and nothing is uploaded to search it. A folder a machine filled — build output, a package cache — is left out of that read, and the line above the results says when one was. Search →
Ctrl+F opens one bar over the page or its source: This file searches the document you are reading, and All files searches the active vault. Match case, whole word, expressions, and replace behind the padlock belong to the file scope. Find in this document →
See how your ideas connect

The graph view maps the links between your documents, so you can see the shape of what you've written instead of scrolling a list. Notes you'd forgotten turn out to be next door to the one you're reading. Web addresses are nodes too, so two notes citing one page share it. Graph →
Push a vault to GitHub

A vault can be a git repository that pushes to GitHub. Leaftext never holds a token — it runs the git already on your machine. A sync button appears on the breadcrumb whenever there's work that hasn't reached GitHub, and one vault can turn on automatic sync, which sends once your changes stop. GitHub sync →
Move around
Never lose your place

It moves like a browser: tabs, Back and Forward through your history, an outline of the open document in the pane beside it, and Ctrl-click on a link to open it behind the page you are reading. Change a file in another app and Leaftext picks it up without losing your spot. Navigation →
Take in the whole page at once

A tiny version of your document runs down the side — real text, not abstract bars — with a marker showing where you are. You'll recognize a section by its shape. Click to jump, or drag to scroll. Minimap →
Read a folder in order

Where folders are joined by README.md files, a Previous / Next bar appears at the bottom of each page, so a folder of notes reads like a book. Point at a button and it fills with the same fine dot texture the page's code blocks wear, with a tooltip naming the document it opens. Pager →
Define a word once for a whole set of notes

Write one GLOSSARY.md and every mention of a defined term, across every document, links to it — resting on one draws its entry in the hover card, and clicking one opens a sheet over the page instead of taking you away from it. Glossary →
Make it yours
Eleven themes, six more to earn, light and dark

Amaranth, Arabica, Bloodleaf, Fern, Ginger, GitHub, Goldenrod, Halcyon, Nightshade, Pippin, and Sage ship free, and six one-color modes — Amber, Cobalt, Ink, Verdant, Vermilion and Violet — are earned with seeds in the Grove, each in light and dark, plus System and Daylight if you'd rather the app follow the time of day. Everything moves together: text, code, callouts, diagrams, minimap, and the icons — seven icon sets, and each theme wears one. Each theme's font is fetched from Google Fonts the first time you choose it. Themes →
Settings you can read, where you need them
There's no settings panel to hunt through. Every control stands where it applies: the palette at the foot of the library pane for theme and appearance, the graph's own toolbar for how big a map to draw. It's all a plain JSON file on your machine, not an account. Settings →
Your thoughts stay yours
No account. No cloud. No telemetry. Nothing you open, write, or search leaves your machine on its own.
What reaches the network
Three things, and none of them carries a word you wrote:
- The release check — it asks GitHub whether a newer version exists.
- The update download — when one does, it fetches that installer.
- A theme's font — from Google Fonts, the first time you pick that theme.
The one exception is the one you set up: GitHub sync pushes a vault to your own repository, using the git already on your machine. It starts on a press unless you turn on automatic sync for that vault.
Your files stay your files
Your settings are a JSON file on your machine, and your documents are the files you already had. Delete Leaftext tomorrow and every word you wrote is still sitting in the folder you put it in, readable by anything.
Leaftext also keeps a plain text journal of what it did, so a bug report has something to attach. It records file paths and errors — never a word you wrote — it stops at about a megabyte, and it goes nowhere unless you send it. Beside it sits an empty marker file saying a run is under way, which the close takes away — so a launch that still finds one says the run before it ended without closing. It holds nothing at all.
How an update lands
An installer downloads in the background, is checked for the length the release advertised, and is re-hashed before it is ever run. Then the next launch installs it, before any window opens — the one moment Windows lets an app replace itself — or press Restart to update if you would rather not wait. Each version is installed automatically once; after that it waits for a click. An install that does not take relaunches the build you already had, so the next launch tells you which version failed, why, and which one you are still on. Updates →
Install it
Leaftext is free. Download for Windows or for macOS, then follow your platform below — or the fuller walkthrough in the Installation guide.
macOS

- Download the file ending in
-macos-universal.dmg. One file covers Apple Silicon and Intel. - Open it. Drag the leaf app onto the Applications folder beside it.
- Eject the disk image, then open Leaftext from Applications.
First launch — macOS will refuse it

Expected. Apple charges a yearly fee to notarize an app; Leaftext is free and isn't enrolled, so macOS blocks anything unnotarized on sight. Nothing was scanned and nothing was found. Let it through once:
- Double-click Leaftext, then click Done on the refusal.
- Open System Settings → Privacy & Security.
- Scroll to the bottom. Click Open Anyway on the line naming Leaftext.
- Confirm with Touch ID or your password, then click Open.
Every launch after that is an ordinary double-click. On macOS 12 and earlier it's shorter: right-click the app → Open → Open. If the Open Anyway button never appears, open Terminal and run xattr -cr /Applications/leaftext.app instead. More detail →
Windows

Grab the 64-bit installer and run it. If a full-screen Windows protected your PC box appears, click More info → Run anyway — the installer isn't signed with a paid certificate. It installs just for you, with no admin prompt. Here by default, though Change... puts it anywhere you like and updates keep it there:
%LOCALAPPDATA%\Programs\leaftext\bin\leaftext.exe
Your app data lives alongside it:
%LOCALAPPDATA%\ryanallen\leaftext\data
Leaftext opens itself when the install finishes. After that, launch it from the Start Menu, or tap the Windows key and type Leaftext. One Start Menu entry, no desktop shortcut.
Upgrading from v0.1.364 or earlier? Uninstall the old version first, from Settings → Apps. Those installed machine-wide into
C:\Program Files, and a per-user package can't remove one, so you'd end up with two copies.
Opening files with it
Installing registers Leaftext for every extension it reads, including .txt, .ini, .docx, .docm, .xlsx, .xlsm, .pptx, .pptm, .odt, .ods, .odp, and source-file extensions such as .rs, .py, .toml, .jsonc, and .gql, so Leaftext is available from Open with. Source files, HTML, plain text, .ini and Word, Excel, PowerPoint and OpenDocument files stay with their current app unless you choose Leaftext. File associations →
Learn it
New here? The Quickstart gets you reading in a couple of minutes. Then browse the full documentation.
| Page | What it covers |
|---|---|
| Quickstart | Open a file, read it, move around, come back to it |
| Installation | Both platforms, the first-launch warnings, file associations, updates |
| Rendering | Every syntax and format it reads, with live examples |
| Navigation | Tabs, history, outline, pager, glossary, link hints and the link menu, live reload |
| Library | Vaults, the file tree, search, the graph, GitHub sync, file actions |
| Minimap | The side rail, in both the reading view and the code view |
| Settings | Every preference, its default, and where it is stored |
| Themes | The eleven families and the six earned ones, appearance, fonts, diagram colors |
| Editing | Inline editing, the block gutter, the flowchart editor, code view, save |
| Relational tables | RDB views, relations, sorting, filtering and optional table descriptions |
| Your Grove | The reading record at the library's foot, and the switch that turns it off |
| Glossary | Every word Leaftext uses for a part of itself |
The pages are plain Markdown under docs/ — the same format the app reads, so you can open them in Leaftext itself.
Development
Leaftext's source is not public. What is published is this site: every theme drawn on one page at leaftext.com/gallery.html — all 83 colors, every icon and every part of the interface, in light and dark — the documentation, the glossary, the themes the app reads, and the crawler files below.
Every written file this site publishes
Each of these links onward to the rest of its own set, so nothing published here is reachable only by knowing it is there.
| Where | What is in it |
|---|---|
| Documentation | Every page published at leaftext.com/docs, listed above |
| Glossary | Every word Leaftext uses for a part of itself |
| Themes | The eleven free families and the six earned ones, one Markdown file each, with the colors they set and the icon set they wear |
| Crawler files | robots.txt, sitemap.xml, sitemap-md.txt, llms.txt, llms-full.txt — generated from this file and docs/ |