1.0 · in progress · macOS · Apple Silicon · one-time purchase

Every format in.
Clean Markdown out.

A Markdown editor for Mac that opens a DOCX, hands you clean Markdown, and — when you're done editing — hands you back a DOCX with the original formatting still attached. Preview that doesn't flicker. A linter that catches the things your eyes miss at 4 p.m. Export to HTML, PDF, or RTF. No subscription, no cloud, no accounts.

Local-first, on-device· Round-trip DOCX· 7 Shortcuts actions· No subscription
Round-trip editing
Open a DOCX, edit Markdown, save a DOCX. Formatting survives because we track it per element, not per paragraph.
Local-first
Markdown on disk, Swift in the front-end, Foundation Models on the device. Documents never leave your Mac.
One-time purchase
Editor, preview, lint, conversion, round-trip, and export all ship in the core app. No feature gates, no trial timer.
Five preview presets
Standard, GitHub, Academic, Minimal, Newsletter. Code highlighting, Mermaid, and KaTeX load only when the document needs them.

What flexDoc is about

Three things we'd argue about at dinner.

01

Open a DOCX, edit Markdown, save a DOCX

Other editors paste-and-pray. flexDoc opens the original, extracts clean Markdown with style hints preserved as HTML comments, and injects your edits back into the file you started with — headings still headings, lists still lists, the table you didn't touch still exactly as it was. The file is never overwritten in place; you get a new copy with the changes and the original sitting next to it.

02

Live preview that doesn't flash

The right pane updates by injecting HTML into the running WebView, not by reloading the page — so the preview keeps its scroll position, its loaded code-highlighter, and its rendered Mermaid diagrams while you type. Five presets (Standard, GitHub, Academic, Minimal, Newsletter), bidirectional scroll sync, and copy buttons on every fenced code block.

03

Local-first, one-time purchase

Markdown on the disk, Swift in the front-end, Foundation Models on the device. No accounts, no cloud, no trial timer, no subscription for the core conversion tools. The Eden sidecar that handles DOCX round-trip today gets swapped for native Swift release by release — you only notice when things get faster.

Round-trip editing

The party trick that does the work.

A DOCX goes in. flexDoc reads it as Markdown, capturing a manifest of every element's style, position, and formatting — and embeds the paragraph styles as human-readable HTML comments right in the text. Edit by hand, edit with an AI, rewrite the whole thing. On save, the backend pairs your edits back to the manifest and re-emits a DOCX with the formatting intact.

The original file is never overwritten in place. You get a new copy with the changes, and the original sits next to it — untouched, exactly as it arrived.

  1. 1
    Extract

    DOCX → Markdown with a manifest of every element. Styles ride along as `<!-- flexdoc:style ... -->` comments.

  2. 2
    Edit

    Rewrite freely. Styles survive because the hints don't look like content to a human or a model.

  3. 3
    Inject

    Save → the backend matches your Markdown back to the manifest and re-emits the DOCX with formatting preserved.

  4. 4
    Original, preserved

    The source file is never mutated in place. The output lands alongside it by default.

Features

Small editor. Careful list.

Nine of the 25 that ship in 1.0 — the rest live on the features page. Every one earns its place by removing steps between you and a clean document.

Editor

Syntax-highlighted Markdown

A monospace editor with headings, bold, italic, inline code, fenced blocks, links, blockquotes, list markers, horizontal rules, and YAML front matter all coloured inline. Five font families (SF Mono, Menlo, Monaco, Courier New, Andale Mono) and four themes (Default, Solarized, Nord, Xcode).

You see the structure of your document as you write it.

Editor

Formatting shortcuts

Cmd+B, I, E, K for bold, italic, inline code, link. Cmd+1 through Cmd+6 for headings. Select text first — the editor wraps it in the right markers. Auto-pairs `*`, `` ` ``, `~`, `[`, `(` on selected text so you don't chase closing characters.

Every common Markdown gesture lives on a key combination.

Editor

Smart paste

Paste from a webpage or a rich-text document and flexDoc converts HTML/RTF to Markdown on the way in. Headings, lists, links, and inline formatting come through; the inserted range flashes blue for 0.8 seconds so you can see what landed. Cmd+Shift+V pastes plain text if you'd rather.

Copy a whole article, get Markdown. No cleanup step.

Editor

List continuation

Press Enter at the end of a bullet, numbered, blockquote, or task-list line and the next line gets the same prefix — numbers auto-increment. Press Enter on an empty item to stop.

Outlines stay outlines without touching the keyboard twice.

Editor

Drag and drop

Drop images into the editor and they arrive as `![filename](path)`. Drop a text file and the contents inline. Drop a DOCX and flexDoc extracts its text on the spot.

Grab a file from Finder, land it in the document.

Editor

Find, replace, go to line

System find bar on Cmd+F. Cmd+G / Cmd+Shift+G for next and previous. Cmd+L jumps to a specific line number.

Navigate long documents the way the rest of macOS does.

Editor

Table of contents

Cmd+Ctrl+T inserts a linked TOC at the cursor, generated from your headings with GitHub-compatible anchors.

One shortcut, one navigable index.

Preview

Live preview, no flicker

The WebView updates by injecting body HTML, not by reloading the page. Scroll position, highlight.js, Mermaid, and KaTeX stay loaded between edits. First load uses a full render; preset changes trigger the full render again because CSS swaps warrant it.

A preview you can watch without getting sick.

Preview

Five preview presets

Standard, GitHub, Academic (serif, wider margins), Minimal, and Newsletter (wider body, editorial feel). Each preset bundles its own CSS. The toolbar paintbrush swaps between them instantly.

Pick the look once, and your document wears it everywhere.

How it fits into a day

Five moments flexDoc earns its slot in the Dock.

Editing a document the client sent as DOCX

Open the .docx. flexDoc extracts it as clean Markdown with style hints tucked into HTML comments. Edit freely — rewrite, restructure, take the passive voice out with extreme prejudice. Save, and a new DOCX appears next to the original with your changes applied and the formatting intact. The client gets a Word document back; you never had to open Word.

Writing technical documentation

Markdown on the left, GitHub preset preview on the right. Fenced Swift, Python, and shell blocks get Highlight.js colouring; Mermaid diagrams render as you type; KaTeX handles the one math expression in the appendix. Export HTML for the docs site, PDF for the handoff, RTF for the email that needs it inlined.

Drafting a newsletter in Markdown

Switch the preview to the Newsletter preset, drop in your sections, let the linter catch the long lines and the empty link you left behind at 2 a.m. Copy as rich text and paste into your newsletter tool — the fonts are the newsletter tool's problem, the content is already clean.

Running Markdown through Shortcuts

Point a Shortcut at the clipboard, route it through "Convert Clipboard to Markdown," then "Generate Table of Contents," then back to the clipboard. Bind it to a keyboard shortcut. flexDoc never has to come to the foreground.

Tidying a report before a print run

Open the draft. Run the linter — fix the two heading gaps and the inconsistent list markers it flags. Preview in the Academic preset. Cmd+P. Done.

Questions we get a lot

The short answers to the common asks.

Does flexDoc replace my Markdown editor? +

Only if you want it to. flexDoc is a conversion-and-processing tool that happens to have a competent editor. If you write long-form in iA Writer, Ulysses, or Bear, bring drafts here when you need to output to DOCX, PDF, HTML, or RTF.

How does round-trip DOCX editing actually work? +

On open, flexDoc calls the Eden backend to extract the DOCX as Markdown while capturing a manifest of every element's original style, position, and formatting. Style names survive the edit as `<!-- flexdoc:style ... -->` HTML comments. On save, the backend re-reads your Markdown, pairs each element with the original manifest entry, and rewrites the DOCX with your text applied to the matching formatting. The new file is written to `*_modified.docx` by default — the original is left alone.

Is there a Python dependency? +

v1.0 bundles a vendored Python interpreter and the Eden suite inside the app for DOCX/PPTX round-trip and Pandoc long-tail conversion. You never see it — no terminal, no dialog, no install step. Each release moves more work into native Swift, and by v2 the sidecar is retired. Native code is always tried first when it can handle the job.

Does anything leave my Mac? +

No. All Markdown parsing, preview rendering, linting, and export happens locally. The only outbound connections are optional CDN fetches for Highlight.js, Mermaid, and KaTeX, and only when your document actually contains code blocks, diagrams, or math. Documents are never sent anywhere.

Does it have AI features? +

AI features are planned against Apple's Foundation Models framework — on-device only — for tasks like lint suggestion and smart paste cleanup. Nothing AI-related runs through a third-party server, ever.

Can I open a DOCX and save it back as .md? +

Yes. Open the DOCX, flexDoc gives you Markdown. Cmd+S saves to `.md` — the original DOCX stays where it was. Round-trip injection is the reverse path, and you opt into it per document.

What Markdown flavour does the preview render? +

CommonMark, with GitHub-flavored extras — task lists, tables, strikethrough, fenced code blocks with language tags. Mermaid and KaTeX are handled through fenced blocks. Flavor switching (strict CommonMark, GFM, MultiMarkdown, Pandoc) lands in v1.1.

Is it a subscription? +

No. One-time purchase for the core editor, preview, lint, conversion, round-trip, and export. If server-backed features ever ship, they land as a separate opt-in — and the core app stays one-time forever.

What macOS version do I need? +

macOS Sonoma or later for the current builds; Liquid Glass surfaces light up on macOS 26 and fall back cleanly on earlier systems.

Does it sync with iCloud? +

flexDoc is a document app — if you put your Markdown files in iCloud Drive, Apple syncs them. flexDoc itself never opens a cloud connection of its own.

Is the file format proprietary? +

The file format is Markdown. A plain `.md` file with optional style hints as HTML comments — readable in any text editor, renderable in any CommonMark implementation. The round-trip manifest (when present) is a sidecar JSON with a versioned schema.

Will there be an iPad version? +

Planned. The current focus is making the Mac version excellent first, then porting the core to iOS/iPadOS once the native Swift backend has taken over from the sidecar.

1.0 in the final stretch. Want a build?

The release is shipping, the beta is open to the people who want one, and the inbox has humans in it. Tell us the documents you're fighting with and the formats you can't get out of — we'll send you a build.

No waitlist form. No tracking. No cloud round-trip, either.