Skip to content

Repository files navigation

BetterShot clover icon

BetterShot

Capture, edit, and share your screen. Native on macOS.

Latest release macOS 26 or later Build status BSD 3-Clause license

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.

BetterShot image editor with editable annotations and background controls

Install

Requires macOS 26 or later.

brew install --cask bettershot

Or 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.

Features

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.

See the video editor

BetterShot video editor with zoom controls, a clip timeline, and cut markers

Getting started

  1. Open BetterShot and allow Screen Recording. Enable Accessibility for global shortcuts.
  2. Press ⌘⇧4 to capture a region, or ⌘⇧2 to 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.
  3. 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.

Scrolling capture

Capture a page or list taller than the screen:

  1. Choose Scrolling Capture in the menu bar, Scroll in the capture bar (⌘⇧2), or assign a shortcut in Settings > Shortcuts.
  2. Drag over the scrollable content, then scroll down through it. Or click Auto Scroll to let BetterShot scroll for you (requires Accessibility).
  3. 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.

Where files go

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}.

Permissions

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.

Cloud sharing

Sharing is optional and uses a Cloudflare R2 bucket you own.

  1. Create an R2 bucket with a public URL and an API token with Object Read & Write access to that bucket.
  2. 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.
  3. 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.

Automation

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

Build from source

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.app

make release builds unsigned, so no signing identity is needed. See CONTRIBUTING.md for Xcode setup, the code map, and tests.

Contributing

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.

About

Screenshot, screen recording, and video editor for macOS. Native SwiftUI app with capture deck, 75+ customizable shortcuts, URL scheme automation, and self-hosted cloud sharing. Open-source alternative to CleanShot X and Loom.

Topics

Resources

Code of conduct

Contributing

Stars

2.4k stars

Watchers

6 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages