How search works
Full-text search (all plans)
Full-text search scans the title, description, and URL of every bookmark in your library. It is fast, always available, and works on every plan.- Exact and partial matches — results include bookmarks where your query terms appear as whole words or as stemmed variants. Searching
typescriptwill also surfaceTypeScriptand related forms. - Fuzzy fallback — if there are no exact matches, Bkmark automatically falls back to fuzzy matching so you still get relevant results even with typos or alternate spellings.
- Fast — results appear in milliseconds regardless of how large your library is.
AI semantic search (Pro & Team)
AI semantic search requires a Pro or Team plan. On the Free plan, you get full-text search only.
"how to speed up database queries" with semantic search can surface bookmarks about query optimization, indexing strategies, and caching — even if those pages never use the phrase “speed up.”
Exact search vs. semantic search — what’s the difference?
| Full-text (all plans) | Semantic search (Pro/Team) | |
|---|---|---|
| How it works | Matches words and their stems | Matches meaning and concepts |
| Best for | Known terms, titles, URLs | Vague recollections, concepts, natural language |
| Typo tolerance | Yes (fuzzy fallback) | Yes (intent is preserved) |
| Speed | Very fast (milliseconds) | Fast (AI-assisted) |
| Requires | Free plan or above | Pro or Team plan |
Using search
Search from the app
Click the Search bar at the top of the sidebar (or press/ from anywhere in the app) and start typing. Results update live as you type.
Search filters
Narrow your results using the filter controls next to the search bar:| Filter | Description |
|---|---|
| Group | Show only results inside a specific group |
| Tag | Show only results with a specific tag |
| Type | Limit results to link, note, code, or image |
"authentication" filtered to the Engineering group and the security tag.
Using the search API
You can query your library programmatically using the search endpoint.| Parameter | Type | Default | Description |
|---|---|---|---|
q | string | Required | Your search query |
cursor | string | — | Pagination cursor from a previous response |
limit | number | 20 | Results per page (1–100) |
groupId | string | — | Filter by group UUID |
tagId | string | — | Filter by tag UUID |
Paginating results
Search uses cursor-based pagination. When a response includes anextCursor value, pass it as the cursor parameter in your next request to fetch the following page. When nextCursor is null, you’ve reached the last page.
Tips for effective searching
Search by concept, not just title
On Pro or Team, try natural-language queries like
"articles about building design systems in React" instead of guessing the exact title you used when saving.Combine search with filters
Pair a short query with a group or tag filter to dramatically narrow results — especially useful when you have a large library with overlapping topics.
Use a few specific words
On full-text search, two or three specific words from the title or description work better than long sentences. Try
"react server components" instead of "how to use react server components in next".Try the URL or domain
Remember the site but not the article? Search for the domain name (e.g.,
"vercel.com" or "css-tricks") to surface all bookmarks from that source.