Find any screenshot by the text in it — or by what it looks like.
Press Win+Alt+S, type a few letters you remember seeing, and it's there.
You took a screenshot of that error message, that network diagram, that receipt. You remember what was in it, not what it was called or when. Glimpse reads every image in your folders, so you can just type what you remember: "moca", "invoice 2024", "in:notes network". Or describe it — "network diagram", "dark dashboard" — and it finds images that look like that, even with no matching words.
- Text in images: every screenshot, photo and diagram is read with the OCR built into Windows; any 3-letter fragment matches, and the matched words are outlined on the preview
- Search by look: a CLIP model running on your GPU (or CPU) understands what images show; Ctrl+M finds images similar to the selected one
- Search by meaning: EmbeddingGemma 2 reads the text for what it means, in 100+ languages: "invoice" also finds "factura", "to-do list" finds a checklist that never says so
- Grab what you found: Ctrl+C copies the image, Ctrl+Shift+T copies its text
- Always ready: lives in the tray, indexes new screenshots as they land, and plugs into PowerToys Command Palette
- Private: nothing is uploaded, no account, no telemetry
By the numbers
Measured on a laptop (Core i9-10980HK, RTX 2080 Super Max-Q) with 10,038 images indexed (screenshots, notes attachments, Downloads):
| Text search | 1.8 ms median |
| Search by look (visual) | 21 ms median — most of it is encoding your query with CLIP |
| Text + visual together (the default) | 27 ms median |
| Text + visual + meaning | 54 ms median (with the search-by-meaning model installed) |
| "More like this" | 1.9 ms median, across ~10k images |
| Reading text from images | ~64 images/s (9,284 in 2 min 25 s, 8 workers) |
| Visual indexing | ~95 images/s on the GPU (9,246 in 1 min 37 s) |
| Index size | ~10 KB per image (99 MB for 10k images, text + word boxes + visual vectors) |
| Memory | ~250 MB in the tray with visual search loaded |
| Download | 92 MB, nothing else to install |
Search times are for the engine on a warm index; run glimpse-cli bench to measure your own machine.
Try it
Download Glimpse-<version>-win-x64.zip from Releases, extract it, and double-click
Install.cmd. Test builds aren't code-signed yet, so Windows may say "Windows protected your PC":
click More info → Run anyway. A short welcome screen lets you pick folders and (optionally) download
the visual search and search-by-meaning models; then press Win+Alt+S.
- Installs for your user only (
%LOCALAPPDATA%\Programs\Glimpse), no admin, no .NET install needed - Windows 10 1809+ / Windows 11, x64; a DirectX 12 GPU speeds up visual search but isn't required
- Uninstall from Settings → Apps → Installed apps (you choose whether to keep the index)
- Nothing leaves your PC; the only network access is the optional model downloads
- Optional:
Glimpse-CmdPal-<version>-win-x64.zipadds Glimpse to PowerToys Command Palette (needs Developer Mode)
How it works
OCR is the engine built into Windows (Windows.Media.Ocr). The index is SQLite: an FTS5 table with the
trigram tokenizer (so any 3+ character fragment matches anywhere in a word), CLIP ViT-B/16 image
embeddings and EmbeddingGemma 2 text embeddings, compared in memory with SIMD. Results merge exact text hits
first, then loose text, meaning and visual matches interleaved (reciprocal rank fusion). Inspired by gyotaku for Linux.
src/Glimpse.Core OCR, SQLite index, incremental indexer, folder watcher
src/Glimpse.Cli `glimpse-cli` command: index / embed / model [meaning] / search / ocr / stats / sources
src/Glimpse.App WinUI 3 search window (unpackaged, Mica, global hotkey, tray, pipe server)
src/Glimpse.CmdPal PowerToys Command Palette extension (MSIX, talks to the app over a named pipe)
Install from source
pwsh scripts/install.ps1 # Release build → %LOCALAPPDATA%\Programs\Glimpse, start with Windows, launch in tray pwsh scripts/install.ps1 -NoAutoStart # same, without the login entry
Re-run to update. Glimpse lives in the tray: left-click toggles the window, right-click for Re-index now / Settings / Quit. The X button hides to the tray. Launching it again just brings up the running copy. Windows 11 puts new tray icons in the ^ overflow; drag it onto the taskbar to keep it visible.
Develop
dotnet build src/Glimpse.App src/Glimpse.App/bin/x64/Debug/net9.0-windows10.0.19041.0/win-x64/Glimpse.exe # window src/Glimpse.App/bin/x64/Debug/net9.0-windows10.0.19041.0/win-x64/Glimpse.exe --hidden # background, hotkey only dotnet run --project src/Glimpse.Cli -- index # all sources dotnet run --project src/Glimpse.Cli -- search moca
The app indexes on startup (only new/changed files) and then watches the folders.
Visual search
Besides OCR text, every image is embedded with CLIP ViT-B/16 (ONNX, run on the GPU through DirectML, CPU fallback), so you can search by what an image looks like: "network diagram", "bar chart", "dark dashboard". About 1.5 minutes for 9k images on an RTX 2080.
Results are hybrid: exact text hits (a one-word query, or the words together as typed) come first, then
loose text hits and visual matches interleaved (reciprocal rank fusion). Visual matches carry a
"≈ looks like" badge. Visual toggle (Ctrl+T) or a ~ prefix = visual only. Ctrl+M = more like the
selected image.
The model is a one-time ~392 MB download (Settings → Visual search → Download, or glimpse-cli model)
into %LOCALAPPDATA%\Glimpse\models\clip-vit-b16, with resumable, size-checked files. Without it, visual
search is simply off. The app embeds new images after each OCR pass; from the CLI run glimpse-cli embed.
Search by meaning
OCR text matches what you typed; search by meaning matches what you meant. Every image with text is also embedded with Google's EmbeddingGemma 2 (text part, int8, ONNX, on the CPU), so a Spanish query finds an English screenshot ("contraseña del wifi" → a Wi-Fi password note: 26th without meaning, 1st with it), and a description finds text that never uses its words ("to-do list" → a task list whose text doesn't contain those words: 43rd → 2nd). Matches found this way, without your words, carry a "≈ related text" badge, and exact text hits still come first.
On 27 test queries against a 10,079-image library (6,600 with text), the right image landed first for 9 queries with meaning on versus 5 without, and in the top five for 17 versus 12. Searching with all three (text, look, meaning) takes ~54 ms; indexing reads ~200 images a minute (6,600 in about half an hour, once, in the background).
The model is a one-time ~330 MB download (Settings → Search by meaning → Download, or
glimpse-cli model meaning) into %LOCALAPPDATA%\Glimpse\models\embeddinggemma-2-text, pinned to an exact
revision of the ONNX export. Glimpse switches its matrix multiplies to int8 compute on first load (the
export leaves them in float32 mode, which is ~10× slower per query with the same results).
Command Palette
src/Glimpse.CmdPal is a PowerToys Command Palette
extension: type Glimpse in the palette (Win+Alt+Space) for a live thumbnail grid with a details pane.
Enter opens, Ctrl+Enter copies the image, Ctrl+Shift+T copies its text, Ctrl+K for copy path / show in folder / more like this /
open in Glimpse. A filter dropdown switches to visual only. Typing 3+ characters on the palette's home
also offers Search images for "…" under Fallbacks.
pwsh scripts/install-cmdpal.ps1 # build + register (needs Developer Mode, no signing) pwsh scripts/install-cmdpal.ps1 -Uninstall
Tip: give it an alias in Command Palette → Settings → Extensions → Glimpse (e.g. ss), then
ss moca jumps straight to results. (Every command has a stable id, so aliases and pins survive updates.)
How it fits together: the extension is an MSIX-packaged COM server (that's how the palette loads
extensions). It doesn't open the index itself; it asks the running Glimpse app over a per-user named
pipe (Glimpse.Core/Ipc/GlimpseIpc.cs, compiled into both). The app answers from its warm search engine
and includes 256px thumbnails as bytes, because packaged apps get a virtualized view of AppData and
can't read the thumbnail cache by path.
Search syntax
| Query | Meaning |
|---|---|
moca network |
both fragments appear (text or file name), plus visual matches |
~network diagram |
visual only (same as the Visual toggle) |
like:1234 |
images that look like image 1234 (Ctrl+M) |
"network map" |
exact phrase |
in:notes |
source name prefix (in:screen = both screenshot folders) |
after:2026-05 |
modified on/after (also 2026 or 2026-05-14) |
before:2026-06-15 |
modified before |
Keys
Win+Alt+S toggle · Enter open · Ctrl+C copy image · Ctrl+Shift+T copy text · Ctrl+Shift+C copy path · Ctrl+E show in folder · Ctrl+T visual only · Ctrl+M more like this · Ctrl+, settings · Esc clear / hide · Ctrl+Q quit
Settings
Tray → Settings, the gear in the search bar, or Ctrl+,. Changes apply immediately, no restart:
- Keyboard shortcut: modifiers + key, checked live against what Windows and other apps already use
- Start with Windows
- Folders: add (folder picker), remove, rename (the name is what
in:matches), include subfolders. Removing or renaming a folder takes its images out of the index; files are never touched - Visual search: on/off, model download / remove with progress, GPU on/off
- Search by meaning: on/off, model download / remove with progress
- Indexing: OneDrive online-only files, parallel workers, index stats, Re-index now, Rebuild, thumbnail cache size + Clear
- About: version, data folder, log
First run defaults to the Windows Screenshots and Downloads known folders (following OneDrive backup
or relocation). Everything is stored in %LOCALAPPDATA%\Glimpse (config.json, index.db, models\,
thumbs\, glimpse.log).
Releasing
pwsh packaging/build-release.ps1 -Version 0.5.0 # local: artifacts\*.zip + SHA256SUMS.txt git tag v0.5.0; git push origin v0.5.0 # CI: builds the same zips and publishes a GitHub release
Tags with a suffix (v0.6.0-beta.1) publish as pre-releases. Actions → Release → Run workflow builds the
zips as an artifact without publishing. Release notes start from packaging/release-notes.md.
License
MIT, see LICENSE. Bundled components and their licenses: THIRD-PARTY-NOTICES.md.
Roadmap
- Visual search (CLIP embeddings via ONNX) — "network diagram", "dark dashboard"
- Tray icon + start with Windows
- Command Palette extension (
ss moca) - Settings page (folders, hotkey, visual model download, indexing)
- Copy text (Ctrl+Shift+T, also in Command Palette)
- GitHub releases: self-contained zip, per-user installer/uninstaller
- Code signing (SmartScreen), signed MSIX for the Command Palette extension, auto-update
- First-run welcome: pick folders, offer the visual and meaning models, show the shortcut
- Search by meaning (EmbeddingGemma 2 text embeddings, int8 on the CPU)
- EmbeddingGemma 2 image embeddings (better than CLIP in tests, but ~7 s/image on the CPU; needs a GPU path)
- Clipboard-only snips (Win+Shift+S without auto-save)
- OCR + embed several GIF frames, not just the first

