The clip you need, in a sentence.
Import your footage. Let AI name, describe and tag every clip in your own vocabulary. Approve the keepers, ask for what you need in plain words, and drag the highlight straight into your edit.
macOS 14.4 or later, Apple silicon or Intel · Your footage stays in a folder you own · AI is optional

Import
Drop folders or files in. Originals are copied into the library, duplicates are caught by content, and every clip gets its metadata and a poster frame. iPhone HEVC and ProRes preview natively.
Approve
AI names each clip, writes the one-line description, fills your properties and marks the highlights. You read, fix and press ⌘R. Ready clips are the Library; everything else waits in In Progress.
Ask and drag
Press ⌘K and describe the clips you want in a sentence. Drag a highlight onto BetterEdits, Final Cut or Finder and it lands as a real, losslessly trimmed file named after the moment.
Built for people who shoot a lot and edit under pressure.
Every part of BetterClips shortens the distance between “I know we shot that” and the clip on your timeline.
The Library is what you approved
A clip is New until something about it changes, then a Draft. Ready is your sign-off, and the Library shelf shows only Ready clips. Archive sets things aside without deleting them.
- In Progress is the to-do list: new imports and drafts waiting for a decision.
- ⌘R marks the selection Ready so approving a row of drafts is one keystroke per clip.
- The AI never changes a status. It fills; you approve.

Highlights mark the moment. Trim cuts the file.
Open a clip and mark the ranges worth keeping. A highlight is two timestamps over the original with a name, and it is what you drag into the edit. When a clip has dead air on both ends, pull the trim handles in and BetterClips cuts the file itself, losslessly, after asking.
- Edges snap to the playhead and to neighbouring highlights. Hold ⌥ to drag freely.
- Split at Playhead turns one long take into two clips, each keeping its highlights.
- Skimming scrubs the video as the pointer moves along the strip, like Final Cut.

Ask for clips
“Portrait gym clips with kettlebells from this summer, energetic, sorted by newest.” Press ⌘K, type that, and the model turns it into a real filter: tags, dates, orientation, and a meaning search over what happens in the footage. You can see the filter it built, change it, and save it as a view.
- Three text modes. Fuzzy forgives typos, includes is literal, meaning finds synonyms with an on-device index.
- Filters compose. All-of and any-of groups, nested as deep as you like.
- Views remember the filter and the look: grid or table, sort, columns.

AI tagging that speaks your vocabulary
Properties are yours: Location, Vibe, Exercise, Client Approved, whatever the work needs. Each tag carries a description that says when it applies, and that is exactly what the model reads. It cannot invent tags, only choose from yours.
- AI properties get filled on import or on demand. Manual ones are never touched.
- Every call is logged with its tokens and cost, per library.
- Priced in credits you can see. Nothing runs without your say-so.

Agents welcome
Every library carries a CLAUDE.md and the app ships a command-line tool that applies the same rules as the window. Point Claude Code at the folder and it can list, tag, describe, mark highlights and export, while the app reloads live.
- Same rules as the app. Statuses, single-select tags, re-filing when a property goes.
- --json everywhere, and ids accept any unique prefix.
- Nothing to install. The tool lives inside the app bundle and the guide says where.
betterclips clips list --search "kettlebell swings, outdoors" --mode meaning --json
betterclips clips tag 3f9a c21e --add "Location:Gym" --add "Vibe:Energetic"
betterclips highlights export 7b40 --to ~/Desktop/reelLibrary and settings
A library is an ordinary folder you own; everything the app knows lives inside it.
- A folder you own
library.db (an SQLite index), originals/ filed by year and month, thumbnails/ and renders/ caches, settings.jsonc and a CLAUDE.md. No account, no cloud.
- Several libraries⌘O
One library is open at a time. Keep one per client or per year and switch with File > Open or Create Library; File > Open Recent lists the ones you have used.
- Portable on any drive⇧⌘W
Paths in the database are relative to the folder. Close the library, move or copy the whole folder to an external SSD, a NAS share or a synced folder, and reopen it.
- Caches you can delete
thumbnails/ and renders/ are caches; deleting them costs time, not data. library.db and originals/ are the library, so those are what you back up.
- Settings travel with the footage⌘,
Almost every setting belongs to the open library and is stored in its settings.jsonc, a JSON file with comments that is safe to edit by hand. Keys the app does not know are kept.
- Every key documented
geminiApiKey, geminiModel, aiGatewayApiKey, aiGatewayModel, aiConcurrency (1 to 8, default 4), autoTag, libraryDescription, modelPricing, the audio choices, each shelf's look and importDefaults.
- macOS 14.4 and later
Apple silicon or Intel. On macOS 26 the app takes the Liquid Glass look; earlier systems get the same features in the classic style.
Importing
Getting footage into a library, what happens to each file, and how duplicates are handled.
- Drag, paste or import⌘I
Drag files or folders from Finder onto the window (folders are scanned recursively), paste files copied in Finder, or use File > Import Files, which accepts files and folders.
- One sheet per batch
Set properties on everything in the batch (a Location, a Client, a yes/no) and choose whether to tag it with AI once it lands. The last choice is remembered per library.
- Duplicates caught by content
Files are fingerprinted before anything is copied. If some are already in the library you are asked once, Finder-style, whether to Skip them, keep them as duplicates, or cancel.
- Originals copied and filed
Each video is copied into originals/<year>/<month>/ by capture date. Your source file is untouched, and you can delete it once the import has finished and the count looks right.
- Metadata and poster frame
Dimensions, duration, capture date, camera make and model, lens, codec, frame rate, HDR, audio channels and tracks are read. The poster comes from the first frame, so hover playback matches the still.
- Any format macOS plays
Video only: MP4, MOV, M4V and every codec AVFoundation decodes, including iPhone HEVC, HDR and ProRes, previewed natively with no transcoding. Images and audio files are skipped.
- Progress and failures
One batch runs at a time. A progress bar at the bottom of the window shows the count and offers Cancel; files that fail are listed when the batch finishes.
- Rebuild Metadata
Library > Rebuild Metadata re-reads every clip's file and refreshes its technical metadata and poster frame. Names, descriptions, properties and highlights are not touched.
The library window
Sidebar, grid and table, inspector, and the things you can do to a selection.
- Four shelves
Library (Ready), In Progress (New and Draft), Archive and All Clips, each with a count in the sidebar. Every shelf remembers its own layout, sort and columns; Reset View restores the default.
- Grid or table
Sort by Imported, Created, Name, Duration, File size, Dimensions, or Relevance while a search is active. The Show menu picks which properties appear as table columns and card tags; long text can wrap.
- Finder-style selection⌘A
Click selects, ⌘-click toggles, ⇧-click extends, arrow keys move the selection with ⇧ to extend, Esc clears. Hovering a card plays the clip, muted and looping.
- Quick LookSpace
Space opens a Finder-style Quick Look window that follows the selection; ← and → step through the grid without closing it. Space or Esc closes. Double-click opens the clip in its own window.
- The inspector
One clip: name, status, file facts, description, every property and its highlights. Several: what they share, plus Tag All with AI, Tag Empty with AI, Reset, Share, Export to Folder and Move to Trash.
- Bulk edit in words⌘E
Select several clips and press ⌘E. The bulk edit sheet spells out every change it will make before you apply it.
- Multiple windows⌘N
⌘N opens another window over the same library, with its own shelf, selection and filters. Menu commands act on the window in front.
- Trash and Reset⌘⌫
Move to Trash removes clips after a confirmation; the originals go to the macOS Trash. Reset wipes a clip's name, description, properties and highlights, takes back any AI request, and keeps the file.
Statuses and approval
New, Draft, Ready and Archived; the shelves built on them; and why the AI never changes one.
- New, Draft, Ready, Archived
New is imported and untouched. Draft means something changed, by hand or because an AI answer landed. Ready is approved. Archived is set aside, kept, and out of the way.
- Approve with one key⌘R
Select one or more clips and press ⌘R, or use the status control in the inspector or the context menu. Approving a row of drafts is ↓, ⌘R, ↓, ⌘R.
- Any direction, nothing deleted
The inspector's status control goes back to Draft or out to Archive. The command-line tool sets statuses too, with clips set --status.
- The AI never changes a status
Its only effect is that a New clip becomes a Draft when its answer lands. It never marks a clip Ready or Archived, and it never touches a manual property. Approval is a person's job.
- A separate AI axis
What the AI is doing to a clip (nothing, pending, in progress, failed) is its own thing. It shows in the inspector with Cancel and Retry, in the sidebar's progress dial, and as a filter condition.
- The count of decisions left
In Progress's sidebar count is the number of clips still waiting on you. Ready is the settled state, so it is the one status cards do not show as a tag.
Properties and tags
Describe footage the way you think about it; the same vocabulary is what the AI is allowed to use.
- Five property types
Multi-select and single-select (which hold tags), yes/no (yes, no or not set), a 1 to 5 scale drawn as stars, hearts, flames, bolts, dumbbells, dots or a number, and text (a line or several).
- AI or manual
AI properties are filled by the model in place of what was there. Manual ones (Client Approved, Location, anything only a person knows) are written only by people and the command-line tool.
- Tag descriptions steer the model AI
The description is what the model reads to decide when a tag applies: "Vibe: Energetic. Fast movement, loud music, high effort." It can only choose from tags you defined; it cannot invent one.
- The loose Tags property
Bare keywords typed without a property go into Tags, a multi-select bucket for words that have not earned their own property yet. Delete a property and its tags move here instead of disappearing.
- The property manager⇧⌘T
Create, rename, re-describe, reorder, or switch a select between single and multi. Add, rename, colour or move tags, and merge several into one with every clip keeping the survivor.
- Properties as files
Export Properties writes a properties.jsonc and an INSTRUCTIONS.md for editing by hand or by an agent. Import Properties previews every rename, new tag, merge and deletion before it applies.
- Six ways to apply a tag
Type in the inspector (unknown names are created on the fly), drag clips onto a sidebar tag or a view, bulk edit, set it for a whole batch on import, or clips tag --add "Property:Tag" from the terminal.
- Counts in the sidebar
Every property lists its tags with how many clips carry each on the current shelf. Click a tag to show those clips; click a scale row for that many and up.
Clip page and highlights
A clip in its own window: marking the moments worth keeping, and the two lossless cuts that change a file.
- A clip in its own windowSpace
Double-click opens the player over the highlight timeline, with the inspector beside it. Space plays and pauses; click a highlight row and playback stays inside its range.
- SkimmingS
Press S and moving the pointer along a strip scrubs the video, like Final Cut.
- Highlights never touch the file
A highlight is a named in-point and out-point that lives in the index. A clip can have as many as you like; the AI marks a few when it tags a clip, to be treated as a first draft.
- Add at the playhead⇧⌘H
Add Highlight puts a row at the playhead. Drag its edges to set in and out; edges snap to the playhead, other rows and the clip's ends, and ⌥ drags freely. The name becomes the render's filename.
- One draft, one Save⌘S
⌘E turns the whole page into a draft: the properties in the inspector and the rows on the timeline go in one Save (⌘S) or one Cancel (Esc).
- Lossless trim
Pull the clip's own handles in and Save; after "Trim to this range?" the file is cut to the kept range on keyframes. Highlights inside survive, shifted; highlights outside are dropped.
- Split at Playhead
The scissors ask first, then make two clips, before and after the playhead, each with its name, properties and the highlights that fall inside it. The cut lands on the nearest keyframe.
Search, filters, Ask and views
Three ways to find a clip: type a few words, build a filter, or describe it in a sentence, then keep the good ones.
- Search in three modes⌘F
Matches names, descriptions and highlight names. Fuzzy forgives a typo or two ("coastlne" finds coastline), Includes is literal, and Meaning finds synonyms with a bundled on-device sentence model.
- The filter builder
All-of or any-of conditions with nested sub-groups: text in any mode, select any/all/none of, yes/no including not set, scale at least/exactly/at most, Orientation, Created, Imported, Status and AI status.
- Chips and relevance
Each active condition is a chip under the toolbar; click its x to drop it. While text is active the grid sorts by Relevance, and the footer offers looser or stricter matching.
- Ask in a sentence⌘K AI
"portrait gym clips from this summer, energetic, newest first" comes back as a real filter: tags, dates, orientation, status, a text search and a sort. Words with no tag become a meaning search.
- An answer you can edit
The filter bar shows exactly what was built; change any condition, add one, or drop it. An ask that says nothing about status searches the Library; "drafts with kettlebells" searches In Progress.
- What Ask sends AI
Your sentence and the names and descriptions of your properties, tags and views. No footage, no thumbnails. The default model is DeepSeek V4 Flash through a Vercel AI Gateway key; aiGatewayModel picks another.
- Views keep filter and look
Save View stores the filter with grid or table, sort and columns. Change an open view and the bar offers Update or Reset Filters. Recent asks are listed under the field to run again.
- Drop clips onto a view
Drag clips onto a view and BetterClips offers to tag them so they would match: the view's tags come pre-ticked and a scale minimum carries over. Nothing changes until you confirm.
AI tagging and cost
A first pass from Gemini in your own vocabulary, with every call logged and priced per library.
- What tagging fills AI
A short name, a one-line description, values for your AI properties chosen from your tags, and a few named highlights. All of it replaces what was there; manual properties are never touched.
- Your key, your prompt AI
A Gemini key in Settings > General, stored in settings.jsonc next to the footage. Default model Gemini 3.6 Flash. "About this library" is the prompt's opening line; the rest is shown read-only.
- Three ways to ask for it AI
Tag with AI after import, on by default once a key exists. Tag All with AI or Tag Empty with AI on a selection, where Tag Empty only touches clips with nothing filled yet. Or ai request from the terminal.
- A queue that survives relaunch
Several calls run at once (aiConcurrency, 1 to 8). Pending and in-progress clips show Cancel, failures show their reason with Retry, and rate limits retry on their own. Editing a queued clip waits for the answer.
- What is sent AI
A downscaled copy of the clip is uploaded to Google's Gemini Files API with your key, along with the prompt. Nothing is sent for clips you do not tag, and nothing without a key.
- Every call logged
Settings > AI Usage lists each tag or ask with its clip, model, input and output tokens, duration and cost, with totals at the top. The log lives in the library folder and travels with it.
- Prices you control
Cost is computed at call time in USD per million tokens. The app ships today's list; modelPricing in settings.jsonc overrides it. Uploaded video dominates the bill; an ask costs a fraction of a cent.
- Works without any AI
Without keys, tagging and asking are simply off. Import, statuses, properties, highlights, search, filters, views, export and the command-line tool all work.
Export, drag and audio
Getting footage out: into Final Cut, into a folder, or to someone else, with the audio the way you need it.
- Drag into Final Cut, or anywhere
Drag from the grid, table, clip page or inspector onto a Final Cut event or timeline, Finder, or any app that accepts files. A clip drags its original; a highlight drags a trimmed copy named after it.
- Passthrough remux
Video and audio samples are copied, not re-encoded: fast, lossless, any codec your Mac plays. Cuts land on keyframes, so a range can start a fraction before the marked in-point.
- Renders cached, disposable
A highlight's file is made on its first drag and kept in renders/. It is dropped when the highlight moves, the clip's file changes or the export audio setting flips, and rendered again on the next drag.
- Export to Folder
Copies every selected clip's original to a destination. For two-mic recordings the panel offers original tracks, both mics merged to mono, left mic only, or right mic only.
- Share sheet
AirDrop, Messages, Mail and the rest of the macOS share sheet for the selected clips, from the inspector or the context menu.
- Copy and paste⌘C
⌘C puts the selected files on the clipboard for Finder. ⌘V imports files copied from Finder, or pastes one clip's name, description, properties and highlights onto another, one checkbox per field.
- Mono for two-mic recordings
Play > Consolidate to mono sends every channel to both speakers while previewing, on by default, file unchanged. Export > Consolidate to mono writes one AAC mono track; video is copied sample for sample.
- iPhone preferred audio track
Choose the stereo mix, the spatial capture, or an external mic's mono track as the default. Applied on import and across the open library; only the QuickTime header is rewritten, never the media.
Command line and agents
A tool that works the library with the same rules as the window, and a CLAUDE.md that tells agents how.
- Ships inside the app
/Applications/BetterClips.app/Contents/Helpers/betterclips, nothing to install. Pass --library, set $BETTERCLIPS_LIBRARY, or run from inside a library folder and it finds the library itself.
- --json everywhere
Add --json to any command for machine-readable output. Ids are UUIDs and any unique prefix works; --help on any command lists its options.
- Read everything
info, clips list filtered by shelf, status, tag, view, search mode, AI state, orientation, dates, filter JSON and sort, clips show and path, highlights, properties, tags, views, settings and ai status.
- Write everything
clips set, tag, value, reset and delete; highlights add, set, delete and export; import and export; properties, tags and views create, set, rename and delete; ai request, cancel and retry-failed; settings set.
- Same rules as the window
Writes go through the same service layer, so statuses, single-select rules and tag re-filing behave identically. After every write an open app reloads at once and picks up clips queued for AI.
- CLAUDE.md in every library
Written on creation and refreshed on open: what each file is, the tool's path, how the library thinks, every command, and working rules such as prefer existing tags and never mark clips Ready unless asked.
- Your notes stay
Below the app's section, "Notes about this library" is never rewritten. Put the house rules there: what the footage is for, who approves clips, how to name highlights, which tags are off limits.
- Safe by design
clips reset and clips delete are the only destructive commands, and the guide says so. The tool can queue clips for AI but not run it. Keys stay in settings.jsonc, and settings get masks them.
A library is a folder. Everything else is a choice.
No cloud, ever
The library is a folder you pick: your originals, an SQLite index, thumbnails, and a settings file you can read. Move it, back it up, open it on another Mac.
AI only when you ask
Tagging sends a downscaled copy of a clip to Gemini. Asking sends your sentence and your property names to a gateway model. Turn either off and nothing leaves your Mac.
Search stays local
Fuzzy and literal search, and the meaning index, run on your Mac with a bundled model. No key, no network, no upload.
BetterClips on its own, or in the bundle.
AI calls spend the credits your plan includes; the app shows you the cost of every call.
The clip library. Find the shot you mean.
- Unlimited libraries and clips
- AI tagging and Ask for clips
- 600 AI credits a month, about 150 tagged clips
- Top up any time with credit packs
- Highlights, lossless trims, drag to any NLE
- The betterclips command line for Claude Code
Both apps, one subscription. Footage in, reel out.
- 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
Questions people ask first
- Does BetterClips change my video files?
- Imports are copies and stay untouched. Highlights are timestamps in the index. The two exceptions are deliberate and ask first: pulling a clip's trim handles in cuts the file, and Split at Playhead makes two files out of one. Both are lossless remuxes on keyframes.
- What does the AI actually see?
- Tagging uploads a downscaled copy of the clip to Gemini's Files API, along with your property and tag descriptions. Asking sends your sentence and the names of your properties, tags and views. The exact prompt is in Settings.
- Does it work with Premiere, Resolve or Avid?
- Yes. What leaves BetterClips is an ordinary file, so anything that accepts a file from Finder accepts one from BetterClips. BetterEdits accepts the drag directly onto its timeline.
- Can I use it without any AI?
- Yes. Without a subscription, tagging and asking are simply off. Import, statuses, properties, highlights, search, filters, views, export and the command-line tool all work.
- Which Macs?
- macOS 14.4 or later, Apple silicon or Intel. On macOS 26 the app takes the Liquid Glass look; earlier systems get the same features in the classic style.