md — Support
md is the simplest Markdown editor for Linux: write Markdown on one side and see it rendered on the other, with a warm typewriter look — a native GTK 4 and libadwaita app, the Linux edition of md for Mac. It has a writer mode for whole books, real-page PDFs at seven sizes, HTML, EPUB, LaTeX, SVG and TextBundle export, math, chemistry, diagrams and charts drawn on your computer, a table of contents, private author notes, a live word count, and documents that reopen in the layout you left them in. This page is where to download md, how to install it, and the single place to reach the developer for issues, feedback or feature requests.
Download
md 1.6.0 comes in three forms, each for two kinds of processor. Most
PCs are x86-64 (Intel or AMD); ARM machines are
ARM64. dpkg --print-architecture
(Ubuntu) or uname -m tells you which yours is.
| For | x86-64 | ARM64 |
|---|---|---|
Ubuntu 26.04 LTS (.deb) |
md_1.6.0_amd64.deb | md_1.6.0_arm64.deb |
Fedora 44 and later (.rpm) |
md-1.6.0-1.fc44.x86_64.rpm | md-1.6.0-1.fc44.aarch64.rpm |
Other distributions (.tar.gz) |
md-1.6.0-linux-x86_64.tar.gz | md-1.6.0-linux-aarch64.tar.gz |
SHA256SUMS lists the checksum of every file.
To check a download, put it in one folder with SHA256SUMS
and run:
sha256sum --check --ignore-missing SHA256SUMS
Install
Ubuntu 26.04
sudo apt install ./md_1.6.0_amd64.deb # or ./md_1.6.0_arm64.deb
Run it in the folder you downloaded to; the ./ tells apt
it is a file, not a package name. apt brings GTK 4, libadwaita,
WebKitGTK and the two font packages md uses from the Ubuntu archive,
and installs md's AppArmor profile (see The preview cannot
start below). md then appears in the app grid and under
Open With for Markdown files.
Fedora 44 and later
sudo dnf install ./md-1.6.0-1.fc44.x86_64.rpm # or the .aarch64.rpm
dnf likewise brings the libraries and fonts from Fedora's repositories.
Other distributions: the portable archive
The .tar.gz is a folder that runs wherever you unpack it,
on any distribution with GTK 4.22, libadwaita 1.9, WebKitGTK 6.0 2.52,
GLib 2.88 and glibc 2.39 or newer, and the fonts Nimbus Mono PS (URW
base35) and Liberation Mono:
tar -xzf md-1.6.0-linux-x86_64.tar.gz
md-1.6.0/bin/md
To have md in the app grid and offered for Markdown files, copy it into your home folder:
cp -r md-1.6.0/bin md-1.6.0/share ~/.local/
update-desktop-database ~/.local/share/applications
update-mime-database ~/.local/share/mime
and make sure ~/.local/bin is on your PATH.
The README inside the archive lists the packages to
install on Ubuntu and Fedora, how to remove it again, and what Ubuntu
needs for the preview (below).
Updating
md does not check for updates. When a new version is published here, download it and install it the same way; apt and dnf replace the old version in place, and your settings, session and drafts carry over.
Removing md
sudo apt remove mdremoves the app and keeps the AppArmor profile (a configuration file);sudo apt purge mdremoves that too.sudo dnf remove mdremoves the app.- For the archive, delete what you copied:
~/.local/bin/md, therichandexamplesfolders in~/.local/share/md(not the whole folder: md keeps your unsaved drafts in itsdraftsfolder there),~/.local/share/doc/md,~/.local/share/man/man1/md.1.gz, and the files namedme.nettrash.md.*under~/.local/share.
None of these touches your documents, or md's settings, session and
drafts in your home folder (~/.config/md,
~/.local/state/md, ~/.local/share/md/drafts);
delete those folders to remove them as well.
Contact
md is built and maintained by an independent developer. The fastest
way to get a reply is by email; please include your distribution and
its version, your processor (x86-64 or ARM64), how you installed md
(.deb, .rpm or .tar.gz) and the
version from Help ▸ About md or md --version.
- nettrash@nettrash.me
- Developer
- nettrash (independent developer)
- Response time
- Usually within a few business days. This is a one-person project, not a 24/7 helpdesk.
For privacy-specific questions, see the Privacy Policy; the same email address handles those requests.
What md does
- Opens, edits and saves
.md/.markdownfiles (and plain text) through GTK's Open and Save dialogs, file associations and drag and drop — on your computer or in your own cloud-synced folders — with autosave a second after you stop typing, written in place so the file keeps its owner, permissions and links. Files in legacy encodings (Windows-1251, or UTF-16 with a byte-order mark) open and save back as they came..puml,.gvand.textpackfiles open too, and a.textbundlefolder opens from File ▸ Open TextBundle Folder…. - Renders a live preview covering headings, bold / italic /
inline code/ links / strikethrough, bullet / numbered / task lists (with nesting), fenced code with syntax highlighting, block quotes, GitHub-style tables, CSV / TSV blocks drawn as tables, thematic and page breaks, footnotes, YAML / TOML front matter, and images your document references by remote URL. - Draws TeX / LaTeX math and mhchem chemistry (
$…$,$$…$$,```math), Mermaid, Graphviz and PlantUML diagrams, and charts from a```plotblock. These render on your computer, offline, from engines installed with the app — the plot block needs no engine at all. - Offers three layouts — Edit, Split (side by side, scrolling together, and stacking when the window is narrow) and Preview — plus a full-screen Zen mode. Each document reopens in the layout you last used for it.
- Shows a table of contents (Go ▸ Contents), a list of your private author notes (Go ▸ Notes), a live word and character count, and a Find and Replace bar (Ctrl+F, or Ctrl+H for Replace).
- Formats from the Format menu or the keyboard: Bold (Ctrl+B), Italic (Ctrl+I), Code (Shift+Ctrl+C), Strikethrough (Shift+Ctrl+X), Link (Ctrl+K), Heading 1–6 (Ctrl+Alt+1–6), Bullet List (Shift+Ctrl+L), Task List (Shift+Ctrl+T), Quote (Shift+Ctrl+Q), Indent and Outdent (Ctrl+] and Ctrl+[). While you type, Enter continues a list, a quote or a table, sentences start with a capital, and typing
*,_,`or$over a selection wraps it — three switches under Edit ▸ Typing. - Prints through GTK's print dialog, and exports the rendered document as a PDF of real pages (A4, A5, US Letter, US Legal or a paperback trim), as self-contained HTML, EPUB 3 (labelled with the author, language, date, description, series and cover its front matter names), LaTeX or a TextBundle, and saves a single diagram as SVG.
- Writer mode: open a folder as a book — subfolders are chapters, Markdown files are articles — create, rename, reorder and delete them, compile the whole book to one PDF, print it, or export it as EPUB 3 or a LaTeX book.
- Ships example documents and a sample book you can unpack and edit (File ▸ Examples).
Frequently asked questions
The preview cannot start — what now?
md draws its preview with WebKitGTK, which runs web content inside a sandbox, and that sandbox needs an unprivileged user namespace. If the system refuses one, md says “The Preview Cannot Start” and quits; it never runs the preview without its sandbox.
On Ubuntu, a program may create a user namespace only
when an AppArmor profile allows it, and the .deb installs
that profile as /etc/apparmor.d/md (it confines nothing;
it is the profile Ubuntu ships for its own WebKitGTK apps). If that
file was deleted, a plain reinstall does not bring a deleted
configuration file back; this does:
sudo apt install --reinstall -o Dpkg::Options::=--force-confmiss ./md_1.6.0_amd64.deb
sudo apparmor_parser -r /etc/apparmor.d/md
Running the portable archive on Ubuntu, copy
share/doc/md/apparmor-profile from it to
/etc/apparmor.d/md, change /usr/bin/md in it
to the full path of the archive's bin/md, and load it with
sudo apparmor_parser -r /etc/apparmor.d/md.
Fedora allows the namespace without a profile; on
another distribution, check that unprivileged user namespaces have
not been turned off.
How do I create a new document?
File ▸ New (Ctrl+N) opens an untitled window; save it anywhere with File ▸ Save (Ctrl+S), which asks for a name and a place the first time. From then on every change is written to the file a second after you stop typing. An untitled document is kept as a draft in the meantime, so File ▸ Quit (Ctrl+Q) and logging out ask nothing: the next launch reopens your documents and drafts, each in its layout and window size. Closing a single untitled window by hand still asks whether to save it.
Where are my files stored?
Wherever you put them. md never moves your documents to a server —
there isn't one. Files live on your computer, or in a folder your own
cloud provider syncs if you choose that location. A book is likewise
just a folder you chose, and its chapters and articles are
ordinary folders and .md files you can open in any other
app. See the Privacy Policy for details.
How do I rename, move or duplicate a document?
From the File menu: Rename… changes the name, Move To… picks a new folder, Duplicate opens a copy as a new untitled window, and Revert to Saved puts back the last text you saved. File ▸ Open Recent lists your ten newest documents from the desktop's shared recent list — the one GNOME Files shows — and Clear Menu empties md's menu without touching other applications' history.
How do I make md the default app for Markdown files?
In Files, right-click a .md file, choose Open
With…, pick md and switch on Always use for
this file type. Or, from a terminal:
xdg-mime default me.nettrash.md.desktop text/markdown
md opens .md, .markdown, .mdown,
.markdn, .mdtext, .mdtxt,
.mkd, .mkdn, .mdwn and
.mkdown as Markdown, and offers itself for
.txt, .text, .puml,
.plantuml, .iuml, .pu,
.gv and .textpack. md runs as a single
instance, so a double-click lands in the running app, and a file that
is already open just brings its window forward.
How do I open a TextBundle? And what about .dot files?
A .textpack opens by double-click like any file. A
.textbundle is a folder, and a folder cannot be
given a file type, so open it with File ▸ Open TextBundle
Folder…, drop the folder on an md window, or run
md notes.textbundle. Both are imported as their text and
never written back — saving asks for a new .md location —
so the bundle's own images are never lost. The bundle's images are not
shown in the preview, on purpose: md's document is its text.
md's own Open dialog never offers .dot, which the md
family leaves to Word templates. Ubuntu itself types a
.dot as Graphviz too, though, so one that reads as a graph
lists md under Open With. A ```dot fence inside a
document always works.
What is writer mode, and how do I start a book?
A book is simply a folder you pick: its subfolders
are chapters, the Markdown files inside are
articles, and they are ordered by file name (a numeric
prefix like 01-intro.md first, then alphabetically).
Nothing is imported or copied into the app.
Book ▸ New Book… creates one, Book ▸ Open Book…
opens an existing folder, and Book ▸ Show Book
(Shift+Ctrl+B) brings the book window back. The book window keeps the
structure in a sidebar and the selected article beside it in Edit,
Split or Preview; Alt+↑ and Alt+↓ step through the articles in reading
order (GNOME keeps Ctrl+Alt+↑ / ↓ for switching workspaces). The
sidebar's New Chapter… and New Article… add to the
book, and right-clicking a chapter or article renames it, moves it up
or down, or deletes it.
Reordering is written back to the file names — the group is
renumbered with 01-, 02- prefixes — so the
order is real and visible in Files, not a private list kept by the
app. md remembers the book across launches and reopens on the article
you were writing; Book ▸ Close Book forgets it (the folder is
untouched).
How do I turn a book into a PDF or an EPUB?
With a book open, Book ▸ Export Book ▸ PDF… compiles the whole
book into a single PDF, every chapter and article in reading order;
Export Book ▸ EPUB… packages it as a standard EPUB
3 with a proper table of contents, which opens in any
e-reader; and Export Book ▸ LaTeX… writes one
book-class .tex file. Book ▸ Print
Book… prints it all. Math and diagrams are drawn by md's own
offline engines and embedded, so they show up in any reader.
What do printed and exported PDFs look like?
Real pages, laid out by WebKitGTK. File ▸ Export ▸ PDF Page
Size chooses A4 (the default), A5, US Letter, US
Legal, or a paperback trim (6 × 9″, 5 × 8″, 5.5 × 8.5″); the choice is
remembered and applies to the book compile too. Pages carry half-inch
margins on every side. Put \newpage (or
\pagebreak) on a line of its own to start a fresh page
exactly where you want one.
Printed and exported pages are always white with dark ink, whichever theme you write in. The type is Nimbus Mono PS (URW's Courier) for prose and Liberation Mono for code, both from your distribution's font packages — the Linux stand-ins for the typewriter faces of md on a Mac. A PDF made here and one made from the same document on a Mac have the same pages and content, but not the same bytes.
Where are the commands? I don't see a toolbar.
Every window has a menu bar under its title bar: File holds documents, Export and Print; Edit the editing commands, Find and Replace and the Typing switches; Format bold, italic, code, links, headings, lists, quotes and indents; View switches Edit / Split / Preview (Ctrl+1 / Ctrl+2 / Ctrl+3), Zen Mode (Shift+Ctrl+Return) and full screen (F11); Book the writer mode; Go jumps to headings, to your private notes and between a book's articles; Window lists the open windows; and Help has this page (F1), the privacy policy and About md. There is no Share menu: Linux has no system share sheet.
What does "The file changed on disk" mean?
Another program (a sync client, an editor, a script) wrote the file
while you had unsaved edits in md. Rather than overwrite either
version, md offers Reload from Disk (take the other program's
version) or Keep My Version (write yours back). If a save
fails while a window is closing — a full disk, a read-only folder — md
keeps your text beside the document as <name>
(rescued) with the original extension (Notes
(rescued).md) and tells you so.
The preview went blank and came back — what happened?
The preview's web process stopped, and md reloaded it. If the same document stops it twice in a row, md stops trying and says so in one line; the next edit tries again. If a document does this every time, please send it (see Contact).
How do math and diagrams work — do they need a network?
No. md installs the rendering engines with the app and runs them in
the preview on your computer: KaTeX with mhchem for
math and chemistry, Mermaid, Viz.js / Graphviz and PlantUML for
diagrams, and highlight.js for code. Charts from a
```plot block are drawn by md itself, with no engine at
all. Nothing is downloaded at run time and nothing is sent to a
diagram service — it works with the network off.
What are private author notes?
An HTML comment on a line of its own whose text
begins with note: — for example
<!-- note: rewrite this scene --> — is the writer's
private note. It is listed under Go ▸ Notes, jumps you to that
spot in the editor, and never appears in the preview, the PDF, the
EPUB or print.
My punctuation isn't being "corrected" — is that a bug?
No, that's intentional. md edits Markdown source, so it leaves quotes, dashes and dots exactly as typed. The one thing it changes as you type is the first letter of a line or a sentence, which it capitalizes — never inside code, a table, math, a link or a path. Delete the capital and type the letter again and it stays lowercase, or turn it off under Edit ▸ Typing ▸ Capitalize Sentences.
Why doesn't the preview show some advanced Markdown feature?
md's renderer covers everyday Markdown plus the common GitHub extensions (task lists, tables, strikethrough, fenced code, footnotes). It is the same renderer as md on every other platform, and a few rarely used constructs render as plain text on purpose: raw HTML is shown as the characters you typed, there are no reference-style links, and a four-space indent continues a paragraph rather than starting a code block. If something common renders wrong, please report it (see Contact).
Does md collect any data about me?
No. md contains no analytics, no advertising or tracking SDKs, and
contacts no servers of ours. The only network requests it makes are
for an image your own document links by a remote URL, and, when you
export an EPUB, the https: cover its front matter names.
What md keeps on your computer — a few settings, the session it
reopens and your unsaved drafts — is listed in full in the
Privacy Policy.
Reporting a bug
When emailing about a bug, the following details speed things up:
- Your distribution and version (
cat /etc/os-release), your processor (uname -m), and your desktop and session type (echo $XDG_SESSION_TYPE: Wayland or X11). - The md version (
md --version) and how you installed it. - What you did, what you expected, and what happened instead — and anything md prints when you start it from a terminal with
md. - If it is reproducible, a screenshot — and, for a rendering problem, the Markdown that shows it.
Feature requests
Suggestions are read and appreciated; send them by email. Not every request will be implemented, but every one is considered.
Software Bill of Materials
md for Linux is written in Rust on GTK
4, libadwaita and WebKitGTK
6.0, through the gtk-rs bindings (gtk4 0.11,
libadwaita 0.9, webkit6 0.6,
glib and gio 0.22), with a hand-written
Markdown parser and a handful of small crates. GTK, libadwaita and
WebKitGTK are your distribution's own libraries, installed by its
package manager, and so are the text fonts: md bundles none.
It does bundle five open-source JavaScript engines, which render math, diagrams and code inside the preview, on your computer and offline:
- KaTeX 0.17.0, with the mhchem extension and its math fonts — TeX / LaTeX math and chemistry.
- Mermaid 11.16.0 — Mermaid diagrams.
- Viz.js 3.24.0 / Graphviz 14.1.1 — Graphviz (DOT) graphs.
- PlantUML 1.2026.4beta4 — PlantUML diagrams.
- highlight.js 11.11.1 — syntax highlighting.
They are installed under /usr/share/md (in the archive,
share/md); nothing is downloaded at run time and no
rendering is done on anyone's server. md itself is MIT-licensed, and
each engine keeps its own licence; the copyright file
names every one — /usr/share/doc/md/copyright on Ubuntu,
/usr/share/licenses/md/copyright on Fedora, and
share/doc/md/copyright in the archive.