BU

Buku

Command-line bookmark manager with tags

Bookmarks & Read-It-Later ★ 7.2k stars Easy setup GPL-3.0

Buku is a powerful command-line bookmark manager that stores bookmarks in a portable SQLite database with tagging and search. It targets terminal users who want scriptable bookmark management. It runs as a CLI tool.

Key features

  • Portable SQLite bookmark store
  • Powerful tagging and search
  • Optional web UI via add-on
  • Browser import support

Pros & cons

Strengths

  • Scriptable and fast
  • Portable database
  • Lightweight

Trade-offs

  • Command-line focused
  • No built-in archiving

Buku replaces

Last reviewed Sep 13, 2026 · 735 words

buku -a https://restic.readthedocs.io backup, restic, docs

That line is Buku in full: a URL, a comma-separated tag list, and a row in an SQLite database under ~/.local/share/buku/bookmarks.db. Search is buku -s restic, opening in the browser is buku -o 12, editing is buku -w 12 in $EDITOR. The 7,189-star project has been doing exactly this since 2015, and its refusal to become an app is the whole appeal. If you live in a terminal, it is the fastest bookmark tool you will use; if you do not, stop here and go to Linkding.

One file is the architecture

Buku's whole state is one SQLite database. That means backup is cp, sync is any file-sync tool, and there is no server to keep alive; a few thousand bookmarks make a file under 2 MB. Point Syncthing at the directory and the same bookmarks appear on every machine, with the usual caveat that two edits while offline produce a conflict file you have to reconcile. Encrypt it with buku -l when the machine is shared; it prompts for a password and the file is unusable until buku -k. The database also opens in any SQLite client, which is how I do bulk edits that Buku's flags do not cover.

The commands you will actually run

Add with -a, update with -u and an index, delete with -d. Tag search is buku --stag backup, and it supports + and , for AND and OR across tags. Fuzzy search across title, URL and description is -s; all-keywords-must-match search is -S. Buku fetches the page title on add, so most entries need no typing beyond the URL and tags. Print everything with buku -p -f 4 and pipe it into fzf for the best interface the tool never had to build. Marking an entry --immutable 1 stops a refresh from overwriting a title you rewrote by hand.

The web UI is real but optional

pip install buku[server] adds bukuserver, a Flask app with a plain interface for browsing, tagging and adding. It is single-user with no authentication of its own, so put it behind your proxy's login or leave it bound to localhost. I run it on the NAS purely so that a phone can add a bookmark without an SSH session, and nowhere else. Browser integration comes from the Bukubrow extension for Firefox and Chrome, which talks to a small native host and lets you search Buku from the toolbar. Import from an existing browser is buku --import bookmarks.html, and --ai will pull from the Firefox and Chrome profiles it can find automatically.

What it is not

Buku stores links; it does not store pages. If a site goes away, you have a title and a URL. There is no snapshotting, no readability view, no full-text search of page content. That is what ArchiveBox does, and Linkwarden does both bookmarks and archiving in one multi-user web app, at the cost of a Postgres database and a real server. Buku is also single-user by design: no accounts, no sharing, no public lists. The bookmarks category is mostly web apps because most people want those things; Buku is the exception that stays out of the browser on purpose.

Where it fits in a stack

Buku is a desktop tool that a self-hoster uses alongside a server, not instead of one. The pattern that works: Buku as the fast capture and search layer on the machines you type on, the database synced with Syncthing, and a nightly buku -e /backups/buku.html export that also gets imported into Linkding or ArchiveBox for the archived, phone-friendly copy. The export is standard Netscape bookmark HTML, so nothing is locked in, and every tool in the category imports it.

What I'd do

If fzf is already in your shell history, install Buku today, alias b='buku -p -f 4 | fzf', sync the database with Syncthing, and skip the web UI unless a phone needs it. If you want a bookmark manager the rest of the household can use from a browser, Linkding is the safer pick and takes 5 minutes in Docker. Do not run both without the export step above; two sources of truth for bookmarks is how you lose them.

Compare Buku

1 head-to-head comparisons.

Similar bookmarks & read-it-later apps