Create and edit freely
Add HTTP or HTTPS links, retrieve or enter details, and revise URLs or metadata later without losing the bookmark itself.
Capture the useful details of a page, keep them tidy, and return to them with context intact.
Add HTTP or HTTPS links, retrieve or enter details, and revise URLs or metadata later without losing the bookmark itself.
URLs are normalized, fragments are removed, short links such as bit.ly and t.co are expanded to their destinations before saving, and duplicate pages are kept out.
Keep a title, description, domain, cover, favicon, site name, author, publication date, tags, collection, notes, and timestamps.
See the title, description or note, website, visual details, labels, saved-copy status, and relevant actions right in the library.
Open a live link in your computer’s default browser, then let Shelf record that it was opened and when.
Generate a scannable QR code, copy the bookmark link, or copy the full saved details to your clipboard whenever you want to pass a bookmark along.
Star the links that matter most, or archive older ones without deleting them—then restore them whenever you need them.
Turn a bare URL into a useful record without making the library dependent on a constant connection.
Page details are fetched only when you ask, during add or refresh—not every time you open your library.
Collect titles, descriptions, images, favicons, authors, dates, site names, and common social-card details.
Review and adjust what Shelf found before it becomes part of your library.
Update a bookmark’s page details later while keeping its tags, collection, notes, and history.
Expand common short URLs such as bit.ly and t.co before the bookmark is stored, while following normal redirects and resolving relative cover and favicon links against the final address.
Requests have sensible timeout, redirect, and response-size limits, and make one brief retry when a site asks you to slow down.
Search your whole library with a search language that stays out of the way until you need it.
Search titles, descriptions, links, domains, tags, collections, authors, site names, notes, and saved-page text.
Fuzzy matching accepts small mistakes and partial character matches; title and tag matches naturally rise to the top.
Input is gently debounced, so filtering and sorting remain comfortable as your library gets large.
Adjacent terms work as an AND search by default, making precise searches feel natural.
Build more exact searches with Boolean operators, nesting, #tag terms, and exclusions such as rust -wasm—all without losing fuzzy matching.
Save a unique name with any valid search, then rerun it against your latest bookmark metadata and saved-page text whenever you need it—without storing stale result lists.
Use Command/Ctrl+K to jump into global search; newer searches safely replace slower prior results.
Use flexible labels and visual collections, then layer search and filters to reach exactly the right group.
Add any number of normalized, de-duplicated tags. Suggestions while editing help your vocabulary stay consistent.
Browse tags with active usage counts, then rename one everywhere with a searchable picker and automatic merging.
Create, rename, recolor, and delete one-collection-per-bookmark groups. Deleting a collection leaves its bookmarks safe.
Move the exact current search result—including its filters and scope—to another collection in one action.
Show only bookmarks that have a local page copy and searchable extracted text available.
Layer date-added ranges, searchable multi-select domains, saved-copy, favorite, never-opened, notes, and no-tags filters with search, tags, collections, archived links, or saved copies, then clear everything in one click.
Choose the way you browse, choose how you sort, and keep the library calm as it grows.
Browse newest first, oldest first, A–Z by title, by website, or by visits—with recent activity breaking visit-count ties.
When you search, relevance comes first while your selected sort gives similarly matched links a stable order.
Choose roomy visual cards or a denser horizontal list; Shelf remembers your preference for the next launch.
Only nearby rows are drawn as you scroll, keeping the interface quick even when you have thousands of bookmarks.
Covers and favicons load only as needed and fall back cleanly if a remote image goes away.
Clear guidance distinguishes an empty library from an empty search, with direct ways to add a bookmark or reset filters.
Save important pages for later reading and searching, while the original bookmark stays in control.
Save a page’s HTML when creating or editing a bookmark, or capture it later from the actions menu.
Captures run in the background so you can keep working; unfinished requests are remembered and resumed after interruption.
See whether a copy is saved, in progress, or refreshing. Refresh or remove a copy without removing the bookmark.
Open a saved page directly in Shelf in an isolated viewer designed for untrusted web content.
Export an individual saved page and search its cleaned visible text, even when its regular metadata lacks the words you need.
Copies live beside your library with page HTML, extracted text, and capture information; sensible size limits and coordinated operations keep them predictable.
A bookmark is more useful when it remembers why you saved it.
Write and edit your own free-form notes separately from the page details Shelf retrieves.
Notes can stand in as a card description, contribute to fuzzy search, and be isolated with a dedicated filter.
Your notes are included alongside metadata and organization when you use Shelf’s portable CSV format.
Local-first is a practical promise: readable data, a location you choose, and safeguards around the changes that matter.
Your active library is a standard SQLite database on your computer. Shelf does not require a hosted service or synchronization account.
Changes are committed in SQLite transactions before Shelf reports them complete, keeping the library durable and internally consistent.
The normalized SQLite database has a schema version and can be opened with common SQLite tools when you want to inspect, query, or back it up directly.
Use an absolute folder and a portable .sqlite3 filename instead of being limited to the default application-data location.
Relocating storage carries the SQLite library and its sibling saved-copy folder together; an existing target always requires confirmation.
Your library database remains distinct from the app’s storage, privacy, pending-work, and automation preferences, with validation around file choices.
Move in confidently, understand what happened, and leave with a portable copy whenever you want.
Choose Shelf or Raindrop.io before selecting a CSV, and see the expected format before anything is changed.
The complete file is checked before import. Review totals and row-level issues, then cancel cleanly or continue with valid rows only.
Common column names such as link, name, labels, folder, and starred are understood; a URL is the only required field.
Imports create needed collections, while Shelf’s own CSV round-trips metadata, organization, states, notes, timestamps, and visit activity.
Bring in titles, excerpts, covers, notes, tags, favorites, and creation dates without unnecessary remote fetching; unsupported extras are safely ignored.
Export the complete library or exactly the current filtered results, and see whether imports added, updated, or skipped each record.
Protect access to the running app when you need to, while staying honest about the boundary of that protection.
Keep Shelf open by default or require a password to use the running app.
Passwords are stored only as securely salted password hashes—never as readable plaintext.
Set an inactivity timeout from 1 minute to 24 hours, count common interaction as activity, or lock immediately from the toolbar.
Changing or removing an existing password requires the current password, and work from an old session cannot update a newer one.
Protected local API actions remain unavailable while Shelf is locked, while recovery and status actions stay available.
App lock protects access through Shelf; it does not encrypt your library, exports, preferences, or saved pages at rest.
Give trusted local tools a capable API without turning Shelf into a cloud service.
Enable the optional local API only when you need it. Choose its interface and port, see its status, and have it return on later launches.
If a new server address cannot start or be saved, Shelf attempts to restore the previously working setup.
Trusted tools can discover the service, check its availability and lock state, and read the library or individual bookmarks.
Create, replace, delete, flag, open, enrich, and batch-create bookmarks—up to 1,000 atomically—with clear metadata merge choices.
Automate saved copies, collections, privacy controls, storage moves, and CSV import/export through the same product rules as the desktop app.
Structured JSON errors and stable conventions make integration predictable. The API has no authentication or TLS, so use non-local access only on networks you trust.
Shelf is made for the three major desktop platforms, with a quiet interface that remains useful when you are offline.
Use Shelf across the major desktop systems, with native packages for Intel and ARM64 machines.
Use a consistent title bar with native minimize, maximize, close, dragging, and double-click maximize or restore behavior.
The window stays within the active screen’s usable area and adjusts for smaller displays and display-scale changes.
Layouts adapt to narrower windows; controls include useful labels and keyboard support, with reduced motion when your system asks for it.
Use your operating system’s file, folder, import, export, and URL-opening experiences rather than awkward custom replacements.
All interface assets ship locally. Organizing, reading saved copies, imports, exports, and local search work without internet access.