Linkding: The Minimalist Self-Hosted Bookmark Manager
Linkding: The Minimalist Self-Hosted Bookmark Manager
Photo by Russel Bailo on Unsplash
Cloud bookmark services — Pocket, Raindrop.io, Pinboard — offer convenience at the cost of your data. Linkding flips that trade-off: you get a clean, fast bookmark manager that runs on your own hardware, costs nothing to operate, and never shows you ads or sells your browsing habits.
Linkding's philosophy is "do one thing well." It stores bookmarks, tags them, and lets you search them. No AI summaries, no social feeds, no bloated feature sets. It's fast because it's small.
What Linkding Does Well
Bookmarking with intent. You add a URL, optionally add tags and a description, and it's saved. The UI is deliberately minimal — there's nothing to configure, no onboarding flow, no dashboard to manage.
Tag-based organization. Linkding is tag-first, not folder-first. A single bookmark can have multiple tags. Filter by any combination to find what you're looking for.
Full-text search. Linkding searches the title, description, and (if you enable it) the full text of saved pages. You can find bookmarks even if you don't remember how you tagged them.
Browser extensions. First-party extensions for Firefox and Chrome add a one-click save button to your browser toolbar. You don't need to open the Linkding UI to bookmark something.
Import/export. Standard Netscape bookmark format means you can migrate from any other bookmark manager and back out at any time.
Installation with Docker
The easiest deployment uses a single Docker container:
docker run -d \
--name linkding \
-p 9090:9090 \
-v linkding-data:/etc/linkding/data \
--restart unless-stopped \
sissbruecker/linkding:latest
Then create an admin account:
docker exec -it linkding python manage.py createsuperuser --username=admin [email protected]
Navigate to http://your-server:9090 and log in. That's the entire setup.
Docker Compose Setup
For a more maintainable deployment:
version: "3"
services:
linkding:
image: sissbruecker/linkding:latest
container_name: linkding
ports:
- "9090:9090"
volumes:
- ./linkding-data:/etc/linkding/data
environment:
- LD_SUPERUSER_NAME=admin
- LD_SUPERUSER_PASSWORD=your-secure-password
restart: unless-stopped
Setting LD_SUPERUSER_NAME and LD_SUPERUSER_PASSWORD creates the admin account automatically on first boot, which is useful for automated deployments.
Like what you're reading? Subscribe to Self-Hosted Weekly — free weekly guides in your inbox.
Configuration Options
Linkding is configured through environment variables:
| Variable | Default | Description |
|---|---|---|
LD_SUPERUSER_NAME |
— | Auto-create superuser on startup |
LD_SUPERUSER_PASSWORD |
— | Password for auto-created superuser |
LD_SERVER_PORT |
9090 | Internal server port |
LD_DISABLE_BACKGROUND_TASKS |
False | Disable background jobs (page snapshots, etc.) |
LD_ENABLE_AUTH_PROXY |
False | Enable reverse proxy authentication (SSO) |
LD_FAVICON_PROVIDER |
DuckDuckGo | URL template for favicon fetching |
LD_ENABLE_OIDC |
False | Enable OIDC/SSO authentication |
Multi-User Setup
Linkding supports multiple users, each with their own bookmarks. Shared bookmarks can be marked public and accessed without authentication via /public.
To create additional users, use the Django admin at /admin:
- Navigate to
http://your-server:9090/admin - Log in with your superuser account
- Click "Users" → "Add User"
Public bookmarks are useful for sharing a curated list with others — for example, a team knowledge base or a public reading list.
Setting Up the Browser Extension
The browser extension provides the fastest bookmarking workflow:
Firefox: Install from Mozilla Add-ons
Chrome/Chromium: Install from the Chrome Web Store
After installing, right-click the extension icon → Options. Set:
- Base URL:
http://your-server:9090(or your domain) - API Key: Found in Linkding under Settings → Integrations → API
Once configured, clicking the extension opens a quick-add popup pre-filled with the current page's title and URL. Add tags and save. Takes about 3 seconds.
Page Snapshots
Linkding can save snapshots of bookmarked pages to protect against link rot. Enable it in Settings → General → "Enable automatic page snapshots using Singlefile."
Snapshots are stored locally in your Linkding data volume. When you view a bookmark with a snapshot, there's a link to the archived version. This is similar to Pocket's offline saving but fully self-hosted.
Snapshots require the sissbruecker/linkding:latest-plus image (slightly larger, includes Singlefile):
image: sissbruecker/linkding:latest-plus
Reverse Proxy with Nginx Proxy Manager
To expose Linkding under your domain with HTTPS:
- In Nginx Proxy Manager, create a new Proxy Host
- Domain:
bookmarks.yourdomain.com - Forward Hostname: your Linkding container name (e.g.,
linkding) - Forward Port: 9090
- Enable SSL, Force SSL, HTTP/2
For the same setup with Caddy:
bookmarks.yourdomain.com {
reverse_proxy linkding:9090
}
Linkding vs. Other Self-Hosted Bookmark Managers
| Feature | Linkding | Hoarder | Linkwarden |
|---|---|---|---|
| Setup complexity | Simple | Moderate | Moderate |
| AI features | None | Yes | None |
| Full-text search | Yes | Yes | Yes |
| Collections/spaces | Tags only | Tags + Collections | Spaces |
| Browser extension | Yes | Yes | Yes |
| Resource usage | ~50MB RAM | ~200MB RAM | ~100MB RAM |
| Page snapshots | Yes (plus image) | Yes | No |
Linkding wins on simplicity and resource efficiency. If you want AI-powered tagging and summaries, Hoarder is better. If you want multi-person workspaces with shared collections, try Linkwarden.
Data Backup
Linkding's data lives in a single directory. Back it up with any tool:
# Simple rsync backup
rsync -av /path/to/linkding-data/ /backup/linkding/
# Or with Restic
restic backup /path/to/linkding-data --tag linkding
You can also export all bookmarks as a Netscape HTML file from Settings → Export — useful as a human-readable backup you can import anywhere.
The Case for Minimal Tooling
Linkding deliberately avoids features. No Kanban view, no highlights, no social layer, no newsletter integration. If you find yourself wanting those things, a different tool might be a better fit.
But if your actual problem is "I want to save links and find them later" — Linkding solves exactly that, runs on any hardware that can run Docker, and will keep working for as long as you want to run it.
