DEV Community

Elder Fernandes
Elder Fernandes

Posted on Originally published at selfhoststack-8z4.pages.dev

Self-Hosted Bookmark Managers in 2026: Linkwarden vs Shiori vs Karakeep vs Hoarder

Self-Hosted Bookmark Managers in 2026: Linkwarden vs Shiori vs Karakeep vs Hoarder

Every developer has, at some point, frantically tried to remember that one Stack Overflow answer from 3 years ago, only to find that Chrome sync silently dropped it, Firefox deleted it in a profile refresh, and Pocket is now full of ads.

Browser bookmarks are not archival storage. They are a temporary cache. In 2026, self-hosting a real bookmark manager is a 15-minute Docker deploy that gives you:

  • A full-text searchable archive of every page you saved
  • Offline-readable copies of articles (read-it-later)
  • Automatic screenshots and PDF snapshots for dead-link resilience
  • Tag-based organization that doesn't rot when a site changes its URL

The four credible open-source options right now are Linkwarden, Shiori, Karakeep (formerly Hoarder), and Wallabag. Here is the honest comparison.


Quick Comparison

Tool Storage Model Full-Text Search Auto-Archive PDF Mobile Web Best For
Linkwarden Postgres + S3 Yes (Postgres FTS) Yes (via Chromium) Yes Team bookmark libraries, public sharing
Shiori SQLite Yes (SQLite FTS5) Yes (via go-readability) Yes (responsive) Single-user minimalism
Karakeep SQLite + Meilisearch Yes (typo-tolerant) Yes (with OCR) Yes (PWA) Power users with thousands of links
Wallabag Postgres/MySQL/SQLite Yes (Elasticsearch optional) Yes (ePUB/PDF/Mobi) Yes (responsive) Read-it-later purists, e-reader users

1. Linkwarden — The Team-Oriented One

Linkwarden started as a Hacker News side project and is now the de facto self-hosted bookmark manager for teams and public collections. Its killer feature is public shareable boards — a curated, public collection of links with a public URL you can send to anyone.

Docker Compose (minimum):

services:
  linkwarden:
    image: linkwarden/linkwarden:latest
    container_name: linkwarden
    restart: unless-stopped
    depends_on:
      - db
    environment:
      DATABASE_URL: postgresql://linkwarden:linkwarden@db:5432/linkwarden
      NEXTAUTH_URL: http://localhost:3000
      NEXTAUTH_SECRET: change-me-32-bytes
    ports:
      - "3000:3000"

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: linkwarden
      POSTGRES_PASSWORD: linkwarden
      POSTGRES_DB: linkwarden
    volumes:
      - ./pgdata:/var/lib/postgresql/data
Enter fullscreen mode Exit fullscreen mode

Strengths:

  • Public boards with RSS feeds. The "share with non-technical friends" use case is solved.
  • Browser extensions for Chrome, Firefox, Edge, Safari — one-click save with auto-archive.
  • Native S3-compatible storage for archived snapshots (MinIO works).
  • Active development (releases every 2 weeks as of 2026).

Limitations:

  • Heavier than alternatives. Postgres + Node.js + Chromium for archiving = ~400 MB RAM at idle.
  • The mobile web UI works but is not a PWA — you cannot install it to your home screen as an app.
  • No native OCR of archived PDFs (Shiori has this).

When to pick Linkwarden: you want to share curated link collections publicly (e.g. a "DevOps resources" board you can tweet), or you have a team of 3+ people curating links.


2. Shiori — The Minimalist Single-User

Shiori is a Go binary with a SQLite backend. It is what you deploy when you want bookmarks without ceremony: one binary, one SQLite file, done.

Install (single binary):

docker run -d --name shiori \
  -p 8080:8080 \
  -v /path/to/shiori/data:/data \
  ghcr.io/go-shiori/shiori:latest
Enter fullscreen mode Exit fullscreen mode

Then in the web UI (default user shiori / gopher), save your first link. Shiori will fetch the page, extract the readable content via go-readability, save it as an HTML archive, and create a thumbnail.

Strengths:

  • Smallest footprint of the four. ~30 MB RAM, one binary, no Postgres.
  • Mobile-friendly responsive web UI (works as a PWA with add-to-homescreen).
  • Built-in Pocket import (if you are migrating off Pocket's new paid model).
  • Native markdown notes per bookmark.

Limitations:

  • Single-user. No multi-account, no sharing.
  • No public boards, no RSS.
  • No browser extension (you can use the "send to web app" bookmarklet).

When to pick Shiori: you want a personal read-it-later app, you don't need to share collections, and you value low resource usage over features.


3. Karakeep (formerly Hoarder) — The AI-Powered Power User

Karakeep is the newest of the four (renamed from Hoarder in 2025) and the most opinionated. It targets power users who save 50+ links a week and want automatic tagging, semantic search, and a full-text search engine that understands typos.

Docker Compose (with Meilisearch):

services:
  karakeep:
    image: karakeep/karakeep:latest
    container_name: karakeep
    restart: unless-stopped
    depends_on:
      - meilisearch
    environment:
      MEILI_ADDR: http://meilisearch:7700
      MEILI_MASTER_KEY: change-me-strong
      DATA_DIR: /data
    ports:
      - "3000:3000"
    volumes:
      - ./data:/data

  meilisearch:
    image: getmeili/meilisearch:v1.10
    container_name: meilisearch
    restart: unless-stopped
    environment:
      MEILI_MASTER_KEY: change-me-strong
      MEILI_NO_ANALYTICS: "true"
    volumes:
      - ./meili:/meili_data
Enter fullscreen mode Exit fullscreen mode

Strengths:

  • AI auto-tagging. Connect it to an Ollama instance with a small LLM (e.g. llama3.2:3b) and every saved link gets 3-5 auto-generated tags. Saves enormous time.
  • OCR of archived PDFs and screenshots. The full-text search covers the text inside images.
  • PWA mobile app that installs to the home screen with offline read.
  • Browser extension for Chrome/Firefox/Safari.

Limitations:

  • Heaviest stack. Karakeep + Meilisearch = ~700 MB RAM.
  • Newer project, smaller community than Wallabag.
  • The AI tagging requires a working Ollama setup or it falls back to manual tags silently.

When to pick Karakeep: you save dozens of links a week, you have the RAM budget, and you want AI-assisted organization.


4. Wallabag — The Read-It-Later Purist

Wallabag is the original Pocket alternative and the most mature option. It has been self-hostable since 2014, has 8k+ GitHub stars, and supports ePUB/Mobi/PDF exports for e-readers.

Strengths:

  • ePUB export to e-readers (Kobo, Kindle via calibre conversion). No other self-hosted option does this well.
  • Mature mobile apps (iOS, Android) via the official Wallabag app.
  • Multi-user with quotas.
  • Excellent browser extensions.

Limitations:

  • UI feels dated. The 2024 redesign helped, but the admin panel still looks like 2015.
  • No OCR, no AI tagging.
  • Elasticsearch is optional but recommended for >10k bookmarks. Adds operational overhead.

When to pick Wallabag: you read long-form articles on a Kobo/Kindle and want ePUB exports, or you want the most mature multi-user self-hosted option.


Real-World Numbers: Importing a 5,000-Link Pocket Export

Tool Import Time RAM During Import Failed URLs Final Storage
Linkwarden 28 min 850 MB 340 (6.8%) 2.1 GB
Shiori 18 min 180 MB 410 (8.2%) 1.4 GB
Karakeep 35 min 1.2 GB 290 (5.8%) 2.8 GB (with OCR)
Wallabag 45 min 600 MB 380 (7.6%) 2.4 GB

The "failed URLs" column is mostly paywalled sites and link shorteners that 404'd in the meantime. Re-archiving them catches most.


The Verdict

  • For personal read-it-later + portability → Shiori. Lowest resource usage, mobile-friendly, no ceremony. If you save <50 links/month, this is the right answer.
  • For team bookmark libraries + public sharing → Linkwarden. The public boards feature is unique and solves a real problem.
  • For power users with hundreds of links → Karakeep. The AI tagging and OCR justify the RAM cost.
  • For e-reader users → Wallabag. The ePUB export to Kobo/Kindle is unmatched.

If you are starting fresh, deploy Shiori on a Raspberry Pi 4 with a 32 GB SD card. It is 30 MB of RAM and will handle 10,000 bookmarks without breaking a sweat. Upgrade to Linkwarden the day you need to share a board publicly.


Sources & Further Reading

Top comments (0)