BetterEdits app icon
BetterEdits, a video editor for the Mac

A simple video editor for the Mac.

One timeline, captions in one click, and reels you can clone into templates. Nothing you do not need. Takes clips from BetterLibrary and orders from Claude Code.

Free to download. macOS 15 or later, Apple silicon. No account needed 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%
Simple should not mean phone

Simple videos get the worst tools.

A 30-second video should take minutes. Instead it takes a phone editor that hides your files and loses your trims, or a full editor that wants a project, an event, a library and a colour page first.

The phone editor

Fat-finger trims on a five-inch screen. No file system, so the footage lives inside one app. One project at a time, and the export is trapped in the app that made it.

The full editor

Final Cut, Premiere and Resolve are built for feature films and teams. For a short video, the setup tax is the whole job, and you learn a hundred panels to use four.

Pillar 1

Clone a reel. Keep its structure.

A format that works becomes a project you can fill with your own footage.

Paste a link. Get a template.

⇧⌘N takes a public reel from Instagram, TikTok or YouTube Shorts and builds a project with its structure: named placeholders like “Talking head: hook line”, music and voiceover slots, and texts in a matching look. The original rides on a Reference track at 50% so you can match it shot for shot.

  • Only what the reel showed. Text the model invents is dropped.
  • A model watches a 720p copy and reports every shot, on-screen text and sound with timings.
  • Then it is just a project. Edit it, save it as a template, reuse it for the whole series.
Pillar 2

Templates and placeholders.

Block out the video before you have the footage. Fill it when you do. Keep it for the next one.

A placeholder is a named slot

⇧⌘P puts a black plate on the track with a name and a length: “Hook: talking head”, “B-roll: gym”, “Result”, “CTA”. Drop a file on it and the placeholder becomes the clip, trimmed to fit or filling the slot. Silence slots do the same for audio.

  • Structure first, footage later. Write the whole video as slots, then shoot to the list.
  • Drop from anywhere. Finder, a drive, or a highlight straight out of BetterLibrary.
  • Replace and fill. Swap the clip in a slot without touching the rest of the cut.

A template is a project you keep

Every project can be printed as a template: plain JSON with the tracks, placeholders, texts and music slots, none of the media. Import it into a new project and the slots are waiting. One per series means the same rhythm every episode.

  • Plain JSON. Edit one by hand, keep it in the library, share it with a collaborator.
  • Cloned or hand-built. Clone Reel writes one from a link; ⇧⌘P builds one from scratch.
  • Fill it with Claude Code. “Fill each placeholder from ./b-roll and export” is one prompt.
Pillar 3

Captions in one click.

Right, styled like Edits, and burned in where the app will not cover them.

⌥⌘T, and the bars appear

The track's sound is transcribed and comes back as short bars on a Subtitles track. Fix a word inline, click a time to seek, merge or split a bar. Names and jargon go in the keywords list so they come out spelled right.

  • Bar rules you set. Max words, max seconds, break on punctuation.
  • Cached transcripts. Restyle as often as you like; the audio is not sent twice.
  • Burned in at export with the same renderer the viewer uses, so what you see ships.

Eight styles, a live preview, a safe zone

Soft Pill, Airy Caps, Editorial, Ink, Mono, Bold Outline, Yellow Pop, Outlined Serif, or your own: font, size, colours, background, outline, shadow, uppercase, word highlight. Position per track. The Reels guides shade where the app's UI will sit, so captions never hide under the caption box.

  • Live 9:16 preview while you edit the style.
  • Top, middle or bottom, plus an inset, per track.
  • Guides for Reels, Stories, the feed crop and the profile grid.
Simple on purpose

What is in it, and what is not.

Native AVFoundation for media, AppKit and Core Animation for the timeline, SwiftUI for the chrome. Every part is there because a short video needs it.

In it
  • One magnetic timeline, frame-exact trims
  • Video, audio, text and subtitle tracks
  • Placeholders and templates
  • Captions in one click, eight styles
  • Voiceover that ducks the music
  • 17 Edits-style text looks
  • 9:16, 16:9, 1:1 and 4:5 canvases
  • HD, 2K and 4K export, HDR when the footage is
  • Reels guides for the safe zone
  • Full undo, projects that save themselves
Not in it
  • Effects
  • Transitions
  • Keyframes
  • Colour tools
  • Speed ramps
  • Multicam
  • A plugin store
  • A media browser to configure
  • Anything that waits on you

For the long-form piece, use Final Cut. BetterLibrary feeds it the same files.

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⇧←⇧→
Add placeholderP
Generate subtitlesT
Add textT
Record voiceoverR
Clone a reelN
DuplicateD
Nudge a frame
Toggle snappingN
ExportE
BetterLibrary app iconWorks with BetterLibrary

Find the clip in the library. Drop it on the slot.

Ask BetterLibrary for “the best kettlebell swing, portrait”, then drag the highlight across. It arrives as a losslessly trimmed file named after the moment and lands on the timeline, or straight into the placeholder that was waiting for it.

About BetterLibrary
Claude Code

Tweak the cut from a prompt.

Every library ships with a generated guide and a CLAUDE.md. Open Claude Code in the folder and it can fill placeholders, move a text, restyle the captions, cut variations and export, over a Unix socket to the running app.

  • >Move the hook text to 0.5 s and switch the captions to Bold Outline.
  • >Fill each placeholder from ./b-roll, in order, and export at 4K.
  • >Make three variations of this video with different hooks and export all of them.
Claude Code with BetterEdits

Every command lands as an ordinary undo step. frame and contact-sheet write PNGs so the model can look at the cut before and after.

BetterEdits cli clip-replace v1:2 --path ./b-roll/swing.mov --fill
BetterEdits cli clip-move t1:1 --to 0.5
BetterEdits cli captions-style --style "Bold Outline" --position bottom
BetterEdits cli export --height 2160
And the rest

The other things a short video needs.

Voiceover that ducks the music.

⌘R records from the playhead while the timeline plays, after a 3-2-1 count, drawing the take live. Music on the other tracks drops under the voice on its own.

Text with 17 Edits-style looks.

Classic, Modern, Strong, Neon, Typewriter, Meme, Elegant and more, plus every Mac font in its own typeface. Every text owns its look; favorites save the ones you like.

Export like Edits.

HD, 2K or 4K at 24, 30 or 60 fps. iPhone HLG footage stays HDR through the preview and the 10-bit HEVC export. What you see is what ships.

Four canvases, nothing moves.

Switch 9:16, 16:9, 1:1 or 4:5 and clips, text and captions stay where they were. Reels guides shade the UI, the feed crop and the profile grid.

Projects that are plain files.

A project is JSON that saves itself a second after every change, next to its media. Edit it on disk and the app follows, as one undoable step.

Frame-exact, always.

Drag either edge of a clip and the viewer shows the exact frame. Preview renders at 1080p so 4K HDR scrubs without a spinner.

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, fix the bars, pick a style, and burn them in.

  • Transcribe in one click⌥⌘T AI

    ⌥⌘T (or Generate Subtitles... in a track's panel or context menu) mixes a video or audio track down, transcribes it, 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 language and the bar rules: max words, max seconds, break on punctuation. Keywords boosts names and jargon that would otherwise be misheard.

  • Cached transcripts

    Transcripts are cached on disk per track content, so regenerating after a style change costs nothing.

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

  • The reel is analysed AI

    Our AI 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

    Our AI 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.

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

Launch price: 33% off every plan.
Every app starts with a 7-day free trial and 100 AI credits. Cancel any time.
BetterEdits app icon
BetterEdits

The editor. Cut, caption, export.

Launch price · 33% off
$10$15/ month
Billed monthly. Cancel any time.
1,500 AI credits a month
Start 7-day trial
  • One timeline, unlimited projects
  • 1,500 AI credits a month: about 750 minutes of subtitles, or 37 one-minute reels cloned
  • 2K and 4K export, HDR passthrough
  • Text with 17 Edits-style looks
  • Voiceover with automatic music ducking
  • The BetterEdits command line for Claude Code

Already subscribed to one app? The other is 30% off for as long as the first stays live: BetterLibrary $4.20 or BetterEdits $7 a month, with its own 7-day trial started from inside the app.

FAQ

Questions people ask

Can I make my own template without cloning a reel?
Yes. Build the structure once with placeholders (⇧⌘P), texts and a music slot, then save it as a template: templates are plain JSON you can export, import into any project, and share. Clone Reel is the shortcut that writes one from a link.
Does it work without BetterLibrary?
Yes. BetterEdits accepts any file from Finder, Photos or a drive. BetterLibrary adds a way to find the clip first and drop it straight onto a placeholder, but nothing in the editor depends on it.
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.
Does it work offline?
Editing, placeholders, voiceover, text and export are fully offline. Subtitles and Clone Reel use our AI services and need a connection.
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
Version 0.1 · macOS 15 or later, Apple silicon
Free download. Free 7-day trial, then a subscription; cancel any time.