PeekOCR is a native macOS menu bar app for fast OCR, QR detection, screenshots, live annotation capture, GIF clip recording, and MP4/GIF export.
- macOS 13.0 or later
- Apple Silicon Mac (
arm64, M1 and newer) - Xcode with command line tools
- Screen Recording permission for capture
- Accessibility permission for global hotkeys
- OCR region capture with clipboard output.
- QR content detection and copy.
- Screenshot capture with configurable format, quality, scale, and save location.
- Live annotated screenshot flow with region adjustment, arrows, text, highlights, move/resize, and undo before export.
- GIF clip recording up to 10 seconds, with trim preview and GIF/MP4 export.
- Guided permission setup through the menu bar reminder, settings rows, and missing-permissions window.
- Optional capture sound for successful screenshot/frame saves.
- Recent capture history from the menu bar.
git clone <repo-url>
cd PeekOCR
make tools
make ci-checkOpen PeekOCR.xcodeproj in Xcode and run the PeekOCR scheme.
make format
make lint
make buildmake formatformats changed Swift files with Xcode's bundledswift-format.make lintchecks changed Swift files without editing them.make ci-checkrunslint + Debug build.make release-checkrunslint + Release build + size check.make format-allandmake lint-allare explicit full-repo passes; use them only for a planned formatting migration.
Optional hooks:
make hooks-install| Action | Shortcut |
|---|---|
| OCR capture | ⇧ Space |
| Screenshot | ⌘⇧4 |
| Annotated screenshot | ⌘⇧5 |
| GIF clip | ⌘⇧6 |
All shortcuts can be changed in Settings.
PeekOCR does not trigger permission prompts automatically at launch. If Screen Recording or Accessibility is missing, the app surfaces explicit activation UI from settings, the menu bar reminder, or a blocked capture attempt.
Screen Recording may lag after being enabled in System Settings depending on macOS behavior. Reopen the app or retry the capture flow if macOS has not refreshed the permission yet.
Release builds target Apple Silicon only. Measure a built app with:
make release
make size-checkThe current Release bundle is expected to contain only:
Contents/MacOS/PeekOCRContents/Resources/Assets.carContents/Resources/capture-shutter.m4aContents/Resources/ATTRIBUTIONS.md- standard bundle metadata and code signature files
Tracked and expected to be public:
- Source code, app assets required at runtime, resources, entitlements, Xcode project metadata, Makefile, formatting config, hook config, README, changelog, contributing notes, security notes, and license.
Ignored and intentionally private/local:
AGENTS.md,CLAUDE.md,docs/,.codex/, Xcode user data, build products, logs, crash reports, credentials,.env*, screenshots, recordings, DMGs, archives, and local signing files.
Before opening a PR, run:
make ci-check
git diff --checkThe PeekOCR scheme currently has no configured test action. Use
make ci-check as the current local gate.
See CONTRIBUTING.md.
See SECURITY.md.
MIT