Skip to main content

Searching Bookmarks

Stashmark's search bar does much more than keyword matching. It understands a lightweight query language — a search DSL — that lets you combine filters, boolean logic, and text search to find exactly what you need in seconds.

The search bar sits at the top of your bookmarks list. Click it or press / from anywhere in the app to jump straight to it.

The search bar with keyboard shortcut hint

As you type, an autocomplete dropdown suggests available operators and values. When the search bar is empty and focused, it shows all available operators:

Autocomplete dropdown showing all available search operators

Click the ? icon on the right side of the search bar to open the syntax help popover — a quick-reference cheat sheet for every operator:

Search syntax help popover showing all operators grouped by category

Quick start examples

Before diving into each operator, here are some common searches to give you a feel for the DSL:

QueryWhat it finds
rust programmingBookmarks matching "rust" AND "programming" (full-text)
"async programming"Bookmarks containing the exact phrase "async programming"
tag:rustAll bookmarks tagged "rust" (including subtags like rust/async)
is:favorite saved:1wFavorites saved in the last week
type:video has:transcriptVideos that have a transcript
domain:vercel.com -tag:archivedVercel bookmarks, excluding those tagged "archived"
(tag:rust OR tag:go) is:favoriteFavorites tagged either "rust" or "go"

Just type words into the search bar. Stashmark uses PostgreSQL full-text search to match against bookmark titles, descriptions, URLs, and even video transcripts.

rust async

Each word is matched independently — rust async finds bookmarks containing both "rust" and "async" anywhere in their searchable text.

Exact phrases

Wrap text in double quotes to search for an exact phrase:

"machine learning"

This matches the literal string "machine learning" rather than bookmarks that happen to contain both words separately.

Search results for a text query

Filter operators

Filters use the syntax operator:value. The autocomplete dropdown helps you discover operators and valid values as you type.

tag: — Filter by tag

The tag: operator (or the # shorthand) matches bookmarks by their tags. It supports hierarchical tags — if you use nested tags like programming/rust, searching for the parent automatically includes all children.

SyntaxBehavior
tag:rust or #rustMatches "rust" and all subtags (e.g. rust/async, rust/wasm)
tag=rustExact match only — matches "rust" but not rust/async
tag:*/pythonWildcard — matches "python" as a subtag under any parent (e.g. programming/python, ml/python)
tag:programming/pythonMatches programming/python and its descendants
#dev/rustShorthand with hierarchy — same as tag:dev/rust

When you type tag:, the autocomplete shows your existing tags sorted alphabetically:

Tag autocomplete showing available tags

Combining tag filters:

  • tag:rust tag:database — bookmarks with both tags
  • tag:rust OR tag:go — bookmarks with either tag
  • -tag:archivedexclude a tag
Search results filtered by tag:rust

folder: — Filter by collection

Match bookmarks in a specific collection (folder). Uses substring matching, so folder:Work matches "Work", "Work/Projects", etc.

folder:Learning
folder:"Side Projects"

Use quotes for collection names with spaces.

status: — Filter by reading status

Every bookmark has a reading status: inbox, later, or archive.

status:inbox        # Unprocessed bookmarks
status:later # Saved for later reading
status:archive # Archived / done

type: — Filter by content type

Stashmark automatically detects content types when you save a bookmark.

ValueDescription
type:articleLong-form articles with reader view
type:videoYouTube, Vimeo, and other video content
type:audioPodcasts and audio content
type:imageImage-heavy pages
type:documentPDFs and documents
type:linkGeneral links (default)
Search results filtered to show only videos

is: — Boolean property shortcuts

The is: operator checks boolean properties or acts as a shortcut for content types.

SyntaxMatches
is:favorite or is:favFavorited bookmarks
is:unreadBookmarks with inbox status
is:readingBookmarks you've started reading (have progress > 0)
is:articleShortcut for type:article
is:videoShortcut for type:video
is:audioShortcut for type:audio
is:imageShortcut for type:image
is:document, is:doc, is:pdfShortcut for type:document
Search results showing favorite bookmarks

has: — Existence checks

Check whether a bookmark has specific associated content.

SyntaxMatches
has:notesBookmarks with personal notes attached
has:tagsBookmarks that have at least one tag
has:screenshotBookmarks with a preserved screenshot
has:pdfBookmarks with a preserved PDF
has:readerBookmarks with reader view content
has:transcriptVideos with an extracted transcript
Search results filtered to bookmarks with notes

domain: — Filter by URL domain

Match bookmarks from a specific domain. Supports partial matching and subdomains.

domain:vercel.com       # All Vercel bookmarks
domain:vercel # Matches vercel.com, vercel.app, etc.
domain:blog.mozilla.org # Specific subdomain
Search results filtered by domain:vercel.com

site: — Filter by site name

Match by the display name of the site (from metadata), rather than the URL:

site:GitHub
site:"The Verge"

Search within just the title or your personal notes, rather than full-text across everything:

title:kubernetes        # Only matches in titles
note:important # Only matches in your notes
title:"getting started" # Exact phrase in title

Date filters with saved:

The saved: operator filters bookmarks by when they were saved. It supports keywords, relative dates, absolute dates, and date ranges.

Keywords

saved:today             # Saved today
saved:yesterday # Saved yesterday
saved:thisweek # Saved this week
saved:thismonth # Saved this month
saved:thisyear # Saved this year

Relative dates

Use a number and a duration suffix to find bookmarks saved within a recent time window:

SuffixMeaning
dDays
wWeeks
mMonths
yYears
saved:1d        # Saved in the last day
saved:1w # Saved in the last week
saved:3m # Saved in the last 3 months
saved:1y # Saved in the last year

You can also use > and < to compare the age of the bookmark:

saved:>1w       # Saved more than 1 week ago (older)
saved:<1w # Saved less than 1 week ago (recent)
Search results filtered by saved date

Absolute dates

Use exact YYYY-MM-DD dates with comparison operators:

saved:2024-06-15            # Saved on that exact date
saved:>2024-01-01 # Saved after January 1, 2024
saved:<2024-06-01 # Saved before June 1, 2024

Date ranges

Use .. to specify a range between two dates:

saved:2024-01-01..2024-06-01    # Saved between Jan 1 and Jun 1, 2024

Combining queries

Implicit AND

Multiple terms are combined with AND by default. Every condition must match:

tag:rust is:favorite saved:1w

This finds bookmarks that are tagged "rust" AND are favorited AND were saved in the last week.

OR

Use the OR keyword (must be uppercase) to match any of several conditions:

tag:rust OR tag:python
type:video OR type:audio
domain:vercel.com OR domain:netlify.com
Search results using OR to combine tag filters

Negation with -

Prefix any term with - to exclude it:

-tag:archived               # Exclude bookmarks tagged "archived"
-is:favorite # Exclude favorites
-type:link # Exclude generic links
-"deprecated" # Exclude bookmarks mentioning "deprecated"
-has:tags # Bookmarks without any tags
Search results using negation to exclude a tag

Parentheses for grouping

Use parentheses to control how OR and AND interact:

(tag:rust OR tag:python) is:favorite

Without parentheses, tag:rust OR tag:python is:favorite would be interpreted as: bookmarks tagged "rust" OR bookmarks that are tagged "python" AND favorited — which is probably not what you want.

More examples:

(type:video OR type:audio) saved:1w
(domain:vercel.com OR domain:netlify.com) tag:rust
(tag:react OR tag:vue) -tag:deprecated has:reader

Complex query examples

Here are some real-world queries that combine multiple operators:

"Favorite Rust or Go articles from this month"

(tag:rust OR tag:go) is:favorite type:article saved:thismonth

"Videos with transcripts"

type:video has:transcript

"Unread bookmarks from Vercel, excluding archived"

status:inbox domain:vercel.com -status:archive

"Articles about Kubernetes I saved recently and haven't read"

kubernetes type:article saved:2w status:inbox

"All programming subtags except Python"

tag:programming -tag=programming/python

"PDFs and documents saved last year"

is:document saved:2024-01-01..2025-01-01

Autocomplete

The search bar provides intelligent autocomplete as you type:

  • Empty search bar: Shows all available operators with descriptions
  • Partial operator (e.g., ta): Narrows to matching operators (tag:)
  • After operator (e.g., tag:): Shows valid values — your tags, folders, status options, etc.
  • # shorthand: Typing # immediately shows tag suggestions

Autocomplete suggestions are navigable with / arrow keys. Press Enter or Tab to select. Press Escape to dismiss.

Graceful degradation

The search DSL is designed to never fail. If you type an unrecognized operator like foo:bar, it's treated as plain text and matched via full-text search instead of throwing an error. This means you can always type freely without worrying about syntax — the worst that happens is a broader search than intended.


Keyboard shortcuts

ShortcutAction
/Focus the search bar from anywhere
Navigate autocomplete suggestions
Enter or TabSelect highlighted suggestion
EscapeDismiss autocomplete, then blur search bar

Operator reference

A complete reference of every search operator in one place.

OperatorExampleDescription
(text)rust asyncFull-text search across title, description, URL, transcript
"phrase""exact match"Exact phrase matching
tag:tag:rustTag + descendants
tag=tag=rustExact tag only (no descendants)
tag:*/tag:*/pythonSubtag wildcard (any parent)
##rustTag shorthand (same as tag:)
folder:folder:WorkFilter by collection
status:status:inboxReading status: inbox, later, archive
type:type:videoContent type: article, video, audio, image, document, link
is:is:favoriteBoolean: favorite/fav, unread, reading, or content type shortcuts
has:has:notesExistence: notes, tags, screenshot, pdf, reader, transcript
domain:domain:vercel.comURL domain filter
site:site:GitHubSite display name filter
title:title:kubernetesSearch within titles only
note:note:importantSearch within personal notes only
saved:saved:1wDate filter (keywords, relative, absolute, ranges)
--tag:oldNegate any operator or term
ORa OR bBoolean OR (must be uppercase)
( )(a OR b) cGroup expressions

Questions or ideas for new search operators? Drop us a line at hello@stashmark.app.