AI writes it.
You're the one reading it.
Plans, specs, summaries, transcripts, the Word doc a client sent — reading them has quietly become most of the job. Fast Document Reader is built for those hours: a fast, light Mac reader for Markdown, Word, OpenDocument and plain text, opened the instant you click. It's easy to look at and never bogs your Mac down — however many files you leave open. It reads first and gets out of the way; when a line in your own Markdown is wrong, you fix it where you are, a block at a time, saved when you say so.
Coming to the Mac App Store · Apple Silicon (arm64) only · macOS 13+ · free · MIT licensed
It's a text file.
Why is your fan on?
Because most document and Markdown apps are a web browser wearing a costume. That's the beat before the window opens, the memory that climbs the longer you leave it running, and yes — the fan, over some text. This one is a Mac app, plain and simple. Every number below was measured, not marketed.
| Opening | Instant. There's no loading screen, because there's nothing to load. |
| While you read | Uses no processor time at all. The fan stays off; your battery doesn't notice it's open. |
| Memory | ~127 MB with nine large documents open at once — and ~52 MB handed back the moment you close them. It doesn't creep up over the day. |
| Big files | A 4,000-paragraph document opens right away, and the scrollbar tells the truth about its length from the first frame. |
| Diagrams | Flowcharts and sequence diagrams appear right in the page, even with no internet. Drawn once, instant every time after. |
| Images | Scroll past a picture and it quietly gives its memory back; scroll up and it's there. The page never jumps while you read. |
| Code | Colored the way your editor colors it, with a Copy button on every block. |
| Reading | Tabs, find (⌘F), bigger or smaller text (⌘+/⌘−), automatic dark mode. |
| Editing | Right-click a block, or press E to edit · I to add below · U/J to move · D to delete. Your changes are yours until ⌘S. |
| Finding your place | T opens a list of every heading. Click one and the cursor goes there, ready to edit that section. |
| Editing big files | Only the block you changed is redrawn — 9 ms on a 64,000-character file, 29 ms on 1.2 MB. Undo stays instant. |
| Word & OpenDocument | Opens .docx · .docm · .dotx · .dotm · .odt read-only, shown as the author formatted it — headings, tables whose columns line up, images and equations even inside a cell, footnotes, comments, tracked changes and right-to-left text. Want to change one? One click hands it to your editor of choice. |
| Extract for an AI | --extract turns a .docx or .odt into clean Markdown from the command line — headless, so an AI reads it without spending its budget parsing the file. |
| Plain text | Opens .txt · .csv · .log too, shown exactly as written. Files from Windows or Linux arrive readable — saved back in the encoding they came in. |
| Works on | Macs with Apple silicon (M1 and later), macOS 13 or later. |
| Price | Free — and the source is public, so every number here is something you can check yourself. |
What it looks like
Real screenshots. No mockups.
Diagrams show up, even offline
Flowcharts and sequence diagrams appear right where they belong — on a plane, on the subway, anywhere. Each one is drawn a single time, then it's instant forever, and it stays sharp however far you zoom in.
Pictures, without the weight
Images look sharp, but the ones you've scrolled past quietly hand their memory back. Your place on the page never shifts while you're reading.
Code you can actually read
Code is colored the way your editor colors it, on its own card, with a Copy button on every block and a switch for long lines. Thirty-four languages, under the names you actually type — yml, golang, c++, sh, tsx.
Built for the way
you actually read
Reading a long document is two things over and over: moving through it, and pulling a piece out of it. Both are one keystroke — or one click — here.
Jump by the document's own units
The arrow keys move you by the units a document is actually made of, and the modifier decides how far you go. A soft band follows the line you're on, so a glance finds your place after a scroll — and the page holds still while the cursor moves inside it, following only when the cursor would leave the screen.
| ⌘↑ ⌘↓ | Previous / next heading — step through the document's own outline. |
| ⌥↑ ⌥↓ | Page up / down, with a few lines of overlap so you keep your place. |
| fn↑ fn↓ | Straight to the start or end of the document. |
| ⌘← ⌘→ | Start / end of the line. |
| ⌥← ⌥→ | Previous / next sentence. |
| fn← fn→ | Previous / next paragraph.A whole table or code block counts as a single stop, so you step over it instead of through it. |
| ↑ ↓ ← → | Move the reading cursor one line or one character. |
| ⇧ + any of these | The same move, selecting as it goes.Jump three paragraphs with ⇧fn→ and you have those three paragraphs selected, ready to copy. |
| ? | The full list, inside the app.Every shortcut here — plus find, zoom, tabs and the mouse ones — without leaving the document. |
Take a section without selecting it
Dragging a cursor across three screens to copy one section is the other half of the job. So the left margin does it for you — click it, and the block beside it is on your clipboard, highlighted so you can see exactly what you got.
| Beside a heading | The whole section — down to the next heading of the same rank or higher.Sub-headings underneath come along; the next sibling section never does. |
| Beside a code block | The raw code — what you'd paste into a terminal, not the rendered card. |
| Beside anything else | That paragraph, list or table, on its own. |
| Right-click a block | Copy · Open · Edit · Add Below · Move · DeleteEditing opens that block's Markdown source. Nothing reaches the file until ⌘S. |
Change a block without leaving the page
The same five keys work wherever the reading cursor is, so fixing a line or moving a section never means picking up the mouse. Every step is one undo, and the page keeps your place — only the block you touched is redrawn, which is why it stays instant in a file where other apps stall.
| E | Edit this block's Markdown source. |
| I | Insert a new block below it. |
| U · J | Move it up · down, a step per press. |
| D | Delete it — asked first, and undoable after.With a selection, everything it touches goes at once. |
| T | A sidebar of every heading. Click one and the cursor lands there, ready to edit that section. |
| ⌘S · ⌘N | Save · new file.A new Markdown file starts with a small outline, so there is something to edit from the first keystroke. |
What's actually inside
Pure Swift, AppKit and TextKit — no Chromium, no Electron, no web runtime for the text.
Diagrams are mermaid and formulas are KaTeX, both bundled in the app and snapshotted once
to a vector PDF cached by content hash — so $$…$$ and flowcharts alike render
with no internet and stay sharp at any zoom. Code is colored by a single left-to-right
scanner across thirty-four languages, which is why a URL inside a string never turns the
rest of the line into a comment. Off-screen media drop their pixels while keeping their
exact layout size, so nothing reflows and the scroll bar never swings. The whole document is
laid out up front — that is what makes the scroll bar honest from the first frame — while
an edit re-renders only the block it touched, which is why undo stays instant in a file
where other apps stall. Text files are read as the encoding they were written in and
written back the same way, so a document made on Windows doesn't quietly become something
else. MIT licensed —
read the source and check any
claim on this page.
Need help, or found a bug?
Fast Document Reader is built and supported by DubDubDub Corp.
Report an issue
Bugs, crashes, and feature requests go on GitHub Issues — the fastest way to reach us.
Open an issue →Coming to the Mac App Store
It'll be free there, one click to install. Until then the source is public — if you build Mac apps, it's a minute's work to have it running today.
dubdubdub