# Linkwarden — Self-Hosted Collaborative Bookmark Manager > Linkwarden is an open-source bookmark manager that saves, organizes, and preserves web pages with full-page screenshots, PDF snapshots, and collaborative collections. ## Install Save the content below to `.claude/skills/` or append to your `CLAUDE.md`: ## Quick Use ```bash git clone https://github.com/linkwarden/linkwarden.git cd linkwarden cp .env.sample .env docker compose up -d ``` Open `http://localhost:3000` — register and install the browser extension to start saving bookmarks. ## Intro **Linkwarden** is a self-hosted, collaborative bookmark manager designed to collect, read, annotate, and permanently preserve web pages. Unlike simple bookmark tools, Linkwarden captures full-page screenshots and PDF snapshots of every saved link — ensuring your bookmarks survive even if the original page disappears. With 17.8K+ GitHub stars and AGPL-3.0 license, Linkwarden provides a privacy-respecting alternative to Pocket, Raindrop.io, and other cloud bookmark services. ## What Linkwarden Does - **Save & Organize**: Save links with tags, collections, and descriptions - **Page Preservation**: Automatic full-page screenshots and PDF snapshots of every saved link - **Full-Text Search**: Search across saved page content, not just titles and URLs - **Collaboration**: Share collections with team members, with permission controls - **Browser Extension**: One-click save from Chrome, Firefox, and Safari - **Mobile PWA**: Progressive web app for mobile bookmark access - **Import/Export**: Import from Pocket, Raindrop, browser bookmarks (HTML/JSON) - **RSS Feeds**: Subscribe to collections via RSS - **Tags & Collections**: Hierarchical organization with nested sub-collections - **Reading List**: Mark bookmarks as read/unread with reading progress ## Architecture ``` ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Next.js │────▶│ Next.js API │────▶│ PostgreSQL │ │ Frontend │ │ + Prisma │ │ (Data) │ └──────────────┘ └──────┬───────┘ └──────────────┘ │ ┌──────┴───────┐ │ Playwright │ │ (Screenshot │ │ & Archive) │ └──────────────┘ ``` ## Self-Hosting ### Docker Compose ```yaml services: linkwarden: image: ghcr.io/linkwarden/linkwarden:latest ports: - "3000:3000" environment: DATABASE_URL: postgresql://linkwarden:linkwarden@postgres:5432/linkwarden NEXTAUTH_SECRET: your-random-secret NEXTAUTH_URL: http://localhost:3000 NEXT_PUBLIC_DISABLE_REGISTRATION: "false" ARCHIVAL_METHOD: screenshot,pdf depends_on: - postgres volumes: - linkwarden-data:/data/data postgres: image: postgres:16-alpine environment: POSTGRES_USER: linkwarden POSTGRES_PASSWORD: linkwarden POSTGRES_DB: linkwarden volumes: - pg-data:/var/lib/postgresql/data volumes: linkwarden-data: pg-data: ``` ## Key Features ### Page Archival Every saved link automatically gets: - **Screenshot**: Full-page rendered screenshot (like Wayback Machine) - **PDF Snapshot**: Complete page saved as PDF - **Readable View**: Clean, readable text extraction This means even if a website goes offline, you still have the content. ### Browser Extension Available for Chrome, Firefox, and Safari: - Right-click any link to save - Quick-add popup with tag and collection selector - Keyboard shortcut (Ctrl+Shift+L) ### Collaboration - Create shared collections - Invite team members with view/edit/admin roles - Activity feed for shared collections - Public collections with shareable links ### API ```bash # Save a link curl -X POST http://localhost:3000/api/v1/links -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -d '{"url": "https://example.com", "collection": {"id": 1}, "tags": [{"name": "dev"}]}' # Search links curl "http://localhost:3000/api/v1/links?searchQueryString=react&searchByName=true&searchByUrl=true" -H "Authorization: Bearer YOUR_TOKEN" ``` ## Linkwarden vs Alternatives | Feature | Linkwarden | Pocket | Raindrop.io | Wallabag | |---------|-----------|--------|-------------|---------| | Open Source | Yes (AGPL-3.0) | No | No | Yes (MIT) | | Self-hosted | Yes | No | No | Yes | | Page archive | Screenshot + PDF | Simplified | No | Article text | | Collaboration | Yes | No | Yes | No | | Full-text search | Yes | Premium | Yes | Yes | | Browser ext. | Yes | Yes | Yes | Yes | ## FAQ **Q: How much storage do web page snapshots use?** A: Each screenshot is about 0.5–2MB (PNG); PDFs about 0.2–1MB. Allocate enough storage if you save a lot of links. In settings, you can choose to save only screenshots or only PDFs. **Q: Can I import browser bookmarks?** A: Yes. You can import HTML bookmarks exported from browsers, plus exports from Pocket, Raindrop.io, and Omnivore. **Q: Multi-user support?** A: Yes. Each user has their own bookmark space, and you can collaborate through shared collections. Admins control whether registration is open. ## Source & Thanks - GitHub: [linkwarden/linkwarden](https://github.com/linkwarden/linkwarden) — 17.8K+ ⭐ | AGPL-3.0 - Website: [linkwarden.app](https://linkwarden.app) --- Source: https://tokrepo.com/en/workflows/linkwarden-self-hosted-collaborative-bookmark-manager-fc714a8d Author: Script Depot