chadidi1 downloadsImport Safari, Chrome, Firefox or Chromium Browsers bookmarks as individual Markdown notes, using predefined or your own template.
Import Safari, Chrome or Firefox bookmarks as individual Markdown notes into your Obsidian vault, using your own customizable template.

templates folder, bundled into the build with its file name as the template name. Editing a template in settings switches the selection to Custom and leaves the built-in file untouched. Templates use placeholders like {{title}}, {{url}}, {{date}}, {{folder_path}}, {{domain}}, and more.{{title|yaml}} to safely format text for YAML frontmatter.Bookmarks Bar/Work) to sync only what you want.You can easily install and test beta releases of this plugin using Obsidian42 - BRAT:
chadidi/obsidian-bookmarks-sync (or https://github.com/chadidi/obsidian-bookmarks-sync).manifest.json, main.js, and styles.css).main.js, manifest.json, styles.css) from the Releases page.bookmarks-sync in your vault's plugin directory: <vault>/.obsidian/plugins/bookmarks-sync/.main.js, manifest.json, and styles.css into that folder.git clone https://github.com/chadidi/obsidian-bookmarks-sync.git
cd obsidian-bookmarks-sync
npm install
npm run build
Copy main.js, manifest.json, and styles.css into <vault>/.obsidian/plugins/bookmarks-sync/.
Sync bookmarks now).| Browser | Default file location | Notes |
|---|---|---|
| Google Chrome | …/Google/Chrome/Default/Bookmarks, falling back to …/AccountBookmarks (macOS / Windows / Linux) |
JSON file. When you are signed in, Chrome may store your bookmarks in AccountBookmarks instead; the plugin detects both. Custom profiles, or other Chromium-based browsers (e.g. Brave, Edge, Arc), can be used by providing their custom path in settings. |
| Chromium | …/Chromium/Default/Bookmarks, falling back to …/AccountBookmarks (macOS / Windows / Linux) |
Same JSON layout as Chrome. Detect the default Chromium profile automatically, or set a custom profile path in settings. |
| Safari | ~/Library/Safari/Bookmarks.plist (macOS) |
Binary plist, parsed directly in-process. Because macOS protects ~/Library/Safari/, either use Choose Bookmarks.plist in settings to grant read access to just that file for the session (no Full Disk Access needed), or grant Obsidian Full Disk Access in macOS System Settings → Privacy & Security. Reading List items are excluded. Safari stores no creation dates, so {{date}} uses the sync date. |
| Firefox | Auto-detected places.sqlite or bookmarkbackups/*.jsonlz4 |
Reads live bookmarks from places.sqlite using the system sqlite3 CLI tool on a temporary database snapshot. Alternatively, point to a bookmarkbackups/*.jsonlz4 file or directory for native decompression without sqlite3. |
| Placeholder | Description |
|---|---|
{{title}} |
Bookmark title (falls back to host/path if title is empty). |
{{url}} |
Full URL of the bookmark. |
{{date}} |
Date the bookmark was added (supports moment.js format, e.g. {{date:YYYY-MM-DD}}). |
{{synced}} |
Date the current sync occurred (e.g. {{synced:YYYY-MM-DD HH:mm}}). |
{{folder_path}} |
Full browser folder path separated by / (e.g. Bookmarks Bar/Dev/Obsidian). |
{{folder}} |
Immediate parent folder name (e.g. Obsidian). |
{{folder_links}} |
Folder path as wiki links separated by / (e.g. [[Bookmarks Bar]] / [[Dev]] / [[Obsidian]]). Pass a custom separator after a colon, e.g. {{folder_links: > }} gives [[Bookmarks Bar]] > [[Dev]] > [[Obsidian]]. |
{{folder_links_yaml}} |
Folder path as a quoted list of wiki links for front matter (e.g. ["[[Bookmarks Bar]]", "[[Dev]]", "[[Obsidian]]"]). |
{{folder_tags}} |
Folder path as quoted, comma-separated tag names for a front matter tag list, sanitized to valid Obsidian tags (whitespace becomes -, characters like ( ) . & are removed), e.g. tags: [bookmark, {{folder_tags}}] gives tags: [bookmark, "Bookmarks-Bar", "Dev", "Obsidian"]. |
{{folder_hashtags}} |
Folder path as inline hashtags, sanitized to valid Obsidian tags (whitespace becomes -, characters like ( ) . & are removed), e.g. #Bookmarks-Bar #Dev #Obsidian. |
{{domain}} |
Clean domain name without www. (e.g. obsidian.md). |
{{browser}} |
Browser name (e.g. Google Chrome, Chromium, Safari, Firefox). |
You can apply pipe filters to any placeholder:
|yaml: Safely quotes and escapes values for YAML frontmatter (e.g. title: {{title|yaml}}).|lower: Converts value to lowercase.|upper: Converts value to uppercase.|slug: Converts value to a URL-friendly slug (e.g. {{title|slug}}). Folder paths keep their / separators, so Music Stuff/Sax Songs becomes music-stuff/sax-songs.data.json. Renaming or moving notes inside Obsidian will preserve the association.data.json) are removed; notes for bookmarks that still exist in the browser but fall outside the configured Browser bookmarks folder are left untouched.Bookmarks.plist for Safari, Bookmarks for Chrome, or places.sqlite for Firefox). These files are read strictly to import your bookmarks. When you pick a Safari Bookmarks.plist through the native file dialog, its contents are held in memory for the current session only and are never written to disk or persisted in settings.