Skip to content
Go back

Linkding vs Hoarder vs Wallabag in 2026

By SumGuy 8 min read
Linkding vs Hoarder vs Wallabag in 2026

You’ve been saving links for years. Your browser bookmarks are a graveyard. You’ve got 47 browser tabs open. Your Pocket queue is 6 months behind. Your Discord links channel is unsearchable. You know there’s a better way — you just need to pick the right tool.

Here’s the thing: there’s no one “best” self-hosted bookmark manager. There’s just three very different philosophies, and you need to figure out which one matches how you actually consume content.

Linkding: The Minimal Index Card

Linkding is what happens when you ask “what’s the absolute minimum a bookmark manager needs to do?”

The answer: save the URL and tag it. That’s it. No bloat. No AI. No content scraping. Just a SQLite database, a Django backend, and a snappy web UI that gets out of your way.

The philosophy: A bookmark manager shouldn’t own your content — the internet does. Linkding’s job is to help you find the link again when you need it. The URL is your source of truth.

What you get:

What you don’t get:

Docker Compose Setup

docker-compose.yml
version: '3.8'
services:
linkding:
image: sissbruecker/linkding:latest
container_name: linkding
ports:
- "9090:9090"
environment:
- LD_SUPERUSER_NAME=admin
- LD_SUPERUSER_PASSWORD=changeme123
- LD_CSRF_TRUSTED_ORIGINS=https://bookmarks.example.com
- LD_PUBLIC_REGISTRATION_ENABLED=false
volumes:
- linkding_data:/etc/linkding/data
restart: unless-stopped
volumes:
linkding_data:

Spin it up, hit http://localhost:9090, log in, grab the browser extension. You’re done in 5 minutes.

Resource footprint: 80 MB RAM idle, <100 MB with 10k bookmarks. SQLite on disk. No background workers. This runs on your Raspberry Pi in the corner.

The Browser Extension

Drop the extension URL into your browser (http://localhost:9090/settings/integrations/ gives you the manifest URL), and you get a popup that captures the page title + current URL. You can add tags right there, or tag later. Search works instantly across all your bookmarks.

It’s the same extension story for all three tools — so this becomes a non-differentiator.

Hoarder (Rebranded Karakeep): The AI Content Vault

Hoarder is what you want if you’re a “save everything” person with a home lab that can run LLMs.

Built on TypeScript (Node + React), Hoarder isn’t content-agnostic — it wants your content. It scrapes the full HTML, extracts readable text via Readability, generates summaries, detects bookmarks inside URLs, OCRs images, and runs them past an LLM for auto-tagging.

The philosophy: Bookmarks aren’t about the link — they’re about the knowledge you captured. Let’s build a searchable knowledge vault.

What you get:

What you don’t get:

Docker Compose Setup

docker-compose.yml
version: '3.8'
services:
hoarder:
image: ghcr.io/hoarder-app/hoarder:latest
container_name: hoarder
ports:
- "3000:3000"
environment:
- NEXTAUTH_SECRET=generate-a-random-secret-here
- NEXTAUTH_URL=https://hoarder.example.com
- DATA_DIR=/data
- MEILI_URL=http://meilisearch:7700
- OLLAMA_BASE_URL=http://ollama:11434 # optional
volumes:
- hoarder_data:/data
depends_on:
- meilisearch
restart: unless-stopped
meilisearch:
image: getmeili/meilisearch:latest
container_name: hoarder_search
environment:
- MEILI_NO_ANALYTICS=true
volumes:
- meilisearch_data:/meili_data
restart: unless-stopped
ollama:
image: ollama/ollama:latest
container_name: hoarder_ollama
# Optional: for local LLM tagging
# Pull a model: ollama pull mistral
volumes:
- ollama_data:/root/.ollama
restart: unless-stopped
volumes:
hoarder_data:
meilisearch_data:
ollama_data:

The Meilisearch dependency is required — that’s what powers the full-text search. If you want AI auto-tagging, point it at a local Ollama instance or your OpenAI API key.

Resource footprint: 250+ MB RAM (Node + Meilisearch + optional Ollama). Disk usage grows per captured content (full HTML + extracted text). Not a potato box — you need modern enough hardware.

AI Auto-Tagging in Action

Set up an Ollama connection, and Hoarder can auto-tag incoming bookmarks using a lightweight model (Mistral 7B runs fine). Prompt Hoarder to suggest tags like #productivity, #devops, #gaming based on the content you just saved.

You still manually confirm them, but it saves the “what category does this belong to?” tax. Over time, it learns your tagging patterns.

Mobile is Legit

Unlike Linkding, Hoarder has native iOS and Android apps — full capture, search, and reading right on your phone. This is a big advantage if you’re out and want to save something quickly.

Wallabag: The Read-It-Later Reader

Wallabag is Pocket, but self-hosted. Born as a Symfony/PHP app, it’s built around the idea that bookmarks are articles you haven’t read yet.

The philosophy: Reading matters. Distraction-free reading matters. Let’s clean up the article, handle ePub/PDF export, and let you actually get through your reading queue without advertisements and cookie banners.

What you get:

What you don’t get:

Docker Compose Setup

docker-compose.yml
version: '3.8'
services:
wallabag:
image: wallabag/wallabag:latest
container_name: wallabag
ports:
- "8080:80"
environment:
- SYMFONY_ENV=prod
- DOMAIN_NAME=https://wallabag.example.com
- POSTGRES_DB=wallabag
- POSTGRES_USER=wallabag
- POSTGRES_PASSWORD=changeme123
- MYSQL_ROOT_PASSWORD=changeme123
volumes:
- wallabag_data:/var/www/wallabag/data
- wallabag_images:/var/www/wallabag/web/assets/images
depends_on:
- postgres
restart: unless-stopped
postgres:
image: postgres:15-alpine
container_name: wallabag_db
environment:
- POSTGRES_DB=wallabag
- POSTGRES_USER=wallabag
- POSTGRES_PASSWORD=changeme123
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
volumes:
wallabag_data:
wallabag_images:
postgres_data:

Resource footprint: 150–200 MB RAM. Postgres on the backend. Disk usage scales with article count (but Wallabag doesn’t store the full HTML by default — just extracted text + metadata). Lighter than Hoarder, heavier than Linkding.

The Killer Feature: ePub Export

Wallabag lets you batch-export your read list as ePub. Throw it on your e-reader, read offline. This is genuinely useful if you’re the kind of person who accumulates reading lists and actually wants to get through them.

The Comparison Matrix

FeatureLinkdingHoarder/KarakeepWallabag
Core purposeTag indexContent vaultRead-it-later
Storage modelURL + tags onlyFull HTML + textArticle text + metadata
Search scopeTags onlyFull-text contentFull-text content + tags
AI taggingNoYes (Ollama/OpenAI)No
ePub/PDF exportNoNoYes
Mobile appsNo (web only)iOS + Android nativeiOS + Android + KDE
Reading UIN/AN/ADistraction-free
Distraction-free viewNoNoYes
OCR + image processingNoYesNo
Multi-userYesYesYes
Resource footprint80 MB250+ MB150 MB
DatabaseSQLitePostgres + MeilisearchPostgres
ComplexityMinimalMediumMedium

Which One is Right for You?

Pick Linkding if:

Linkding is the index card system. Your bookmarks are tags, your tags are your memory. It’s fast, it’s reliable, it won’t surprise you.

Pick Hoarder/Karakeep if:

Hoarder is the knowledge vault. Throw everything at it, and it will make it searchable. Great for research spirals and “I read this somewhere” hunts.

Pick Wallabag if:

Wallabag is the reading list. You’re not drowning in 10k links — you’re curating a queue of articles worth your time.

The Real Talk

Here’s the honest take: most people would benefit from two tools.

Linkding for quick “save this technical doc” captures (tags: #docker, #security, #2am-fix). Then Wallabag for “articles worth reading” — actual long-form pieces, essays, tutorials you plan to sit down with.

But if you’re running a tight ship and can only fit one, pick based on your actual behavior: Are you a tagger or a reader? Do you capture or consume? Do you trust systems or humans?

That’s your answer right there.


Full examples: Working Docker Compose files for all three, plus extension setup guides, are at github.com/KingPin/sumguy-examples/productivity/linkding-vs-hoarder-vs-wallabag/


Share this post on:

Send a Webmention

Written about this post on your own site? Send a webmention and it'll show up above once verified.


Next Post
ModSecurity vs Coraza WAF

Discussion

Powered by Garrul . Sign in with GitHub or Google, or post anonymously.

Related Posts