better-shot is a free, open source photo & video editors project written in Swift and released under BSD-3-Clause. It has 2,303 GitHub stars, 137 forks and 11 open issues, and was last pushed 6 days ago. On this registry it ranks #24 of 25 tracked projects in Photo & Video Editors, with 5 head-to-head comparisons available.

What is better-shot?

BetterShot is a native macOS app for screenshots, screen recording, and video editing, built for Mac users who want the capture workflow of CleanShot X and Loom without a subscription, an account, or telemetry.

What it is

BetterShot is an open-source, native macOS application written in Swift and SwiftUI that folds three tools into one: a screenshot capture and annotation surface, a screen recorder, and a video editor. It lives in the macOS ecosystem and installs either through the Homebrew cask bettershot or from a .dmg attached to the project's Releases. The project carries a BSD-3-Clause licence and labels itself a capture tool, annotation tool, and automation target — an app designed to run on the local machine rather than behind a vendor login.

The concrete problem it solves is the gap between paid capture utilities and hosted video sharing. CleanShot X handles screenshots and recording but asks for a subscription; Loom handles recording and link sharing but routes every upload through a vendor account. BetterShot replaces both with a local-first pipeline. Copy is clipboard-only for every capture mode and inside the editor, so screenshots remain in private working storage until Save or Export is explicitly chosen, and editor Save works even before any edits are made. When sharing does happen, the upload goes to a Cloudflare R2 bucket the user owns, so nothing leaves the Mac unless it is deliberately shared.

Key capabilities

  • Screenshot capture for region, fullscreen, and window using the native macOS selector, with OCR text extraction and a hex colour picker built in.
  • Screen recording of a display, window, or adjustable region with system audio, microphone, camera overlay, and teleprompter.
  • Image editor covering arrows, shapes, text, numbered markers, highlight, blur, pixelate, and crop, plus background framing with padding, corners, shadow, wallpapers, and ten soft gradients.
  • Video editor with cuts, clip speeds from 0.25x to 8x, transitions, crop, zoom, blur and pixelate masks, captions, and camera layout presets named Camera Bubble, Overlap, Side-by-Side, Presenter, Camera Only, and Screen Only.
  • Capture deck holding up to five captures in a floating stack with Copy, Save, Pin, Edit, cloud share, and drag-out actions, backed by a Media Gallery with search, filters, and cloud link management.
  • Cloud sharing to a personal Cloudflare R2 bucket with optimized image compression, MP4 video, native progress reporting, and retry on failure.
  • Seventy-five customizable shortcuts with conflict detection per scope, plus a URL scheme exposing entry points such as bettershot://capture/region, bettershot://record, and bettershot://ocr.

Who uses it and how

  • Individual Mac users who want capture and annotation without a recurring subscription or a login, and who keep captures local by default.
  • Keyboard-first and automation-heavy users who drive the app from Raycast, Shortcuts, Alfred, or shell scripts through the bettershot:// URL scheme instead of clicking through a menu bar.
  • Teams that want shareable links but insist on owning the storage, by pointing the app at their own Cloudflare R2 bucket and managing links from the Media Gallery.
  • Privacy-conscious users who value that the app declares no account and no telemetry, and who can delete captures locally to Trash or remotely from R2 with confirmation.
  • Creators recording tutorials or demos who need camera overlay, camera layout presets, captions, and a teleprompter in the same tool that edits the result.

Getting started

Install with brew install --cask bettershot, or download the .dmg from Releases and drag BetterShot into Applications. A three-step introduction covering Welcome, Permissions, and First Capture runs on first launch.

How it compares

CleanShot X and Loom are both commercial products built around a subscription and an account, and Loom's sharing model assumes uploads land in the vendor's cloud. BetterShot is BSD-3-Clause open source with no subscription and no account, so the cost model is one of self-hosting rather than recurring payment. Data ownership is the sharper difference: shared links resolve to a Cloudflare R2 bucket the user controls, not to a provider's storage.

When to use it — and when not to

Pick BetterShot when the machine runs macOS 26.0 or later and the user is willing to grant screen recording and capture permissions, and to run a Cloudflare R2 bucket if cloud sharing is wanted. Anyone on Windows or Linux is out of scope, and teams wanting hosted sharing with zero storage setup should look at a service instead, because here the bucket, its credentials, and its access rules are the operator's responsibility. The project is also modest in size, with roughly 2,300 stars, 137 forks, and 11 open issues, so users who need vendor support contracts rather than community issues should weigh that before adopting it.

project readme (upstream, from github) — read inline

BetterShot

macOS License X (Twitter) Buy Me a Coffee

One app for the whole screen. Screenshots, screen recording, and a video editor, native on macOS. An open-source alternative to CleanShot X and Loom with no subscription, no account, and no telemetry. Nothing leaves your Mac unless you share it, and shares go to storage you own.

Features

  • Screenshots: region, fullscreen, and window capture with macOS's native selector. OCR text extraction and hex color picker included.
  • Screenshot saving: Copy is clipboard-only for every capture mode and in the editor. Screenshots stay in private working storage until you choose Save or Export; editor Save also works before making edits.
  • Screen recording: capture a display, window, or adjustable region with system audio, microphone, camera overlay, and teleprompter.
  • Image editor: arrows, shapes, text, numbered markers, highlight, blur, pixelate, and crop. Background framing with padding, corners, shadow, wallpapers, and ten soft gradients.
  • Video editor: cuts, clip speeds (0.25x to 8x), transitions, crop, zoom, masks (blur/pixelate with Crop Only or Full Frame), captions, and camera controls. Camera layout presets include Camera Bubble, Overlap, Side-by-Side, Presenter, Camera Only, and Screen Only, with left/right positioning for paired layouts. Layouts apply to the whole video and are saved with the project. Camera Bubble and Overlap start at the compact 0.5.2 size (1:1, 26%); selecting either preset restores that size. Floating cameras offer 1:1, 4:3, 3:4, 16:9, 9:16, and 4:5 frames; set 1:1 with 50% rounding for a circle. Background > Video aspect ratio controls the whole video independently, with Original, 16:9, 16:10, 4:3, 9:16, 1:1, and 4:5 plus Fill/Fit.
  • Default Look: choose No Background for unframed screenshots and videos, or set background padding down to 0%. Available in General and both editors.
  • Cursor styles: Recorded, Arrow (white outlined, starting at 2.5×), Dark, Light, and Dot. Older projects using Hand keep their saved appearance.
  • Cursor styling: choose Recorded, Dark, Light, Dot, or native Hand with size, motion, press/ripple effects, and idle hiding. High-resolution artwork preserved in exports.
  • Capture deck: keep up to five captures in a floating stack with Copy, Save, Pin, Edit, cloud share, and drag-out. Configurable layouts, tool positions, and dismissal timing.
  • Media Gallery: browse captures, edits, and recordings with search, filters, and cloud link management. Delete locally (Trash) or remotely (R2) with confirmation.
  • Video export: GPU compositing and hardware encoding, with 30/60 fps, resolution, quality, and MP4/MOV controls. Export and sharing reuse unchanged saved renders.
  • Cloud sharing: upload to your own Cloudflare R2 bucket. Optimized image compression, MP4 video, native progress, and retry on failure.
  • 75 customizable shortcuts: configure global capture, recording controls, deck actions, image tools, and video editing keys. Conflict detection per scope.
  • URL scheme: trigger actions from Raycast, Shortcuts, Alfred, or scripts: bettershot://capture/region, bettershot://record, bettershot://ocr, and more.

Both editors use a left inspector with compact controls and frosted chrome. Action icons use Apple SF Symbols. Full-resolution previews are the default, and original source files remain editable.

Install

brew install --cask bettershot

Or grab the .dmg from Releases. Drag BetterShot into Applications and launch it. A three-step introduction (Welcome, Permissions, First Capture) walks you through setup on first run.

Default shortcuts

Action Shortcut
Region screenshot ⌘⇧4
Fullscreen screenshot ⌘⇧3
Capture and recording bar ⌘⇧2
Recording options ⌘⇧5
OCR text scan ⌘⇧O
Color picker ⌘⇧C

All shortcuts are customizable in Settings > Shortcuts. Additional actions (area recording, deck controls, editor tools) start unassigned and can be bound from the same page.

Build from source

brew install xcodegen
git clone https://github.com/KartikLabhshetwar/better-shot.git
cd better-shot
make release
open .build/Build/Products/Release/BetterShot.app

Requires macOS 26.0+, Xcode 26+, and XcodeGen. Pure Swift and SwiftUI with a single dependency (DockProgress). No Electron, no web views.

Run make test to verify with unsigned builds, regression checks, editor snapshots, and export integration tests.

Contributing

Contributions are welcome. See CONTRIBUTING.md for the build workflow, project layout, and submission process. Read AGENTS.md for the required UI and interaction rules.

License

BSD 3-Clause. See LICENSE.

Frequently asked questions

Is better-shot free to use?

better-shot is open source under the BSD-3-Clause licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does better-shot do?

Screenshot, screen recording, and video editor for macOS. Native SwiftUI app with capture deck, 75+ customizable shortcuts, URL scheme automation, and self-host

What is better-shot written in?

better-shot is primarily written in Swift. Its source is publicly available at https://github.com/KartikLabhshetwar/better-shot, and it has 2,303 GitHub stars.