Bookmarks

Bookmarks from every browser and your own links, in one search

palupdated 2026-10-27ProductivityComes with pal

Open in pal

Comes with pal, so a new install already has it; the button finds it in pal again if you removed it. This page can't see what your pal has installed.

Bookmarks: The file's links first, then each browser in its section, the folder on the right
The file's links first, then each browser in its section, the folder on the right
Bookmarks: A folder name is a keyword: typing it finds what is filed under it
A folder name is a keyword: typing it finds what is filed under it
Bookmarks: Open in browser, Copy link, Copy as markdown, Open in Chrome
Open in browser, Copy link, Copy as markdown, Open in Chrome
Bookmarks: Browser History: what the browsers visited, searched by title and address, newest first with when; Enter opens it in the browser it came from
Browser History: what the browsers visited, searched by title and address, newest first with when; Enter opens it in the browser it came from
1 of 4

What it does

Search the bookmarks of every browser you use, plus links of your own, and open one in the browser it came from. A second list searches your browsing history.

  • Chrome, Brave, Edge, Chromium, Vivaldi, Arc, Safari and Firefox, every profile
  • Your own links from a JSON file, with names, keywords and icons
  • Found by name, address or folder; a link saved twice is listed once
  • Open it, open it in the browser it came from, or copy it plain or as a markdown link
  • Browser History: search pages you visited in Chrome-family browsers and Firefox, newest first

Palettes 2

  • Bookmarksbookmarkslist

    The links in the file and the browsers, by name, folder and keyword.

    • ↵Open in the browser
    • ⌘CCopy the link
    • ⌘⇧CCopy as markdown
  • Browser Historyhistoryinput

    What the browsers visited (Chrome, Brave, Edge, Chromium, Vivaldi, Arc, Firefox; every profile), searched by title and address on every keystroke, newest first; the last visit on the right. Each browser's history file is copied under pal's cache before it is read, since a running browser holds it locked; the copy follows the file, at most every 30 s. Safari's history needs Full Disk Access and is not read.

    • ↵Open in the browser it came from
    • ⌘CCopy the link
    • ⌘OOpen in the default browser

Actions

  • Open in browserThe system's default browser. Every action here works on several marked rows: they open together, copies go one per line.↵
  • Copy link⌘C
  • Copy as markdown[name](url).⌘⇧C
  • Open in Chrome, Safari, FirefoxOn a browser's row: the browser it came from.
  • Open in Chrome, Firefox (history)On a Browser History row: the page in the browser it came from.↵
  • Open in default browser (history)⌘O

Settings

Extension, [extensions.bookmarks]

file
~/.config/pal/data/bookmarks.json path

A JSON array of {name, url, subtitle?, icon?, keywords?}; the url is opened or copied. Optional: without the file the browsers alone are listed.

browsers
chromebraveedgechromiumvivaldiarcsafarifirefox list

Whose bookmarks to list, in order (the first wins a url two have): chrome, brave, edge, chromium, vivaldi, arc, safari, firefox. Empty lists the file alone.

exclude_folders
none list

Bookmark folders skipped, by name (`Archive`) or a short path (`Bookmarks Bar/Old`).

Defaults shown. Change them in pal's settings window or in the config file.

The README

Everything Bookmarks does, key by key, from the extension's own README.md

Bookmarks

Hand-picked links from a JSON file and your browsers' bookmarks, in one indexed palette, and the browsers' visit history in a second (below). Enter opens the link in the default browser; ⌘C copies it. Every source is read on every listing (⌘R), so an edit in the browser or the file shows at once. A url two sources have is listed once, the first wins: the file's rows come first, then each browser in the browsers setting's order.

The file's rows show subtitle (the address when absent), an icon (a glyph, emoji or hex colour; a row with a url and no icon gets the site's favicon) and match their keywords. Browser rows sit in a section per browser and profile (Chrome, Chrome (Work), Safari, Firefox), carry the folder path as an accessory (Bookmarks Bar / Dev) and as keywords, and get the site's favicon.

Sources

source what is read
the file ~/.config/pal/data/bookmarks.json (the file setting): a JSON array of { name, url, subtitle?, icon?, keywords? }
Chrome, Brave, Edge, Chromium, Vivaldi, Arc every profile's Bookmarks JSON; the profile name from Local State when there is more than one
Safari ~/Library/Safari/Bookmarks.plist, through plutil -convert xml1; the Reading List is left out
Firefox every profile's places.sqlite, copied first because the running browser holds it locked; tags and place: queries left out
[
  { "name": "Home Assistant", "url": "http://ha.lan", "keywords": ["ha", "home"] },
  { "name": "GitHub", "url": "https://github.com", "icon": "🐙" }
]

Keyboard

keys action
enter Open in browser: the system's default
cmd+c Copy link
cmd+shift+c Copy as markdown: [name](url)
(action panel) Open in Chrome, Safari, Firefox, ...: on a browser's row, the browser it came from (open -a on macOS, the browser's binary on Linux)
cmd+r Read every source again

Browser History

A second palette, input rather than indexed: every keystroke searches the visit history the same browsers keep (browsers setting; Safari's History.db is behind Full Disk Access and is not read), by title and address, newest first, fifty rows at most, a url once. The row is the page's title (the address when it has none), the address under it and as the favicon's source, when it was last visited on the right, the browser and profile as the section. Enter opens the page in the browser it came from, ⌘C copies the link, ⌘O opens it in the default browser.

browser file read
Chrome, Brave, Edge, Chromium, Vivaldi, Arc every profile's History (SQLite, urls; Chrome's clock counts microseconds from 1601)
Firefox every profile's places.sqlite (moz_places, microseconds from 1970)

A running browser holds its file locked, so each is copied under pal's cache (~/Library/Caches/pal/bookmarks, ~/.cache/pal/bookmarks on Linux) before it is read; the copy is taken again when the file's mtime moved, at most every 30 seconds, so a keystroke never copies a large history twice. Hidden entries (a redirect Chrome keeps for autocomplete) and pages never visited are left out.

Setup

Nothing to install. A browser with no profile on the machine lists nothing. Safari's file is behind Full Disk Access on macOS: without it the Safari section is one inert row saying so (System Settings > Privacy & Security > Full Disk Access, add pal); the other browsers still list.

Settings, [extensions.bookmarks]:

key type default what
file path ~/.config/pal/data/bookmarks.json The bookmarks file. ~ is expanded. Not there: the browsers alone; unreadable: one hint row naming it.
browsers list ["chrome", "brave", "edge", "chromium", "vivaldi", "arc", "safari", "firefox"] Whose bookmarks (and history) to list, in order. [] is the file alone, and no history.
exclude_folders list [] Bookmark folders skipped, by name (Archive) or a short path (Bookmarks Bar/Old), case-insensitive.

What it does not do

  • Add, edit or delete a bookmark: the file is edited by hand, the browsers' bookmarks in the browser. The Quicklinks palette is the one edited in the panel.
  • Safari's Reading List, Firefox's tags and place: smart folders, and Safari's history (Full Disk Access).
  • Arc on Linux: it has no Linux build, so the entry has no profile root.
  • Favicons for the file's rows come from the url; a row without a url is skipped.

Platforms

macOS and Linux. Safari (and Full Disk Access) is macOS only; the Chromium browsers and Firefox are read from their platform's profile roots (~/Library/Application Support/... or ~/.config/... and ~/.mozilla/firefox).