{"id":47233243,"url":"https://github.com/duongductrong/snapzy","last_synced_at":"2026-05-27T14:09:29.352Z","repository":{"id":343297490,"uuid":"1135203978","full_name":"duongductrong/Snapzy","owner":"duongductrong","description":"An open-source native macOS screenshot and screen recording app. A CleanShot X alternative.","archived":false,"fork":false,"pushed_at":"2026-04-02T18:41:04.000Z","size":13387,"stargazers_count":145,"open_issues_count":3,"forks_count":8,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-03T00:40:52.708Z","etag":null,"topics":["capture","cleanshot-alternative","recording-app","screenshot","screenshot-capture","swiftui"],"latest_commit_sha":null,"homepage":"https://snapzy.app","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/duongductrong.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"duongductrong","patreon":null,"open_collective":null,"ko_fi":"duongductrong","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":["https://www.paypal.me/duongductrong","https://me.momo.vn/duongductrong"]}},"created_at":"2026-01-15T19:29:33.000Z","updated_at":"2026-04-02T23:49:15.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/duongductrong/Snapzy","commit_stats":null,"previous_names":["duongductrong/snapzy"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/duongductrong/Snapzy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duongductrong%2FSnapzy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duongductrong%2FSnapzy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duongductrong%2FSnapzy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duongductrong%2FSnapzy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duongductrong","download_url":"https://codeload.github.com/duongductrong/Snapzy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duongductrong%2FSnapzy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31428645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T02:22:46.605Z","status":"ssl_error","status_checked_at":"2026-04-05T02:22:33.263Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["capture","cleanshot-alternative","recording-app","screenshot","screenshot-capture","swiftui"],"created_at":"2026-03-13T21:08:42.348Z","updated_at":"2026-05-27T14:09:29.340Z","avatar_url":"https://github.com/duongductrong.png","language":"Swift","funding_links":["https://github.com/sponsors/duongductrong","https://ko-fi.com/duongductrong","https://www.paypal.me/duongductrong","https://me.momo.vn/duongductrong"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"./banner.png\" width=\"200\" height=\"200\" alt=\"Snapzy banner\" /\u003e\n\n  \u003ch1\u003eSnapzy\u003c/h1\u003e\n  \u003cp\u003e\u003cstrong\u003eNative macOS screenshots, recording, annotation, and editing from the menu bar.\u003c/strong\u003e\u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://trendshift.io/repositories/24550\" target=\"_blank\"\u003e\u003cimg src=\"https://trendshift.io/api/badge/repositories/24550\" alt=\"duongductrong%2FSnapzy | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"/\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    Built with \u003ca href=\"https://developer.apple.com/xcode/swiftui/\"\u003eSwiftUI\u003c/a\u003e,\n    \u003ca href=\"https://developer.apple.com/documentation/appkit\"\u003eAppKit\u003c/a\u003e,\n    \u003ca href=\"https://developer.apple.com/documentation/screencapturekit\"\u003eScreenCaptureKit\u003c/a\u003e,\n    \u003ca href=\"https://developer.apple.com/documentation/vision\"\u003eVision\u003c/a\u003e, and\n    \u003ca href=\"https://sparkle-project.org/\"\u003eSparkle\u003c/a\u003e.\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"./README.md\"\u003e🇺🇸 English\u003c/a\u003e •\n    \u003ca href=\"./README.vi.md\"\u003e🇻🇳 Tiếng Việt\u003c/a\u003e •\n    \u003ca href=\"./README.zh-CN.md\"\u003e🇨🇳 简体中文\u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e •\n    \u003ca href=\"#install\"\u003eInstall\u003c/a\u003e •\n    \u003ca href=\"#shortcuts\"\u003eShortcuts\u003c/a\u003e •\n    \u003ca href=\"#development\"\u003eDevelopment\u003c/a\u003e •\n    \u003ca href=\"#documentation\"\u003eDocumentation\u003c/a\u003e •\n    \u003ca href=\"#community\"\u003eCommunity\u003c/a\u003e •\n    \u003ca href=\"#security\"\u003eSecurity\u003c/a\u003e •\n    \u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e •\n    \u003ca href=\"#contributors\"\u003eContributors\u003c/a\u003e •\n    \u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/duongductrong/Snapzy/stargazers\"\u003e\u003cimg alt=\"GitHub Stars\" src=\"https://img.shields.io/github/stars/duongductrong/Snapzy?style=flat\u0026amp;logo=github\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/duongductrong/Snapzy/network/members\"\u003e\u003cimg alt=\"GitHub Forks\" src=\"https://img.shields.io/github/forks/duongductrong/Snapzy?style=flat\u0026amp;logo=github\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/duongductrong/Snapzy/releases\"\u003e\u003cimg alt=\"GitHub Downloads\" src=\"https://img.shields.io/github/downloads/duongductrong/Snapzy/total?style=flat\u0026amp;logo=github\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://deepwiki.com/duongductrong/Snapzy\"\u003e\u003cimg alt=\"Ask DeepWiki\" src=\"https://deepwiki.com/badge.svg\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://discord.gg/xkWDAuJkZu\"\u003e\u003cimg alt=\"Join Discord Community\" src=\"https://img.shields.io/badge/Discord-Join%20Community-5865F2?style=flat\u0026amp;logo=discord\u0026amp;logoColor=white\" /\u003e\u003c/a\u003e\n    \u003ca href=\"#featured-on\"\u003e\u003cimg alt=\"Featured On\" src=\"https://img.shields.io/badge/Featured%20On-Product%20Hunt%20%2B%20Unikorn-111827?style=flat\u0026amp;logo=producthunt\u0026amp;logoColor=white\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/sponsors/duongductrong\"\u003e\u003cimg alt=\"GitHub Sponsors\" src=\"https://img.shields.io/badge/Sponsor-%E2%9D%A4-ff69b4?style=flat\u0026amp;logo=github\" /\u003e\u003c/a\u003e\n    \u003ca href=\"https://ko-fi.com/duongductrong\"\u003e\u003cimg alt=\"Ko-fi Donate\" src=\"https://img.shields.io/badge/Ko--fi-Donate-FF5E5B?style=flat\u0026amp;logo=ko-fi\u0026amp;logoColor=white\" /\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## Features\n\n- **Screenshot**: fullscreen or selected-area capture with manual/application window mode toggle (`Application Capture`, default `A`), area capture with inline annotate (annotate before saving), scrolling capture with live stitched preview, OCR text extraction, 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\n- **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\n- **Annotation Editor**: shapes, arrows, text, watermarks, filled rectangles, blur/pixelate, counters, crop, 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 shortcuts\n- **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)\n- **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\n- **Quick Access**: floating panel after every capture with copy, edit, drag-to-app, open, and delete actions\n- **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\n- **Shortcuts**: fully configurable global shortcuts for capture, recording, and annotation tools, with per-shortcut on/off control and system conflict detection\n- **Onboarding**: splash screen, first-run language selection, guided permissions setup, and shortcut configuration for first-time users\n- **Localization**: 🇺🇸 English, 🇻🇳 Vietnamese, 🇨🇳 Simplified Chinese, 🇹🇼 Traditional Chinese, 🇪🇸 Spanish, 🇯🇵 Japanese, 🇰🇷 Korean, 🇷🇺 Russian, 🇫🇷 French, and 🇩🇪 German app localization with native macOS per-app language support\n- **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\n- **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`\n- **Updates \u0026 Diagnostics**: in-app updates via Sparkle, problem reporting with diagnostic log bundles, cache management\n- **Platform**: menu-bar app, appearance theming (light/dark/system), App Sandbox with secure file-access bookmarks\n\n## Install\n\n\u003e Requires **macOS 13.0** or later.\n\n### Homebrew\n\n```bash\nbrew tap duongductrong/snapzy https://github.com/duongductrong/Snapzy\nbrew install --cask snapzy\n```\n\n### Shell script\n\n```bash\n# Install a specific version\ncurl -fsSL https://raw.githubusercontent.com/duongductrong/Snapzy/v1.20.1/install.sh | bash\n```\n\n### Download a release\n\n1. Go to [Releases](https://github.com/duongductrong/Snapzy/releases)\n2. Download the latest packaged app asset, typically `Snapzy-v\u003cversion\u003e.dmg`\n3. Move `Snapzy.app` to `/Applications`\n4. Launch Snapzy\n5. Grant Screen Recording permission when prompted in System Settings\n6. Re-launch Snapzy after granting Screen Recording if macOS asks for it\n7. Grant Microphone permission too if you want voice input in recordings\n\n**Note:** Snapzy is not notarized by Apple yet, so macOS may block it on first launch. After installing Snapzy to `/Applications`, run:\n\n```bash\nsudo xattr -rd com.apple.quarantine /Applications/Snapzy.app\n```\n\nLearn more in [Apple Support: Open a Mac app from an unidentified developer](https://support.apple.com/en-us/102445).\n\n## Uninstall\n\nTo completely remove Snapzy, reset all permissions, and clean up app data:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/duongductrong/Snapzy/master/uninstall.sh | bash\n```\n\nOr if you cloned the repo:\n\n```bash\n./uninstall.sh\n```\n\nThis 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.\n\n## Shortcuts\n\n| Action                                                  | Shortcut |\n| ------------------------------------------------------- | -------- |\n| Fullscreen screenshot                                   | `⇧⌘3`    |\n| Area screenshot                                         | `⇧⌘4`    |\n| ↳ Toggle manual/app window mode (`Application Capture`) | `A`      |\n| Area screenshot + inline annotate                       | `⇧⌘7`    |\n| Scrolling screenshot                                    | `⇧⌘6`    |\n| Screen recording                                        | `⇧⌘5`    |\n| OCR text capture                                        | `⇧⌘2`    |\n| Object cutout capture                                   | `⇧⌘1`    |\n| Open Annotate                                           | `⇧⌘A`    |\n| Open Video Editor                                       | `⇧⌘E`    |\n| Open Cloud Uploads                                      | `⇧⌘L`    |\n| Show shortcuts list                                     | `⇧⌘K`    |\n\n## Automation\n\nSnapzy registers the `snapzy://` URL scheme so launchers and automation tools can trigger capture actions.\n\n| Action                | URL                               |\n| --------------------- | --------------------------------- |\n| Fullscreen screenshot | `snapzy://capture/fullscreen`     |\n| Area screenshot       | `snapzy://capture/area`           |\n| Application window    | `snapzy://capture/application`    |\n| Area annotate         | `snapzy://capture/area-annotate`  |\n| Scrolling screenshot  | `snapzy://capture/scrolling`      |\n| OCR text capture      | `snapzy://capture/ocr`            |\n| Object cutout capture | `snapzy://capture/object-cutout`  |\n| Screen recording      | `snapzy://record/screen`          |\n| Application recording | `snapzy://record/application`     |\n| Open Annotate         | `snapzy://open/annotate`          |\n| Open Video Editor     | `snapzy://open/video-editor`      |\n| Open Cloud Uploads    | `snapzy://open/cloud-uploads`     |\n| Open Capture History  | `snapzy://open/history`           |\n| Show shortcuts list   | `snapzy://show/shortcuts`         |\n| Open Settings         | `snapzy://settings`               |\n| Open Settings tab     | `snapzy://settings?tab=annotate`  |\n\n## Development\n\nFor local setup, source builds, and first-time development workflow, start with [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md).\n\nIf you need archive, export, or DMG packaging commands, see [docs/BUILD.md](docs/BUILD.md). If you want the contribution workflow, see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## Documentation\n\n- [Ask DeepWiki (interactive docs assistant)](https://deepwiki.com/duongductrong/Snapzy)\n- [Docs map for humans and agents](docs/README.md)\n- [Project structure and runtime architecture](docs/STRUCTURE.md)\n- [Capture, recording, and editing flows](docs/CAPTURE.md)\n- [TOML configuration export/import](docs/CONFIGURATION.md)\n- [Build and packaging guide](docs/BUILD.md)\n- [Release and update workflow](docs/RELEASES.md)\n- [Local Sparkle update testing](docs/UPDATE_TESTING.md)\n\n## Community\n\n- Join the Snapzy Discord community for support, feedback, and discussion: [https://discord.gg/xkWDAuJkZu](https://discord.gg/xkWDAuJkZu)\n\n## Featured On\n\n\u003cp\u003e\n  \u003ca href=\"https://www.producthunt.com/products/snapzy?embed=true\u0026amp;utm_source=badge-featured\u0026amp;utm_medium=badge\u0026amp;utm_campaign=badge-snapzy\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cimg alt=\"Snapzy - Think CleanShot X, but open-source and developer-friendly | Product Hunt\" width=\"250\" height=\"54\" src=\"https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=1097629\u0026amp;theme=light\u0026amp;t=1773585048784\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://unikorn.vn/p/snapzy?ref=embed-snapzy\" target=\"_blank\"\u003e\u003cimg src=\"https://unikorn.vn/api/widgets/badge/snapzy?theme=light\" alt=\"Snapzy trên Unikorn.vn\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Benchmark\n\n### OCR\n\nBenchmark 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.\n\n| Language            | Character Accuracy | Exact Match |\n| ------------------- | -----------------: | ----------: |\n| English             |             100.0% |      100.0% |\n| Vietnamese          |             100.0% |      100.0% |\n| Simplified Chinese  |              99.3% |       75.0% |\n| Traditional Chinese |              99.0% |       66.7% |\n| Spanish             |              99.9% |       91.7% |\n| Japanese            |              99.4% |       66.7% |\n| Korean              |              99.7% |       83.3% |\n| Russian             |             100.0% |      100.0% |\n| French              |              99.3% |       33.3% |\n| German              |              99.8% |       75.0% |\n\nReal-world screenshots can score lower, especially with emoji, low-contrast footers, unusual punctuation, gradients, blur, or decorative fonts.\n\n## Security\n\nSnapzy runs inside the macOS App Sandbox with minimal entitlements. Network requests are limited to Sparkle update checks and user-initiated cloud uploads to **your own** S3/R2 bucket — no data is ever sent to third-party servers. Cloud credentials 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. Snapzy collects no telemetry.\n\nTo report a vulnerability, please use a [GitHub Security Advisory](https://github.com/duongductrong/Snapzy/security/advisories/new) or contact the maintainer privately. See [SECURITY.md](SECURITY.md) for full details.\n\n## Contributing\n\nContributions are welcome. Read [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request.\n\n## Contributors\n\nThanks to all the people who contribute to Snapzy!\n\n\u003ca href=\"https://github.com/duongductrong/Snapzy/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=duongductrong/Snapzy\" /\u003e\n\u003c/a\u003e\n\n## Star History\n\n\u003ca href=\"https://www.star-history.com/?repos=duongductrong%2FSnapzy\u0026type=date\u0026logscale=\u0026legend=top-left\"\u003e\n \u003cpicture\u003e\n   \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/image?repos=duongductrong/Snapzy\u0026type=date\u0026theme=dark\u0026logscale\u0026legend=top-left\" /\u003e\n   \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://api.star-history.com/image?repos=duongductrong/Snapzy\u0026type=date\u0026logscale\u0026legend=top-left\" /\u003e\n   \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/image?repos=duongductrong/Snapzy\u0026type=date\u0026logscale\u0026legend=top-left\" /\u003e\n \u003c/picture\u003e\n\u003c/a\u003e\n\n## Acknowledgments\n\nSnapzy is inspired by [CleanShot X](https://cleanshot.com/), an advanced screenshot and screen recording application for macOS.\n\n## License\n\nBSD 3-Clause License. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduongductrong%2Fsnapzy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduongductrong%2Fsnapzy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduongductrong%2Fsnapzy/lists"}