Aria1k downloadsRead EPUB files inside Obsidian with persistent, color-coded highlights, notes, and Markdown export.
English | 简体中文 | 繁體中文 | Italiano
Read EPUB books directly inside Obsidian, mark them up with color-coded highlights and notes, and export everything to Markdown.
.epub file in your vault and read it without leaving Obsidian.Cmd/Ctrl+Shift+H to highlight with the default color (the combination is configurable); the default color is remembered across sessions.*page · time* + quote blocks ready to paste into a note.Cmd/Ctrl+Z reverses the last highlight or deletion.==.{{text}}, {{note}}, {{page}}, {{chapter}} and friends, including a conditional block that only appears when a note exists.Cmd/Ctrl+Shift+H by default, changeable to any combination in the plugin settings.Each book's highlights are kept as one .json file in the vault, in the folder set under Annotation storage in the plugin settings (epub-highlights by default). Because they are ordinary vault files, whatever you already use to sync — Obsidian Sync, remotely-save, git — carries them along, and editing one book only transfers that book's file. Changing the folder moves the existing files with it.
Obsidian's file list doesn't show .json, so the folder looks empty in the sidebar; the files are there. Open the vault in your file manager, or turn on Settings → Files and links → Detect all file extensions.
A highlight is anchored both by a CFI and by its position in the chapter's text. If the markup around it shifts — a different machine, a neighbouring highlight deleted — the text anchor finds the passage again and repairs the CFI. If the epub file behind a path is replaced by a different one, its annotations are set aside in a file marked as previous rather than drawn over a book they no longer match.
Search for "EPUB Reader and Highlighter" in Settings → Community plugins → Browse, install, and enable.
main.js, manifest.json, and styles.css from the latest release.<your-vault>/.obsidian/plugins/epub-reader-highlighter/..epub file anywhere in your vault and click it to open.Cmd/Ctrl+Shift+H for the default color.| Icon | What it does |
|---|---|
| ☰ (menu) | Table of contents — browse the chapters and jump to one. |
| 〝 (quote) | Copy quote — copy the selected text as a *page · time* + quote block. |
| ▮ (highlighter) | Highlights menu — open the highlights list, copy all, export (all or selected), and set the default highlight color. |
| ≡ (sliders) | Reading settings — font, text size, and background; the color wheel expands an inline picker for any custom color. |
| Scroll / Paged | Switch between continuous scrolling and page-by-page reading. |
| ‹ page › | Previous / next page (← / → work too). The page box shows the fixed page / total · percent — type a number and press Enter to jump; in scroll mode it shows the progress percent. |
| 🔍 | Search — find a keyword anywhere in the book and jump to a result. |
| ✎ (pencil) | Cross-page highlight · start — mark the opening of a passage, then turn the page. |
| ✎✓ (pencil, check) | Cross-page highlight · finish — highlight everything between the marked start and the current selection. |
| ⋯ | More — interface language and the quick guide. |
Clicking an existing highlight opens an action bar: change its color, write a note, copy it, or delete it.
Shortcuts: Cmd/Ctrl+Shift+H highlight the selection (configurable in the plugin settings) · Cmd/Ctrl+Z undo.
Highlights live in your vault as one file per book (see Where annotations are stored); reading positions and preferences sit in the plugin's own data file. Nothing leaves your machine.
Open the highlights menu and choose Choose highlights to export…. The top row of the dialog picks which highlights to export — "All", "Today", "Select chapter", and one chip per color the book uses (your chip choice is remembered per book). The bottom row covers this export: sort order, target folder, and a "Set as default" box that writes them back to the settings.
Export to Markdown in the same menu skips the dialog and exports everything.
The plugin's settings hold the defaults: export folder, grouping (none / by chapter / by color), sort order (book order or the order you highlighted), and toggles for chapter, page number, date, note, color name and numbering.
Turning on Use a custom template replaces those toggles with a box where you decide the shape of each entry: {{index}}, {{text}}, {{note}}, {{page}}, {{chapter}}, {{book}}, {{date}}, {{time}}, {{color}}. Anything between {{#note}} and {{/note}} is written only when a note exists, so entries without one leave no empty label behind. Group headings and the separator between entries stay with the plugin — merging relies on them.
Everything produced from one book — its highlights, a merge of them, and its text — is filed in a folder named after the book, inside your export folder:
<export folder>/
└── <book name>/
├── Highlights 2026-08-27-1430.md
├── Text 2026-08-27-1629.md
└── Selected chapters 2026-08-27-1640/
├── Index.md
└── Chapter 1….md
Because every export is its own timestamped file, a book read over several sittings leaves several notes. Merge exported highlight notes (command palette, or the button in the settings) folds any of them into one: choose the notes, the grouping and the sort order, preview the result, and it is written to a new file. Duplicate highlights are kept once; anything that matches no highlight — your own writing, or a quote you edited — is preserved under "Other content". The source notes are never touched.
The highlights menu also carries Export book text…. Pick either layout:
## headings in a single file.Tick the chapters you want; a book's own front matter (cover, copyright page, its printed contents page) is listed too and is usually worth leaving out. Images are skipped and internal links keep only their text.
Mark highlighted passages wraps everything you highlighted in ==, so the archive shows what you marked while reading. Colors aren't carried over — those stay in the highlight export. A notice reports how many passages were matched; a highlight whose wording no longer matches the converted text is skipped rather than silently dropped.
npm install
npm run dev # watch build
npm run build # production build
EPUB rendering is powered by epub.js.