istefox1k downloadsCapture web URLs as Markdown bookmarks in your vault, with og:image preview, AI-proposed tags, and AI-proposed destination subfolder.
Save any web page into your Obsidian vault as a clean Markdown note, with a preview image, AI-proposed tags, and an AI-proposed destination folder. It works on desktop and mobile, keeps everything inside the vault, and runs no backend of its own.
The goal is a Raindrop-style bookmarking experience that lives entirely in plain Markdown files you own.

0.1.30. The favicon-fallback and Wayback Machine snapshot settings now actually run (they existed in the UI before but were never wired up). Several correctness and privacy fixes: hidden bookmarks no longer leak into tag counts or the link picker, deduplicate no longer drops custom frontmatter or body content on merge, related-bookmarks mode now respects the active filters, and a cover's body embed is only ever touched when it is the plugin's own, never an unrelated image elsewhere in the note.
Bookmark bar. A browser-style strip across the top of the workspace, above the ribbon and both sidebars. Starred bookmarks sit on it as one-click buttons with their favicons; each category becomes a button that drops down its links. Clicking one opens the site, Cmd/Ctrl-click opens the note instead, and the note you are working in stays fully visible the whole time. It is off by default: turn it on in Settings, then toggle it from the ribbon icon or the "Toggle bookmark bar" command, which takes a hotkey.
Local cover images. A card's cover can now be an image stored in your vault rather than a remote URL. Sites like Instagram rotate their thumbnail URLs, so a saved preview eventually stops loading; a vault image does not. Right-click a card to pick one with "Set cover from vault…", or use "Save cover to vault" to download the current preview into _bookmarks/_assets/ once and keep it. The reference is stored as a wikilink, so renaming or moving the image never breaks the card. Refreshing a card also no longer wipes a cover when the page has since dropped its og:image.
Deleting a bookmark now takes its downloaded cover with it, so _bookmarks/_assets/ stops growing forever. Only images the plugin downloaded into that folder are ever removed, only when no other note still points at one, and they go to the trash like any other deleted file. An image you picked from elsewhere in your vault is yours and always survives the bookmark.
Full history in CHANGELOG.md, or on the releases page.
Several helpers degrade gracefully and stay out of the way: a favicon fallback service, an optional Wayback Machine snapshot, and the image proxy can each be turned off.
Opening the board lands you on a Categories screen first: a tile per subfolder, each showing an icon and a bookmark count, with an always-last "Uncategorized" tile for root-level bookmarks. Click a tile to drill into a card grid scoped to that category, click "▦ All cards" to see everything at once, or type in the search box to jump straight into a global card search. Each category tile has an edit affordance to give it a custom accent color and icon (emoji or a searchable Lucide icon picker).
Inside the card grid:
_bookmarks/_assets/ once and keep it forever — useful for sites like Instagram whose image URLs rotate and break. The reference is stored as a wikilink, so renaming or moving the image never breaks the card. The same picker is available in the review window during capture.The board is a full tab, which is the wrong shape when you only want to jump to a link without losing sight of the note you're writing. The bookmark bar covers that: a thin horizontal strip inserted above the workspace, spanning the full window width above the ribbon and both sidebars. It shrinks the area below rather than floating over it, so nothing is covered.
Turn it on under Settings → Bookmark bar, then toggle it with the ribbon icon or the Toggle bookmark bar command, which accepts a hotkey. It is off by default.
It works on desktop and mobile. Two limitations worth knowing: popout windows get no bar, and hidden bookmarks never appear on it.
Every bookmark is a Markdown file with YAML frontmatter and an optional preview card:
---
url: https://example.com/article
title: The article title
description: A short summary pulled from the page.
created: 2026-06-14T10:00:00.000Z
domain: example.com
type: article
favorite: false
tags:
- reading
- research
image: https://wsrv.nl/?url=...
favicon: https://example.com/favicon.ico
archive: ""
source: obsidian-bookmarker
---
# The article title
```embed
title: The article title
image: https://wsrv.nl/?url=...
description: A short summary pulled from the page.
url: https://example.com/article
favicon: https://example.com/favicon.ico
aspectRatio: 1.91
The fallback link at the bottom works even without a preview plugin installed.
When the cover is a vault image, `image` holds a wikilink instead of a URL and the body
uses a native embed, so it renders without any preview plugin at all:
```markdown
image: "[[_bookmarks/_assets/The article title.png]]"
# The article title
![[_bookmarks/_assets/The article title.png]]
From inside Obsidian: open Settings, go to Community plugins, Browse, search for "Bookmarker", and install. Then enable it.
To install manually instead:
main.js, manifest.json, and styles.css from a release.<your vault>/.obsidian/plugins/bookmarker/.Install it from the Chrome Web Store (Chrome, Edge, Brave, Arc). Click its toolbar button on any page and Obsidian saves the bookmark.
The extension/ folder also holds the source. To run it unpacked for development: Chrome chrome://extensions → Developer mode → Load unpacked → select extension/. The button opens obsidian://bookmark?url=<current tab>, which hands the URL to the plugin. See extension/README.md for details.
No extension is needed. Make an Apple Shortcut on the Share Sheet that opens obsidian://bookmark?url= followed by the shared URL. The plugin handles the rest.
Commands available from the command palette:
That's it, no need to open the board first. The import pulls every bookmark from your Raindrop account, covers and collections included, and writes them as notes under your root folder.
Four commands tidy a collection that has grown messy. Each one scans, shows a review window where every proposed change has a checkbox, and applies only what you keep checked.
www., and trailing slashes), keeps the richest note in each group, merges the others' tags, notes, and favorite flag into it, then deletes the duplicates you confirm._broken folder, or mark it with a broken flag and a #broken tag. Nothing is deleted.The two AI commands work on the cards you tick on the board (each card has a selection checkbox, with Select all / Select none in the toolbar). With nothing selected they fall back to the cards currently visible under your filters. A batch cap keeps a single run bounded; re-run to continue.
The settings tab covers the classifier (mode, model, API key), the vault layout (root folder, review before saving), the bookmark bar (show it, how many starred bookmarks it holds), preview behavior (image proxy, screenshot fallback), the free service layers (favicon, Wayback), classification behavior (allow new tags, allow new folders, duplicate and same-domain warnings, max tags, excerpt length), the Organize commands (batch cap, broken-link folder, default broken-link remediation), a Raindrop API token for the Raindrop import, and a password for the board's Hidden-cards lock. The API key and token fields each have a Test button to check they work.
Card size, sort order, title source, and per-category color/icon styling live on the board toolbar itself rather than in this tab, since they're board-viewing preferences rather than plugin configuration.
.obsidian/plugins/bookmarker/data.json. If you sync your .obsidian folder, the key syncs with it. Exclude that file from sync.The capture pipeline is: validate the URL, fetch the HTML with Obsidian's requestUrl, extract metadata with DOMParser, resolve a preview image, classify, optionally review, then write the note into the chosen subfolder. All network and file access goes through the Obsidian API so the plugin stays mobile-safe, with no Node-only modules. The classifier is a swappable interface with Claude and heuristic implementations. ADR-001 in docs/architecture/ records the one-click capture design.
npm install
npm run dev # esbuild watch
npm run build # type-check + production bundle
Type-check on its own: npx tsc -noEmit -skipLibCheck.
MIT. See LICENSE.