ptwm176 downloadsAdds persistent color-coded reading markers inside Markdown notes.
Reading Markers adds persistent, color-coded reading positions to Markdown notes and PDF pages. Save several places in one document, scan them near the top of the document, and jump back without searching through the document.

Reading Markers is currently desktop-only and requires Obsidian 1.13.7 or later.
The marker appears below the note title. Click it to return to the saved position.
Right-click a marker in the marker bar. Select another color, or select Delete reading marker to remove it.
Choose Edit marker note in the same menu to write a short note about this position. The marker list also offers this action in each result's menu and shows saved notes below excerpts. Clear the text and save to remove a note without deleting the marker. Notes follow Markdown marker color changes and in-app file renames.
The marker bar appears above the PDF pages and shows entries such as Page 8. Click an entry to return to that page. PDF markers are saved in the plugin data, so the original PDF is not changed.
In Markdown editing view, Markdown Reading view, and PDF view, the floating side controls keep the up, middle, and down navigation buttons. Markdown uses the visible reading position, even if the editor cursor is elsewhere. PDF navigation uses the visible page. The up arrow jumps to the nearest marker above the current position, and the down arrow jumps to the nearest marker below it. Before either jump, the plugin asks whether to save the current position for return. Saving creates a temporary session-only return point and replaces the previous temporary point; choosing not to save keeps the previous temporary point. The middle button returns to the temporary point first, then falls back to the session center marker. When neither exists, it asks you to add a permanent reading marker. Permanent markers remain independently manageable and are not deleted by this temporary behavior.
The panel automatically collapses after four seconds without pointer or keyboard activity. Use the small grip to drag it vertically or horizontally. Moving it near the left or right edge snaps it to that side and collapses it; click the edge handle to expand it again. Its position is retained locally in the current Obsidian installation.
The PDF phase uses page-level positions. The same PDF page cannot have two separate markers, and text selection, text excerpts, and PDF annotation are not part of this phase. Scanned image PDFs can still use page markers; when no text layer is detected, the plugin explains that text-level locations are unavailable.
Reading progress is recorded after scrolling or reading interaction settles. Each document has only one saved position. Reopen the document and use the history icon, Continue last reading position, to return there. Opening a document does not automatically move the view.
| Position | Purpose | Lifetime |
|---|---|---|
| Colored marker | A permanent place to revisit | Until you delete it |
| Middle-button return | Return from a temporary lookup | Current view session; replaced only when you save another return point |
| Last reading position | Continue reading after reopening | Saved in plugin data; automatically replaced as normal reading continues |
Marker jumps pause automatic progress updates so looking up a reference does not replace your reading progress. Return with the middle or history button to resume normal tracking. To keep reading at the destination instead, use the play icon, Continue reading from here, which appears during a lookup. Clicking a marker directly in the marker bar or list also preserves a return point if none exists yet.
Markdown progress stores a short text anchor and surrounding context; PDF progress and temporary returns store a page and its vertical offset. These are reading locations, not text selections. Large content changes may require an approximate return, which is reported with a notice. PDF page insertion, reordering, or replacement can invalidate page-based positions.
Use the list icon in the existing floating controls, or run Reading Markers: Open reading marker list from the command palette. This opens an expandable list beside the same controls, not a separate native Bookmarks panel.
All-document scanning happens when requested and stays within the current Vault. The list contains Reading Markers entries only, not entries from Obsidian's core Bookmarks plugin. Navigation, return, resume, and continue-here actions are also available as commands; assign your own shortcuts in Obsidian settings.
Exports are created in the Vault's Reading Markers Summaries folder and opened automatically. They include a source link for each marker, a Markdown text excerpt where available, PDF page positions, configured color meanings, and notes. They are not AI-generated summaries; PDF text is not extracted. If a document cannot be scanned, the list asks you to refresh before exporting so the summary is not silently incomplete.
Interface text automatically follows Obsidian in English or Chinese. Other languages use English.
Saved settings are validated when the plugin starts. Missing or malformed values fall back to safe defaults.
For Markdown notes, the plugin appends an Obsidian block ID to the marked Markdown block:
This paragraph has a blue reading marker. ^study-marker-blue-a1b2c3d4
The block ID keeps the marker attached to the content instead of a line number. Removing a marker removes only the plugin-owned block ID and preserves the original text.
Reading Markers intentionally rejects YAML properties, fenced code blocks, tables, blockquotes, Callouts, HTML blocks, blank lines, and blocks that already have another block ID. It displays a notice instead of guessing where to write.
Block IDs are an Obsidian Markdown extension and may appear as plain text in other Markdown applications.
For PDFs, the plugin stores a record containing the Vault-relative file path, page number, color, and plugin-owned marker ID in its local plugin data. It does not write annotations into the PDF.
Reading progress, PDF markers, optional marker notes, and color meanings are stored in .obsidian/plugins/reading-markers/data.json. Back up this file to preserve them. File and folder moves performed while the plugin is running in Obsidian update stored paths. Moves made outside Obsidian while it is closed, and cross-device merge conflicts, are not automatically reconciled. Temporary middle-button returns are not persisted.
Reading Markers works locally and only reads or updates Markdown notes and plugin data inside the active Vault. PDF markers do not modify PDF files. Exported summaries are local Vault files. It does not use network services, telemetry, ads, accounts, payments, or files outside the Vault.
Install it from Settings -> Community plugins. Existing users can check for updates there and update Reading Markers without reinstalling it. Manual upgrades replace only the three release files, not data.json.
For a manual installation, download main.js, manifest.json, and styles.css from the same GitHub Release. Place them in:
<your-vault>/.obsidian/plugins/reading-markers/
Restart Obsidian, then enable Reading Markers under Community plugins.
npm ci
npm run check
npm run release:check
npm run release:prepare
npm run release:prepare creates a local release directory containing the three files Obsidian installs.
Report reproducible problems in GitHub Issues. See CONTRIBUTING.md for the expected diagnostic details and local verification Gate.
Reading Markers is available under the 0BSD license.