mrrepac1k downloadsRead your notes like an e-book: rendered Markdown is laid out in pages you flip sideways by swipe, tap, or arrow keys, as a single page or a two-page spread, on desktop and mobile.
Read your Obsidian notes — and your books — like an e-book.
MD Reader renders a note into fixed-size pages and lets you flip through them sideways — by swiping, tapping the screen edges, or using the arrow keys — instead of scrolling vertically. Choose a single page or a two-page book spread. Works on desktop and mobile.
It also imports FB2, EPUB and TXT books into Markdown, so a whole library lives inside your vault as ordinary notes you can link, quote and search like anything else.
See the 2.0.0 release notes for details.
← / →, A / D, Space / Shift+Space, PageUp / PageDown, Home / End, the mouse wheel, or the on-screen ‹ › buttons.Shift+← / Shift+→ step through the table of contents, not through internal render blocks. Stepping back from the middle of a chapter returns to its start first, as e-readers do.Ctrl/Cmd + / − on the desktop, pinch with two fingers on the phone.Backspace, Alt+←, or the menu).Esc twice — closes the reader and returns the workspace exactly as it was: side panels, header, tab bar, full screen, the OS status bar on a phone. The panel state is kept on disk, so it survives quitting Obsidian with a book open..fb2, .epub and .txt are converted into a single .md file (chapters become headings, so the table of contents works) plus a folder with the book's images. Footnotes are inlined, epigraphs become quotes, the cover is kept. Cyrillic encodings such as windows-1251 are detected automatically..fb2 / .epub / .txt file in the vault → Convert to Markdown.While reading:
A / D, Space, mouse wheel, or the ‹ › buttons.Esc once brings the interface back without leaving the book; Esc again closes the reader and restores the workspace. Also in the menu, as a command, and on the end screen.Home / End go to the start and the end of the whole book.Ctrl/Cmd + / −, or pinch with two fingers.Quotes go to Books/Quotes by default; the folder is created on the first save. Change Quotes folder in the MD Reader settings to use another folder inside the vault. Each book gets its own note, and books with identical names get separate files. An unrelated existing note is never overwritten. The configured quotes subfolder is excluded from automatic library discovery; you can still add a quote note to the library manually.
| Command | What it does |
|---|---|
| Open library | The list of your books. |
| Continue reading | Reopens the last book you read, where you left off. |
| Open current note in MD Reader | Opens the active note in the reader. |
| Open table of contents | Jump to any heading in the book. |
| Search in this book | Search the whole book and jump to a hit. |
| Next / Previous chapter | Step through the table of contents (Shift+→ / Shift+←). |
| Open the note for editing | Opens the source in a tab, at the current chapter. |
| Leave the reader | Closes the book and puts the panels and the app chrome back. |
| Back to where I was | Undo a jump to a heading, hit or bookmark. |
| Appearance: font, tint, margins | The reading settings, without leaving the book. |
| Increase / Decrease font size | Same as Ctrl/Cmd + / − while reading. |
| Add / remove bookmark | Bookmark the current page. |
| Open bookmarks | Jump to a bookmark. |
| Save selected text as a quote | Append the selection to the book's quote note, with a source link. |
| Toggle full screen | Desktop only. |
| Cycle page tint | Switch tint on the fly — handy in the evening. |
| Import book to Markdown (fb2, epub, txt)… | Pick a file and convert it. |
| Setting | What it does |
|---|---|
| Page mode | Auto (two pages on a wide screen, one on a narrow one), Always one, or Always two. |
| Max page width | Width of a single page; smaller is a narrower, more comfortable column. 0 = no limit. |
| Font size | Multiplier relative to your theme's font. |
| Reading font | Typeface for the page text — only inside the reader. Includes a custom CSS font-family option. |
| Page tint | Sepia, cream, gray or night. Only the reader changes; the rest of Obsidian keeps your theme. |
| Brightness | Dim the page for reading in the dark. |
| Line height | Line spacing. |
| Gap between pages | Space between the two pages of a spread. |
| Vertical margins | Empty space at the top and bottom of the page. |
| Side margins | Minimum outside space on each side, in pixels. The maximum page width can leave additional space; very narrow panes reduce the margin to keep the page inside the viewport. |
| Reading progress | Separate switches for the progress bar, page number/percentage, chapter name and time left. |
| Quotes folder | Destination for quote notes, one per book. Default: Books/Quotes. |
| Justify text | Align paragraphs to both edges, with hyphenation where the platform supports it. |
| Page-flip animation | Animate page turns on/off. |
| Tap zones | Tap left/right to flip, center to toggle the interface. |
| Remember position | Reopen each note where you left off. |
| Show note title | Show the note title on the first page. |
| Open in | New tab, current tab, split, or new window. |
| Collapse side panels | Hide the side panels while reading. |
| Immersive reading | Hide the app chrome for full-screen reading. |
| Full screen while reading | Desktop: open books in real full screen; Esc leaves at any time. |
| Folder for imported books | Where converted books and their images are saved. |
| Hide the system status bar (mobile) | On a phone, also hide the OS status bar (clock, notifications) while reading. Experimental. |
Interface language follows Obsidian — English and Russian.
Settings → Community plugins → Browse → search "MD Reader" → Install → Enable.
If it is already installed, check for updates in Community plugins. Updating keeps your settings, saved positions and bookmarks.
Copy main.js, manifest.json and styles.css into
<your vault>/.obsidian/plugins/md-reader/ and enable the plugin in
Settings → Community plugins.
When updating manually, replace those three files and keep data.json.
The plugin is plain JavaScript with no build step — main.js is the source and ships as-is. To work on it, edit the files in the plugin folder and reload Obsidian (Ctrl/Cmd-P → "Reload app without saving").
The logic and UI smoke tests stub the obsidian module (and a minimal DOM) and run on bare Node, with no dependencies to install:
node tests/logic.mjs
node tests/ui.mjs
logic.mjs covers chapter splitting, text anchors, appearance presets, reading position, navigation, encodings and the TXT converter. ui.mjs checks the library, settings, workspace restoration and quote storage, including concurrent appends and filename collisions.
Browser tests use Playwright and Chromium (npm install --no-save --package-lock=false playwright, then npx playwright install chromium):
node tests/layout.cjs
node tests/reading.cjs
layout.cjs checks page geometry and footer clearance across widths, fonts and page modes. Set READER_THEMES_DIR to an Obsidian themes directory to include its themes. reading.cjs exercises the reader with a stubbed Obsidian host: delayed library reopening, text anchors after edits/reflow, bookmarks, legacy data, presets, color swatches, progress controls, quote selection and keyboard menu access. These tests do not replace testing in Obsidian on an actual phone. PLAYWRIGHT_MODULE and CHROMIUM_PATH can point to existing installations.
MIT © mrrepac