An open-source alternative to CleanShot X. Native Swift app for macOS — fast, lightweight, local-first. No subscriptions, no cloud, no telemetry.
| Action | Shortcut |
|---|---|
| Region screenshot | ⌘⇧4 |
| Fullscreen screenshot | ⌘⇧3 |
| Window screenshot | ⌘⇧5 |
| Record screen | ⌘⇧2 |
| OCR text scan | ⌘⇧O |
| Color picker (hex) | ⌘⇧C |
Region, fullscreen, and window capture all use the native macOS screencapture CLI for maximum reliability. OCR extracts text from any region of the screen. Color picker samples any on-screen pixel and copies the hex value. All shortcuts are customizable in Settings > Capture.
- Record full screen — Capture your entire display as MP4 video with ScreenCaptureKit
- Floating status bar — Timer, pause/resume, stop, restart, and discard controls (hidden from the recording itself)
- Video editor — Trim, crop, add padding, corner radius, shadow, and background (solid, gradient, wallpaper, custom image). Export as MP4 with effects baked in
- Configurable — FPS (24/30/60), show cursor, capture audio in Settings > Recording
- Backgrounds — 12 solid color presets, 16 gradient presets, bundled macOS wallpapers, or your own image
- Effects — Padding, corner radius, shadow strength — all rendered live
- Crop — Crop screenshots and recordings with draggable handles, dark mask, and rule-of-thirds grid
- Layout — Aspect ratio (Auto, 1:1, 4:3, 3:2, 16:9, 9:16), 9-point alignment grid with smart corner radius
- Defaults — Configure your preferred effects and background in Settings with a live preview
- Export — PNG or JPEG for screenshots, MP4 for recordings
Rectangles, filled rectangles, ellipses, lines, curved arrows, freehand, text, numbered badges, blur, and spotlight. Each has a single-key shortcut in the editor (R, F, O, L, A, D, T, N, B, G). Text annotations support font selection, size, bold, italic, underline, and alignment.
- Click-to-edit — Click the floating preview to open the editor (image or video)
- Drag-to-app — Drag from the preview panel directly into Figma, Slack, or any app
- Pin screenshots — Pin any capture as an always-on-top floating window, unpin all from the menu bar
- Auto-apply — Automatically apply your default background, padding, corner radius, and shadow on every capture and recording
- Self-timer — Countdown overlay before capture (3s, 5s, 10s)
- Capture history — Separate tabs for screenshots and recordings in Settings
- Recent menu — Quick access to recent screenshots and recordings from the menu bar
- Toast notifications — Confirmation toasts for OCR, color picker, and gallery saves
- In-app updates — Check, download, and install updates without leaving the app
- Configurable overlay — Choose preview position and auto-dismiss timing
brew install --cask bettershot- Go to Releases
- Download the latest
.dmgfor your architecture (Apple Silicon or Intel) - Open the DMG, drag BetterShot to Applications
- Launch and grant permissions when prompted
git clone https://github.com/KartikLabhshetwar/better-shot.git
cd better-shot
make runThis builds a debug version and launches it. See all make commands below.
BetterShot needs two macOS permissions on first launch:
- Screen Recording — System Settings > Privacy & Security > Screen Recording
- Accessibility — System Settings > Privacy & Security > Accessibility
Screen Recording lets the app capture your screen. Accessibility lets it override the default macOS screenshot shortcuts with its own.
- Launch BetterShot — it appears in your menu bar (top right of screen)
- Use a keyboard shortcut or click a capture action from the menu
- The floating preview appears — click it to open the editor
- Adjust background, effects, and add annotations
⌘Sto save,⇧⌘Cto copy to clipboard
| Action | Key |
|---|---|
| Select tool | V |
| Rectangle | R |
| Filled rectangle | F |
| Ellipse | O |
| Line | L |
| Arrow | A |
| Freehand | D |
| Text | T |
| Numbered circle | N |
| Blur | B |
| Spotlight | G |
| Save / Export | ⌘S |
| Copy to clipboard | ⇧⌘C |
| Undo / Redo | ⌘Z / ⇧⌘Z |
| Delete annotation | Delete |
| Select all | ⌘A |
| Close editor | Esc |
Open from the menu bar > Settings (or ⌘,).
- General — Save location, clipboard behavior, appearance, default effects with live preview (padding, radius, shadow, background including macOS wallpapers and custom images), export format
- Capture — Self-timer delay, keyboard shortcuts (click any shortcut to re-record it, including record screen), overlay position and dismiss timing
- Recording — FPS (24/30/60), show cursor, capture audio, open editor after recording
- History — Browse and delete past screenshots
- Videos — Browse and delete past recordings, open in video editor
- About — Version info, in-app update checker, project links (GitHub, X)
| Command | What it does |
|---|---|
make build |
Debug build |
make release |
Release build (unsigned) |
make run |
Build and launch |
make dmg |
Create DMG for local testing |
make clean |
Remove build artifacts |
make lint |
Check for compiler warnings |
make test-build |
Full clean + release build |
make version |
Print current version |
Native Swift 6 / SwiftUI. No Electron, no web views, no external dependencies.
| Framework | Used for |
|---|---|
| CoreGraphics | Image compositing, annotation rendering, beautifier pipeline |
| CoreImage | Gaussian blur for redaction |
| Vision | OCR text extraction |
| ScreenCaptureKit | Screen and window recording |
| AVFoundation | Video editing, trimming, effect compositing via AVMutableVideoComposition |
| AppKit | Color sampling, floating panels, pinned windows, capture via CLI |
| Carbon | Global keyboard shortcuts via CGEvent tap |
Contributions are welcome. See CONTRIBUTING.md for setup instructions, project structure, and coding guidelines.
BSD 3-Clause. See LICENSE.