Add bookmarks to your Obsidian notes for quick navigation. Click the bookmark icon in the note header to set a bookmark, click again to jump back to it.
- Key Features
- Why This Plugin?
- Installation
- Quick Start
- Commands
- How It Works
- Troubleshooting
- Development
- Contributing
- License
- Support
- Contact
- π One-Click Bookmarking - Set bookmarks instantly with the header button
- π― Smart Return Navigation - Jump back to your bookmark with visual feedback
- π§Ή Automatic Cleanup - Bookmarks self-destruct after navigation to keep notes clean
- π Dual Mode Support - Works seamlessly in both edit and preview modes
- π¨ Visual Indicators - Gutter decorations show bookmark locations
- π§ Smart Placement - Avoids YAML frontmatter and handles code blocks intelligently
- β¨οΈ Keyboard Shortcuts - Full hotkey support for power users
- π§ Zero Configuration - Works out of the box with no setup required
Long documents can be challenging to navigate, especially when you need to frequently jump between different sections. Traditional bookmarks in browsers don't help with individual document navigation, and Obsidian's built-in linking requires creating permanent markers.
This plugin solves the problem by providing temporary, session-based bookmarks that:
- Don't clutter your document with permanent markers
- Provide instant visual feedback about bookmark locations
- Work across both edit and preview modes
- Automatically clean up when you're done navigating
Perfect for researchers, writers, and anyone working with lengthy documents who needs quick navigation without permanent document modifications.
- Open Obsidian Settings
- Go to Community Plugins and disable Safe Mode
- Click Browse and search for "Bookmark"
- Install and enable the plugin
- Download the latest release from GitHub Releases
- Extract the contents to
{vault}/.obsidian/plugins/bookmark/ - Reload Obsidian and enable the plugin in Community Plugins
- Install the BRAT plugin
- Add this repository:
https://github.com/AlexKucera/bookmark - Enable the plugin in Community Plugins
- Set a Bookmark: Click the bookmark icon (π) in any note's header
- Navigate: Scroll or move around your document
- Return: Click the bookmark icon again (now πβ) to jump back
- Auto-Cleanup: The bookmark automatically disappears after 500ms
The bookmark icon changes state to show whether a bookmark is set:
- π Empty bookmark icon = No bookmark set
- πβ Filled bookmark icon = Bookmark is set
| Command | Description | Default Hotkey |
|---|---|---|
Toggle bookmark |
Set bookmark at current position or jump to existing bookmark | Not set |
Clean up multiple bookmarks |
Remove all bookmark markers from the current note | Not set |
You can assign custom hotkeys to these commands in Obsidian's Settings β Hotkeys.
The plugin uses invisible HTML comment markers (<!-- bookmark-marker -->) to track bookmark positions. These markers:
- Are completely invisible in both edit and preview modes
- Persist with your document but don't interfere with content
- Are automatically removed after navigation
- Work across Obsidian sessions and device syncing
- Frontmatter Protection: Bookmarks are never placed in YAML frontmatter
- Code Block Handling: Special logic for bookmarks within code blocks
- Scroll Preservation: Your scroll position is maintained during bookmark operations
- Multi-Bookmark Detection: Warns if multiple bookmarks are detected
| Issue | Solution |
|---|---|
| Bookmark not appearing | Try reloading the note or restarting Obsidian |
| Multiple bookmark warning | Use the "Clean up multiple bookmarks" command |
| Bookmark in wrong location | The plugin uses scroll position detection - try setting bookmark while stationary |
| Bookmark not jumping correctly | Ensure you're not in a heavily formatted section; try another location |
This plugin is built with TypeScript and uses esbuild for bundling.
# Clone the repository
git clone https://github.com/AlexKucera/bookmark.git
cd bookmark
# Install dependencies
npm install| Command | Description |
|---|---|
npm run dev |
Start development mode with watch compilation |
npm run build |
Build for production with type checking |
npm run version |
Bump version and update manifest files |
eslint main.ts |
Run ESLint on main TypeScript file |
tsc -noEmit -skipLibCheck |
Run TypeScript type checking |
The plugin consists of several key components:
- BookmarkPlugin (
main.ts) - Main plugin orchestrator - BookmarkManager (
bookmarkManager.ts) - Core bookmark logic - ViewActionManager (
viewActionManager.ts) - Header button management - GutterDecorationManager (
gutterDecoration.ts) - Visual gutter indicators
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
If you find this plugin helpful, consider supporting its development:
Alexander Kucera
- Website: https://alexanderkucera.com
- GitHub: @AlexKucera