Supashot
Back to blog
May 25, 2026engineering, privacy, ocr

Building a Local-First Screenshot Library with OCR

How Supashot uses Apple's Vision framework to index every screenshot locally — no cloud, no accounts, no privacy trade-offs.

Building a Local-First Screenshot Library with OCR

Most screenshot tools that offer search do it by uploading your images to the cloud, running OCR on a server, and storing the text index remotely. That works, but it comes with privacy trade-offs.

Supashot takes a different approach: local-first OCR using Apple's Vision framework.

Why local-first matters

Your screenshots contain sensitive information:

  • API keys and tokens in terminal windows
  • Private messages and emails
  • Internal dashboards and analytics
  • Unreleased product designs

Uploading all of this to a cloud service for OCR indexing creates a security surface area you may not want.

How it works

When you capture a screenshot, Supashot:

  1. Saves the PNG to your local library.
  2. Runs OCR via the Apple Vision framework (on-device, no network).
  3. Stores the extracted text in a local SQLite index.
  4. Makes the text searchable instantly.

All of this happens in under a second. There is no network call. No external API. No data leaves your Mac.

The technical stack

  • ScreenCaptureKit for capture
  • Apple Vision (VNRecognizeTextRequest) for OCR
  • SQLite for the text index and metadata
  • Swift + SwiftUI for the native macOS experience

Performance

Apple Vision is surprisingly fast on modern Macs. A typical 1920x1080 screenshot is OCR'd in ~200-400ms on an M1 Mac. The SQLite index supports full-text search (FTS5) for near-instant querying across thousands of captures.

The privacy guarantee

Because everything is local:

  • We cannot see your screenshots.
  • We cannot see your search queries.
  • We cannot lose your data in a breach.
  • You do not need an account.

Your visual memory stays on your machine, where it belongs.