Capture, edit, and share your screen. Native on macOS.
Download · Website · Changelog · Contribute · Report a bug
BetterShot is a free, open-source Mac app for screenshots, scrolling captures, screen recordings, and image and video editing. No account, subscription, or cloud service required.
Requires macOS 26 or later.
brew install --cask bettershotOr download the Apple silicon or Intel .dmg from
Releases,
drag BetterShot into Applications, and open it. A short tour walks you through
permissions and your first capture.
Screenshots
- Region, window, fullscreen, and scrolling capture.
- Extract text with OCR or pick any on-screen color as hex.
- Annotate with arrows, shapes, text, numbered markers, highlights, blur, and pixelate.
- Crop, rotate, and flip without losing editable annotations.
- Frame captures on a wallpaper, soft gradient, or any custom color with padding, rounded corners, and shadow.
- Save as PNG or JPEG.
Recordings
- Record a display, window, or adjustable area with optional system audio, microphone, camera, and teleprompter.
- Pause, restart, or discard from the compact recording bar. Restart and Discard ask for confirmation in a native macOS dialog; Cancel keeps the recording.
Video editor
- Cut clips, change speed from 0.25x to 8x, and add zooms, transitions, captions, and blur or pixelate masks.
- Arrange screen and camera as Camera Bubble, Overlap, Side-by-Side, Presenter, Camera Only, or Screen Only.
- Restyle the cursor (Recorded, Arrow, Dark, Light, Dot) with size, smoothing, click effects, and idle hiding.
- Add 3D shots: eight camera moves, five drifting angles, Auto Scene, depth blur, and keyframed Bézier curves.
- Export MP4 or MOV at 30 or 60 fps.
Everything else
- Copy, save, pin, edit, share, or drag captures from the floating preview.
- Browse screenshots, recordings, and share links in the Media Gallery.
- Share to your own Cloudflare R2 bucket with one click.
- Trigger any capture from Shortcuts, Raycast, or the terminal with URL actions.
Original captures and source movies are never modified. Both editors support undo, redo, and native full screen.
- Open BetterShot and allow Screen Recording. Enable Accessibility for global shortcuts.
- Press
⌘⇧4to capture a region, or⌘⇧2to open the capture and recording bar. Your last area opens already selected: press Return to capture it again, drag its edges to resize it, or drag anywhere to draw a new one. - Use the floating preview to Copy, Save, Pin, Edit, or Share.
| Action | Shortcut |
|---|---|
| Region screenshot | ⌘⇧4 |
| Capture previous region again | ⌘⇧1 |
| Fullscreen screenshot | ⌘⇧3 |
| Capture and recording bar | ⌘⇧2 |
| Recording options | ⌘⇧5 |
| OCR text scan | ⌘⇧O |
| Color picker | ⌘⇧C |
Change or add bindings in Settings > Shortcuts. Extra actions, such as Capture Region & Pin or Edit Clipboard Image, start unassigned.
Set the background, padding, corner radius, and shadow for new captures in Settings > General > Default Look.
Region screenshots use BetterShot’s adjustable selector. Enable Settings > Capture > Region > Capture as soon as I let go to capture on mouse release, or leave it off to adjust the area before confirming. Window screenshots and OCR use the native macOS selectors.
Saved previews dismiss after Settings > Overlay > Hide After, pausing while you use the card. Keep screenshot previews open holds only unsaved captures; choose Never under Hide After to keep saved previews open too.
Capture a page or list taller than the screen:
- Choose Scrolling Capture in the menu bar, Scroll in the capture bar
(
⌘⇧2), or assign a shortcut in Settings > Shortcuts. - Drag over the scrollable content, then scroll down through it. Or click Auto Scroll to let BetterShot scroll for you (requires Accessibility).
- Click Stop to send the stitched image to the capture preview. × or Escape discards it.
Fixed headers and scrollbars are left out of the joins, and content that fades in while scrolling is captured fully drawn. Captures finish at 30,000 pixels. If a join is missed, scroll back up a little and continue.
| Action | Result |
|---|---|
| Copy | Puts the image on the clipboard. No extra file is exported. |
| Save | Writes to your configured folder. Later saves from the editor update the same file. |
| Export | Asks for a new destination. |
New installs also save every normal screenshot to the configured folder (Desktop by default). Turn this off under Settings > General > Saving to keep captures private until you choose Save or Export. Upgrades keep your previous behavior. Capture & Copy, Edit, and Pin shortcuts always skip automatic saving, and a failed save keeps the capture available for retry.
Each capture is named once, when it is taken, and every action reuses that
name. Customize it in Settings > General > Saving with templates such as
standup-{date}-{counter:3}.
| Permission | Used for |
|---|---|
| Screen & System Audio Recording | Screenshots, recordings, and system audio |
| Accessibility | Global shortcuts |
| Input Monitoring | Cursor effects and shortcut overlays. Plain typing is never recorded. |
| Microphone | Voice in recordings |
| Camera | Camera recording |
Manage access in System Settings > Privacy & Security. If capture or shortcuts still fail after granting access, quit and reopen BetterShot.
Sharing is optional and uses a Cloudflare R2 bucket you own.
- Create an R2 bucket with a public URL and an API token with Object Read & Write access to that bucket.
- Enter your credentials in Settings > Sharing and click Test Connection. A successful test turns on Upload when I share; while it is off, Share uploads nothing.
- Click Share on any capture to upload it and copy the link.
Credentials are stored in your login Keychain. Links open a viewer on
bettershot.site by default. Turn on Copy direct file links to get the raw
file URL instead. Anyone with a link can view it. Outside of sharing, BetterShot
only goes online to check GitHub for updates.
Trigger captures from Shortcuts, Raycast, Alfred, or the terminal:
open 'bettershot://capture/region'| Route | Action |
|---|---|
capture/region |
Region screenshot |
capture/fullscreen |
Fullscreen screenshot |
capture/window |
Window screenshot |
capture/scroll |
Scrolling capture |
ocr |
OCR text scan |
color-picker |
Color picker |
record |
Start a recording |
settings |
Open Settings |
Requires Xcode 26 and XcodeGen.
brew install xcodegen
git clone https://github.com/KartikLabhshetwar/better-shot.git
cd better-shot
make release
open .build/Build/Products/Release/BetterShot.appmake release builds unsigned, so no signing identity is needed. See
CONTRIBUTING.md for Xcode setup, the code map, and tests.
Bug reports, fixes, docs, and accessibility feedback are all welcome. When opening an issue, include your macOS and BetterShot versions and steps to reproduce. Read the contributor guide and Code of Conduct before opening a pull request.
Built by Kartik Labhshetwar and contributors. If BetterShot helps you, consider supporting its development.

