BetterApps
BetterEdits app icon
BetterEdits · macOS 15 · Apple silicon · native Swift

Cut reels at the speed of thought.

BetterEdits is a deliberately small, fast, single-timeline video editor for the Mac, in the spirit of Instagram's Edits. Drop in footage, cut, add voiceover and subtitles, export. Nothing ever waits on you.

Free to try · 38 MB · no account required to edit

Golden hourIn library
Guides
Fit9:16
No talking heads.
just cuts, fast ones
00:09.14/ 00:20.00Snap
0:00
0:02
0:04
0:06
0:08
0:10
0:12
0:14
0:16
0:18
0:20
No talking heads.
Step 2 — brew
so here's the thing
no talking heads
just cuts, fast ones
import, trim, done
then ship it
IMG_4819.MOV
IMG_4821.MOV
100%
IMG_4823.MOV
70%
B-roll: gym
IMG_4830.MOV
Voiceover 1
Recording…
lofi-morning.m4a
45%
Features

Everything a reel needs. Nothing it doesn't.

Native AVFoundation for media, AppKit and Core Animation for the timeline, SwiftUI for the chrome. The preview renders at 1080p so scrubbing stays snappy on 4K HDR footage.

One timeline.

Drop video, photos or audio from Finder. Photos become 3 s clips you can stretch to 60 s. Drag a clip and its neighbours slide out of the way and snap into place.

Frame-exact trims.

Drag either edge of a clip and the viewer shows the exact frame at that edge while you drag. S splits at the playhead. ⌫ deletes.

Voiceover that ducks the music.

⌘R records from the playhead while the timeline plays, drawing the take live. Music ducks under voiceovers automatically.

Subtitles in one click.

The track's sound goes to Deepgram and comes back split into short bars on a Subtitles track. Edit them inline, pick a style with a live 9:16 preview, and they burn into the export with the same renderer the viewer uses.

Text with 17 Edits-style looks.

Classic, Modern, Strong, Neon, Typewriter, Meme, Elegant and more, bundled as Google Fonts. Every text owns its look; save the ones you like as favorites.

Clone a reel.

Paste a link. The reel is fetched, Gemini watches it, and a model turns every shot and on-screen text into a template of named placeholders. The original rides along at 50% so you can match shots.

Export like Edits.

HD, 2K or 4K at 24, 30 or 60 fps. iPhone HLG footage stays HDR through the preview and the HEVC 10-bit export. 9:16, 16:9, 1:1 and 4:5 canvases keep everything where it was.

A library of plain files.

Projects are folders of JSON. Footage in your shoot folders is used in place, never duplicated; a one-off file travels with its project. Edit project.json on disk and it lands as one undoable step.

Keyboard first

Your hands stay on the keys.

The shortcuts you know from Final Cut and Premiere, without the menus you don't. Full undo and redo for everything, including edits made from the command line.

Play / pauseSpace
Split at playheadS
Step a frame / a second⇧←⇧→
Record voiceoverR
Add textT
Generate subtitlesT
Add placeholderP
Detach audioD
DuplicateD
Nudge a frame
Toggle snappingN
ExportE
Automation

An editor Claude Code can drive.

Every library ships with a generated guide and a CLAUDE.md that imports it. Open Claude Code in the folder and it can import media, cut, caption, retime text and export, over a Unix socket to the running app.

  • Every command lands as an ordinary undo step.
  • Refs are short: v1, a1, t1, s1 and v1:2. Times are seconds, 1:02.5, end or playhead.
  • Templates are plain JSON: write a structure by hand, or edit a cloned one and import it again.
  • frame and contact-sheet write PNGs so the model can look at the cut.
Claude Code with BetterApps
BetterEdits cli clip-split v1:1 --at 2
BetterEdits cli captions-generate --track v1
BetterEdits cli text-add "No talking heads." --at 0.3 --for 3.7
BetterEdits cli export --resolution 4k --fps 30

Library and projects

Where videos live: a folder of plain files that saves itself and never duplicates a shoot.

  • A library of plain files

    A library is a folder with library.json, a settings/ folder, projects/<Name>/project.json and a cache/. Create Library... asks for a name and a place; the welcome screen lists libraries opened before.

  • Projects that save themselves⌘N

    New Project asks for a name, creates the folder, and saves the project a second after each change. No dirty state, no recovery prompt, and full undo and redo.

  • The welcome window browser

    Open, rename, duplicate, trash and reveal projects from the welcome window; each card shows its size on disk. Close forgets the library and shows the empty state, deleting nothing.

  • Media folders, used in place

    Files inside the library's media folders or the library itself are used where they are. Anything else is copied once into the project's media/ folder and stored by relative path, so a project moves as one piece.

  • Consolidate before dropping a folder

    Removing a media folder that videos still use warns first and offers to copy the files into each video's own media/ folder before the folder goes (media-folders --remove --consolidate, or --force).

  • Single .be files

    Save a Copy As... writes a project as one .be file, JSON with media references. Import Project File... copies a .be into the library.

  • Edits on disk land live

    Changes to project.json or the settings JSON files on disk are picked up while the app runs. A project rewrite lands as one undoable "Edit on Disk".

  • The Library panel

    The Library button in the project toolbar opens a panel with the library's location, its media folders, and the media the open video uses, copied or in place.

Timeline and clips

One timeline where footage is dropped, trimmed, split, rearranged and stood in for.

  • Drop anything from Finder⌘I

    Drop video, photos or audio from Finder, or press ⌘I. Photos become 3 s clips you can stretch to 60 s.

  • Trim and splitS

    Drag either edge of a clip; the viewer shows the exact frame at that edge while you drag. S or ⌘B splits the selected clip, else the active track, at the playhead. ⌫ deletes the selection.

  • Rearrange by dragging

    Drag a clip along the track and its neighbours slide out of the way and snap into place. Drag it up or down to move it between tracks of the same kind.

  • Snap and nudgeN

    N toggles snapping to clip edges and the playhead. On a free track ⌥← and ⌥→ nudge a clip by a frame, ⌥⇧← and ⌥⇧→ by a second.

  • Copy, paste, duplicate⌘D

    ⌘C and ⌘V paste at the playhead on the active track. ⌘D puts a copy right after the original and selects it; it works for clips, placeholders, texts and subtitle bars.

  • Placeholders⇧⌘P

    ⇧⌘P drops a named stand-in clip at the playhead. On a video track it plays as a black plate with its name, in the viewer and in exports; on an audio track it is silent. Trim, move, split and copy it like any clip.

  • Replace and fill

    Replace with File..., the sidebar's Replace... button, or a file dropped on a placeholder takes the clip's spot and length. A shorter file asks whether to keep its own length or fill the rest with a placeholder.

  • Edit Range (slip)

    Edit Range... (sidebar, right-click menu, clip-slip) slides which part of a file a clip plays without moving it. The sheet shows the whole file as a strip with a window the clip's length to drag along it.

Tracks

Video, audio, text and subtitles rows, each with its own panel, lock, visibility and opacity.

  • Magnetic or free

    On a magnetic track clips stay packed: trims ripple, deletes close gaps, dragging a clip reorders it. On a free track a clip lands at the nearest spot that fits. Text tracks can be magnetic too.

  • The track panel

    Click a track header to open its properties on the left: name, magnetic, visibility, mute, level, ducking, order and delete. The header itself keeps only magnetic, mute, solo and, on video, the eye.

  • Lock a track⌥⌘L

    A locked track refuses every edit: moves, trims, splits, deletes, drops, level and framing changes, and on a subtitles track the bars, style and position. Mute, solo and level still work.

  • Solo and hide

    The headphones button solos a track. The eye hides a video, subtitles or text track from the preview and the export; a hidden video track's sound still plays, and hidden tracks dim in the timeline.

  • Track opacity

    Video tracks have an opacity (track panel, track-set --opacity). Below 100% the tracks beneath show through; placeholders take their track's opacity. Headers show a quiet badge when level or opacity is not 100%.

  • The active track

    Click a header, or empty space in its row, to focus a track. S, ⌘V and Add Placeholder act there when nothing is selected. Drag the bar above the tracks to resize the area; it scrolls when tracks overflow.

Voiceover and music

Recording from the playhead, music that ducks, and sound that cuts separately from picture.

  • Record from the playhead⌘R

    ⌘R or the mic button records while the timeline plays, drawing the take live on a voiceover track. The transport shows a countdown, then the input device and a live level meter. Stop with Space.

  • Music on the bottom track⇧⌘M

    ⇧⌘M or drop an audio file on the bottom track. Drag to position, trim the edges, set the volume. A voiceover take is a clip like any other: trim, move, split, level.

  • Automatic ducking

    Music ducks under voiceovers automatically. Ducking is a per-track switch in the track panel.

  • Clip and track levels

    Hover a clip with sound to reveal its Final Cut style level line; drag it up or down (snaps at 100%, yellow otherwise). Clips not at 100% wear a speaker badge. Tracks have their own level from 0 to 150%.

  • Detach audio⇧⌘D

    ⇧⌘D copies a video clip's sound onto a new audio track and silences the video clip, so picture and sound cut separately: a J-cut is a trim away.

  • Export a clip's sound

    Exporting a selected audio clip saves its sound alone as an M4A. A hidden video track's sound still plays; mute the track or set the clip's level to zero to silence it.

Subtitles

Transcribe a track with Deepgram, fix the bars, pick a style, and burn them in.

  • Transcribe with Deepgram⌥⌘T AI

    ⌥⌘T (or Generate Subtitles... in a track's panel or context menu) mixes a video or audio track down, sends it to Deepgram, splits the transcript into short bars, and adds a Subtitles track on top.

  • Bars you can edit inline

    The bars panel lists every bar for inline editing: click a time to seek, ⋯ or right-click to merge, split or delete. Clicking a bar in the timeline selects it and seeks; Esc drops the selection.

  • Position and style per track

    The subtitles track panel has lock, visibility, style, position (Top / Middle / Bottom plus inset), Re-split / Regenerate (which asks which track to transcribe) and arrange/delete.

  • Style editor with live preview

    Settings > Subtitle Styles edits caption styles with a live 9:16 preview: font, size, colours, background, outline, shadow, uppercase, word highlight. The style menu previews each style in its own look.

  • Bar rules and keywords

    Settings > Transcription holds the Deepgram key, model, language and the bar rules: max words, max seconds, break on punctuation. Keywords boosts names and jargon Deepgram would otherwise mishear.

  • Cached transcripts

    Transcripts are cached on disk per track content, so regenerating after a style change costs nothing. The Deepgram key stays in this Mac's defaults, never in the library.

  • Burned in at export

    The eye hides a subtitles track from the preview and the export. Visible bars are burned in with the same renderer the viewer uses. Lock the track once the bars are right so they keep lining up.

Text

On-screen text with 17 Edits-style looks, edited in the sidebar and saved as favorites.

  • Text at the playhead⌘T

    ⌘T puts a text at the playhead on a Text track on top of the timeline, adding the track if there is none, and focuses its words in the clip sidebar. Double-click an existing text to type.

  • Move and resize on the canvas

    Click a text in the viewer to select it, drag it to move (snaps to the centre), drag a corner to resize so the whole look scales, double-click to edit its words.

  • Every text owns its look

    Edited in the sidebar: font, size in points, colour, uppercase and spacing, background box, shadow and outline, plus X / Y and Center.

  • 17 Edits-style fonts

    Classic, Modern, Strong, Neon, Typewriter, Meme, Elegant, Literature, Directional, Signature, Editor, Bubble, Deco, Poster, Squeeze, Journal and Rosalia: the closest Google Fonts, bundled with the app.

  • Fonts shown in their own typeface

    The Mac's fonts are there too, and the font menu lists every font rendered in its own typeface.

  • Favorites

    Saved looks, separate from subtitle styles. The Apply menu shows each favorite's name in that look; Save... stores the current one. Settings > Text Styles edits and reorders them; the default dresses new texts.

  • Text clips like any clip

    Texts trim, move, split, copy and delete like any clip and text tracks can be magnetic. The eye hides a text track from preview and export; exports burn texts in. Text never lengthens the piece.

Clone Reel and templates

Paste a reel's link and get a project with the same structure, as editable JSON.

  • Clone Reel from a link⇧⌘N AI

    ⇧⌘N takes a reel's link and builds a project with its structure. The reel is fetched at its best resolution with yt-dlp (H.264 from VP9); a 720p copy goes to the analysis, the full one stays as the reference.

  • Gemini watches the reel AI

    Gemini reports every shot, on-screen text and sound with timings. The analysis is kept as reel.json in the project folder.

  • A model drafts the template AI

    A model behind Vercel AI Gateway (Claude Opus by default, any gateway model id) turns the analysis into named placeholders ("Talking head: hook line"), music and voiceover placeholders, and texts in a matching favorite.

  • Only what the reel showed

    Text the drafting model adds on its own is dropped, and burnt-in captions are noted rather than copied. Without a gateway key the analysis is mapped to a template directly.

  • The Reference track

    The original rides on a "Reference" video track at the top at 50% opacity and 50% level, over the placeholders. When nobody speaks, its sound goes to reference-audio.m4a on the audio track as music.

  • Keys and cookies

    Keys and models live in Settings > AI and this Mac's defaults, or GEMINI_API_KEY and AI_GATEWAY_API_KEY in the environment. Public posts need no login; yt-dlp can read a browser's cookies for the rest.

  • Templates are plain JSON

    A template describes a video without footage: video and audio segments with name, start, duration and notes; texts with words, timing, favorite, position and look; plus name and notes.

  • Import and export templates

    Import Template... starts a project from one: segments become named placeholders in order, texts become text clips. template prints the open project as one; template-import --here adds one to it.

Canvas and export

Four canvases, on-canvas framing, and an export sheet that follows the footage.

  • Four canvases

    9:16 by default. The pill in the viewer's top-right corner opens into 9:16, 16:9, 1:1 and 4:5 with miniatures and asks before changing (ratio 16:9 on the command line). A cloned landscape reel makes a landscape project.

  • Nothing moves when you switch

    Positions and scales are normalized, so switching the canvas keeps clips, text and captions where they were. Exports follow the canvas, grown to the footage's size.

  • Move, scale, crop on the canvas

    Drag the selected video clip in the viewer to move it, pinch or scroll to scale, drag the corner handles, or use Crop mode's edge handles.

  • Reels guides

    The Guides menu on the viewer shades the Reels UI and the feed/grid crop zones, so text and captions land where the app won't cover them.

  • The export sheet⌘E

    ⌘E opens options like the Edits share sheet: HD / 2K / 4K, 24 / 30 / 60 fps, Normal / HDR. HDR is offered only when the footage is HDR; Normal tone-maps to Rec. 709. Defaults follow the footage.

  • HDR stays HDR

    iPhone HLG footage stays HDR through the preview and the HEVC 10-bit export; otherwise exports are H.264/AAC MP4. The preview renders at 1080p; the export at the footage's size, up to 4K.

  • What you see ships

    Exports burn the visible subtitles and texts in with the same renderer the viewer uses. Hidden tracks are left out. Files land in the project's exports/ folder.

  • Export one clip⇧⌘E

    ⇧⌘E or the button in the clip sidebar exports just the selected clip: a video clip renders its stretch of the timeline with everything on it.

Command line and Claude Code

Every edit is a command over a Unix socket, with a guide in each library so Claude Code can drive the app.

  • A guide in every library

    Each library carries BetterEdits.md, a guide rewritten on every launch, and a CLAUDE.md that imports it. It names the binary, lists every command and its options, and explains how tracks, clips, text and captions behave.

  • Nothing on your PATH

    The command line is the app's own binary: /Applications/BetterEdits.app/Contents/MacOS/BetterEdits cli. The library's .claude/settings.json pre-approves only that binary, and the path heals itself if the app moves.

  • One Unix socket

    Commands reach the running app over ~/Library/Application Support/BetterEdits/cli.sock, launching it in the background if needed, and land as ordinary undo steps. BETTEREDITS_NO_CLI=1 keeps the socket closed.

  • Short refs and times

    Tracks are v1, a1, t1, s1, a name or an id; clips are v1:2. Times are seconds, 1:02.5, end or playhead. Positional values fill required options (clip-split v1:1 2); relative paths resolve from the library.

  • Read the project

    status, timeline, media, probe, favorites, guide and help report the open project, every track and clip, the media in use, a file on disk before adding it, and the saved looks.

  • Cut from the shell

    track-add/set/remove; media-import, clip-add, placeholder-add, clip-replace, clip-slip, clip-split/trim/move/remove/set/duplicate; text-add/set; transcript, captions-generate, captions, caption-edit, captions-style.

  • Look at the cut

    frame --at writes the picture at a time as a PNG with text and captions drawn on. contact-sheet writes one PNG of many frames labelled with their time, 12 by default, to cache/frames/ or --out.

  • Drive the app

    seek, select, app-show, undo and redo; library, media-folders, projects, project-new/open/save, ratio, reel-clone; export with --preview (540p), --resolution, --fps, --hdr and --out, to exports/ by default.

Keyboard shortcuts

Every key the editor listens to, so your hands stay on the keys.

  • TransportSpace

    Space plays and pauses. ← and → step a frame, ⇧← and ⇧→ a second, Home and End jump to the start and end. Click or drag in the ruler or empty track space to scrub.

  • Editing

    S or ⌘B split, ⌫ deletes, ⌘C / ⌘V / ⌘D copy, paste and duplicate, ⌥← ⌥→ nudge, N toggles snapping, ⌥⌘L locks the active track, ⌘Z / ⇧⌘Z undo and redo.

  • Sound and words

    ⌘R records a voiceover, ⇧⌘M adds music, ⌘T adds text, ⌥⌘T generates subtitles, ⇧⌘D detaches audio, ⇧⌘P adds a placeholder.

  • Viewer zoom⌥⌘0

    Pinch or ⌘-scroll to zoom, ⌥⌘= and ⌥⌘- step it, ⌥⌘0 or the Fit pill resets. Two-finger scroll pans.

  • Timeline zoom⇧Z

    Pinch, ⌘-scroll or ⌘= / ⌘- zoom the timeline; ⇧Z fits the whole piece. Two-finger scroll pans it.

  • Projects and windows

    ⌘N new project, ⇧⌘N clone reel, ⌘O open, ⌘S save, ⌘W close project, ⌘E export, ⇧⌘E export the selected clip, ⌘, settings. Esc deselects the clip, then closes the track panel.

Pricing

BetterEdits on its own, or in the bundle.

The subscription pays for the parts that cost us money to run: transcription, reel clones and the 4K HDR path.

Every plan starts with a 3-day free trial and 100 AI credits. Cancel any time.
BetterEdits

The editor. Cut, caption, export.

$12/ month
Billed monthly. Cancel any time.
1,200 AI credits a month
Start 3-day trial
  • One timeline, unlimited projects
  • 1,200 AI credits a month: about 300 minutes of subtitles, or 30 reel clones
  • 2K and 4K export, HDR passthrough
  • Text with 17 Edits-style looks
  • Voiceover with automatic music ducking
  • The BetterEdits command line for Claude Code
BetterApps Bundle
Best value

Both apps, one subscription. Footage in, reel out.

$13/ month
Billed monthly. Cancel any time. 23% less than both apps.
2,400 AI credits a month
Start 3-day trial
  • Everything in BetterClips and BetterEdits
  • 2,400 AI credits a month, shared across both apps
  • Drag highlights straight onto the timeline
  • Claude Code runs the whole shoot-to-post loop
  • One account, one invoice, priority support
  • Every app we ship next, included
FAQ

Questions people ask

Do I need an account?
Not to edit. The subscription unlocks the included transcription and clone minutes, 2K and 4K export and updates; sign in once inside the app and the editor itself never phones home again.
Which Macs does it run on?
macOS 15 or later, Apple silicon. Intel Macs are not supported: the preview and export lean on the media engine and HEVC 10-bit paths of the M-series chips.
Do I need Deepgram or Gemini keys?
No. Subtitles and Clone Reel run through your BetterApps account and spend credits; nothing provider-related lives on your Mac or in a library.
Does it work offline?
Editing, voiceover, text and export are fully offline. Subtitles and Clone Reel talk to Deepgram, Gemini and the Vercel AI Gateway.
What happens to my projects if I stop paying?
Nothing. Projects are folders of plain JSON and media in your library. The app keeps opening them; only the included minutes, 4K export and updates go away.
BetterEdits app icon
BetterEdits for Mac
Version 2.0 · 38 MB · macOS 15 or later, Apple silicon
Public build coming soonbrew install --cask betteredits