Skip to content

Latest commit

 

History

1,199 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Snapzy banner

Snapzy

Native macOS screenshots, recording, annotation, and editing from the menu bar.

duongductrong%2FSnapzy | Trendshift

Built with SwiftUI, AppKit, ScreenCaptureKit, Vision, and Sparkle.

🇺🇸 English🇻🇳 Tiếng Việt🇨🇳 简体中文🇯🇵 日本語

FeaturesInstallRaycastShortcutsDevelopmentDocumentationCommunitySecurityContributingContributorsAcknowledgments

GitHub Stars GitHub Forks GitHub Downloads

Ask DeepWiki Join Discord Community Raycast Extension Featured On

GitHub Sponsors Ko-fi Donate

Features

  • Screenshot: fullscreen or selected-area capture with manual/application window mode toggle (Application Capture, default A), including already open third-party menu-bar popovers that would normally close when capture begins (restored visually for selection and saved with transparent rounded corners), area capture with inline annotate (annotate before saving), scrolling capture with live stitched preview, OCR text extraction with Apple Vision or custom OpenAI-compatible endpoints and a native result notification, transparent object cutout capture with optional safe auto-crop, window shadow capture (macOS 14+), multi-format export (PNG/JPG/WebP), hide desktop icons/widgets, quick screenshot during recording
  • Screen Recording: video or GIF output, system audio + microphone, mouse click highlights, keystroke overlays, live on-screen annotations, remember last area, GIF resizing, Smart Camera metadata for Follow Mouse edits
  • Annotation Editor: shapes, arrows, text, watermarks, filled rectangles, blur/pixelate, automatic local sensitive-data redaction, OCR text extraction from the image context menu, counters, highlighter with text snapping (⌘ to bypass), crop with edge-snapping (⌘ to bypass) and one-key auto-crop to content (A), remove background with crop-aware auto-crop support, mockup backgrounds with 3D renderer, zoom/pan (pinch + keyboard), drag-to-app with optional keep-editing and editor reactivation behavior, configurable tool/action shortcuts
  • After Capture Settings: per-mode action matrix for save, Quick Access, clipboard copy, and annotate plus a separate global remove-background auto-crop toggle (enabled by default)
  • Video Editor: trim with visual timeline + frame strip, zoom segments with auto-focus (Follow Mouse), wallpaper backgrounds + padding, custom export dimensions, animated GIF viewer, undo/redo
  • Quick Access: floating panel after every capture with copy, edit, drag-to-app, two-finger swipe dismiss, open, and delete actions, plus configurable keyboard shortcuts that fire on the card you are hovering
  • Capture History: floating history panel + full browser for recent screenshots, videos, and GIFs with type/time filters, filename search, quick copy/open/delete actions, one-click reopen in Annotate or Video Editor, editable annotation restore for committed screenshot edits, configurable panel layout, and retention policies
  • Shortcuts: fully configurable global shortcuts for capture, recording, and annotation tools, with per-shortcut on/off control and system conflict detection
  • Onboarding: splash screen, first-run language selection, guided permissions setup, and shortcut configuration for first-time users
  • Localization: 🇺🇸 English, 🇻🇳 Vietnamese, 🇨🇳 Simplified Chinese, 🇹🇼 Traditional Chinese, 🇪🇸 Spanish, 🇯🇵 Japanese, 🇰🇷 Korean, 🇷🇺 Russian, 🇫🇷 French, and 🇩🇪 German app localization with native macOS per-app language support
  • Cloud Upload: privacy-first bring-your-own-storage via AWS S3 or Cloudflare R2 — no third-party servers, manual upload from Quick Access for screenshots, videos, and GIFs, or from Annotate for screenshots, credentials stored in the macOS Keychain with optional password protection, manual encrypted credential import/export for faster setup on another Mac, upload history, configurable auto-expiration (1–90 days or permanent), lifecycle rules, custom domain support
  • Advanced Settings: TOML export/import, one-time config folder grant, debounced background sync, safe sync-before-open, and launch-time auto-apply for portable preferences, dotfiles, backup, and machine-to-machine setup via ~/.config/snapzy/config.toml
  • Updates & Diagnostics: in-app updates via Sparkle, problem reporting with diagnostic log bundles, cache management
  • Platform: menu-bar app, appearance theming (light/dark/system), Developer ID signed and notarized with the Hardened Runtime enabled, security-scoped bookmarks for user-selected folders

Install

Requires macOS 13.0 or later.

Homebrew

brew install --cask snapzy

Shell script

# Install a specific version
curl -fsSL https://raw.githubusercontent.com/duongductrong/Snapzy/v1.31.0/install.sh | bash

Download a release

  1. Go to Releases
  2. Download the latest packaged app asset, typically Snapzy-v<version>.dmg
  3. Move Snapzy.app to /Applications
  4. Launch Snapzy
  5. Grant Screen Recording permission when prompted in System Settings
  6. Re-launch Snapzy after granting Screen Recording if macOS asks for it
  7. Grant Microphone permission too if you want voice input in recordings

Snapzy is signed and notarized by Apple. macOS will open it without any extra steps.

Uninstall

To completely remove Snapzy, reset all permissions, and clean up app data:

curl -fsSL https://raw.githubusercontent.com/duongductrong/Snapzy/master/uninstall.sh | bash

Or if you cloned the repo:

./uninstall.sh

This will remove the app from /Applications, delete preferences and caches, and reset TCC permissions (Screen Recording, Microphone, Accessibility). You may need to log out or reboot for permission changes to fully take effect.

Reset Permissions

If you only want to reset TCC permissions (Screen Recording, Microphone, Accessibility) without uninstalling the app:

curl -fsSL https://raw.githubusercontent.com/duongductrong/Snapzy/master/reset-permissions.sh | bash

Or if you cloned the repo:

./reset-permissions.sh

Raycast

Control Snapzy directly from Raycast using the official extension:

Shortcuts

Action Shortcut
Fullscreen screenshot ⇧⌘3
Area screenshot ⇧⌘4
↳ Toggle manual/app window mode (Application Capture) A
Repeat last area screenshot ⌃⌘⇧4
Area screenshot + inline annotate ⇧⌘7
Scrolling screenshot ⇧⌘6
Screen recording (start/stop toggle) ⇧⌘5
Pause/Resume recording (optional, recommended ⌘⇧Space) unset
OCR text capture ⇧⌘2
Object cutout capture ⇧⌘1
Smart element capture ⌥⇧4
Open Annotate ⇧⌘A
Open Video Editor ⇧⌘E
Open Cloud Uploads ⇧⌘L
Show shortcuts list ⇧⌘K

Quick Access card actions

Hover a Quick Access card, then press the key. Active only while the pointer is over a card.

Action Shortcut
Copy ⌘C
Save / Open ⌘S
Edit ⌘E
Upload to cloud ⌘U
Pin to screen ⌘P
Delete ⌘⌫
Close ⌘W

Automation

Snapzy registers the snapzy:// URL scheme so launchers and automation tools (such as the Raycast Extension, Alfred, or custom scripts) can trigger capture actions. This integration can be toggled on or off under Settings -> Advanced -> URL Scheme integration.

Action URL
Fullscreen screenshot snapzy://capture/fullscreen
Area screenshot snapzy://capture/area
Repeat area screenshot snapzy://capture/repeat-area
Application window snapzy://capture/application
Active window snapzy://capture/active-window
Area annotate snapzy://capture/area-annotate
Scrolling screenshot snapzy://capture/scrolling
OCR text capture snapzy://capture/ocr
Smart element capture snapzy://capture/smart-element
Object cutout capture snapzy://capture/object-cutout
Screen recording snapzy://record/screen
Application recording snapzy://record/application
Open Annotate snapzy://open/annotate
Combine images snapzy://open/combine
Open Video Editor snapzy://open/video-editor
Open Cloud Uploads snapzy://open/cloud-uploads
Open Capture History snapzy://open/history
Show shortcuts list snapzy://show/shortcuts
Open Settings snapzy://settings
Open Settings tab snapzy://settings?tab=annotate

snapzy://open/combine opens the image picker. Automation tools can skip the picker by passing two or more URL-encoded local paths as repeated file parameters:

open 'snapzy://open/combine?file=/tmp/first.png&file=/tmp/second.png'

Development

For local setup, source builds, and first-time development workflow, start with docs/DEVELOPMENT.md.

If you need archive, export, or DMG packaging commands, see docs/BUILD.md. If you want the contribution workflow, see CONTRIBUTING.md.

Documentation

Community

Featured On

Snapzy - Think CleanShot X, but open-source and developer-friendly | Product Hunt Snapzy trên Unikorn.vn

Benchmark

OCR

Benchmark date: April 19, 2026. Current OCR numbers come from scripts/run-ocr-readme-benchmark.sh on a clean synthetic wrapped UI/article-text corpus with 12 samples / language across 10 supported languages. Character accuracy is the primary signal, exact match is intentionally strict, and no-output on this corpus is 0% for all languages below.

Language Character Accuracy Exact Match
English 100.0% 100.0%
Vietnamese 100.0% 100.0%
Simplified Chinese 99.3% 75.0%
Traditional Chinese 99.0% 66.7%
Spanish 99.9% 91.7%
Japanese 99.4% 66.7%
Korean 99.7% 83.3%
Russian 100.0% 100.0%
French 99.3% 33.3%
German 99.8% 75.0%

Real-world screenshots can score lower, especially with emoji, low-contrast footers, unusual punctuation, gradients, blur, or decorative fonts.

Security

Snapzy is not sandboxed — it runs with your user account's privileges. It ships with the macOS Hardened Runtime enabled, is Developer ID signed and notarized by Apple, and declares a minimal set of entitlements; library validation stays on, so the app can only load code signed by Snapzy or by Apple. Network requests are limited to Sparkle update checks, local loopback OAuth callback redirection, user-initiated cloud uploads to your own cloud storage (AWS S3, Cloudflare R2, or Google Drive), and optional user-initiated OCR model downloads from HTTPS/Hugging Face sources the user explicitly defines. Snapzy bundles no OCR models and its model catalog ships empty, so no model is referenced or fetched unless you add one. Model manifests are validated locally and importing metadata performs no download. The default built-in OCR engine runs entirely on-device; if you explicitly add a custom OCR endpoint in Settings, OCR requests (including the captured image) go to that endpoint. Cloud credentials and OAuth tokens are stored exclusively in the macOS Keychain, can be further protected with an optional password (SHA-256 hashed, never stored in plaintext), and can only be transferred via a manual encrypted export/import flow protected by a user-supplied archive passphrase. Custom OCR endpoint API keys are likewise stored only in the macOS Keychain and are never included in config or credential exports. Snapzy collects no telemetry.

To report a vulnerability, please use a GitHub Security Advisory or contact the maintainer privately. See SECURITY.md for full details.

Contributing

Contributions are welcome. Read CONTRIBUTING.md before opening a pull request.

Contributors

Thanks to all the people who contribute to Snapzy!

Star History

Star History Chart

Acknowledgments

Snapzy is inspired by CleanShot X, an advanced screenshot and screen recording application for macOS.

License

BSD 3-Clause License. See LICENSE.

About

An open-source native macOS screenshot and screen recording app. A CleanShot X alternative.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2.8k stars

Watchers

6 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages