Shiori — Simple Self-Hosted Bookmark Manager
Shiori is a lightweight self-hosted bookmark manager written in Go with full-text search, archiving, and a clean web interface for organizing your saved links.
What it is
Shiori is a self-hosted bookmark manager written in Go. It saves bookmarks with full-text search, archives web page content for offline reading, and provides a clean web interface for organizing your saved links. It runs as a single binary with an embedded SQLite database or optional PostgreSQL/MySQL backend.
Shiori targets users who want control over their bookmarks without relying on browser sync services or third-party bookmark tools. It is lightweight enough to run on a Raspberry Pi.
How it saves time or tokens
Shiori archives the full content of bookmarked pages, so you never lose access to content that goes offline or changes. The full-text search means you can find bookmarks by content, not just title or URL. This eliminates the frustration of knowing you saved something but not remembering what you called it.
The CLI and REST API enable automation: batch-import bookmarks from browsers, integrate with RSS readers, or build custom workflows.
How to use
- Run Shiori with Docker:
docker run -d --name shiori \
-p 8080:8080 \
-v /path/to/data:/shiori \
ghcr.io/go-shiori/shiori
- Open
http://localhost:8080and log in with default credentials (shiori/gopher).
- Add bookmarks via the web UI or CLI:
# CLI usage
shiori add https://example.com --title 'Example Site' --tags 'reference,docs'
shiori search 'kubernetes deployment'
Example
Using Shiori's REST API to manage bookmarks programmatically:
# Login and get session token
TOKEN=$(curl -s -X POST http://localhost:8080/api/login \
-d '{"username":"shiori","password":"gopher"}' | jq -r '.session')
# Add a bookmark
curl -X POST http://localhost:8080/api/bookmarks \
-H "Authorization: Bearer $TOKEN" \
-d '{
"url": "https://docs.anthropic.com",
"title": "Anthropic Docs",
"tags": [{"name": "ai"}, {"name": "docs"}]
}'
# Search bookmarks
curl http://localhost:8080/api/bookmarks?keyword=ai \
-H "Authorization: Bearer $TOKEN"
Related on TokRepo
- Self-hosted tools -- Self-hosted applications for personal productivity
- AI tools for knowledge graph -- Knowledge management and organization tools
Common pitfalls
- Not changing the default password. The default credentials (shiori/gopher) are well-known. Change them immediately after first login.
- Running without persistent storage. Without mounting a volume to /shiori, all bookmarks are lost when the container restarts.
- Expecting browser extension quality. Shiori has a basic bookmarklet but no polished browser extension. Adding bookmarks via the web UI or API is more reliable.
Frequently Asked Questions
Yes. Export your bookmarks as an HTML file from Chrome, Firefox, or any browser, then import them into Shiori via the web UI or CLI. Shiori parses the standard bookmark HTML format.
Yes. When you add a bookmark, Shiori optionally downloads and caches the full page content. This means you can read the page even if the original URL goes offline. Archived content is searchable via full-text search.
Shiori uses SQLite by default, which requires no setup. For larger installations or multi-user setups, it supports PostgreSQL and MySQL as alternative backends.
Yes. Shiori supports multiple user accounts. Each user has their own bookmark collection. An admin account can manage users and permissions.
There is no official mobile app, but the web interface is responsive and works on mobile browsers. The REST API enables third-party clients and integrations.
Citations (3)
- Shiori GitHub— Shiori is a lightweight self-hosted bookmark manager written in Go
- Shiori Documentation— Full-text search and page archiving for bookmarks
- SQLite Documentation— SQLite as embedded database for lightweight applications
Related on TokRepo
Discussion
Related Assets
Hubble — Network Observability for Kubernetes via eBPF
A CNCF observability tool built on Cilium that provides deep visibility into network traffic, service dependencies, and security policies in Kubernetes clusters.
CMake — Cross-Platform Build System Generator
An industry-standard tool that generates native build scripts for any platform from a single set of configuration files.
Conan — Open-Source C/C++ Package Manager
A decentralized package manager for C and C++ that handles dependency resolution, binary management, and cross-platform builds.