BetterApps
BetterClips app icon
BetterClips · A clip library for Mac

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

The BetterClips window: the Library shelf as a grid of clips, with the inspector open on one.
1

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.

2

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.

3

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.

Features

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.
The All Clips shelf as a table, with status, properties and highlight columns.

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.
A clip page in edit mode: the trim handles pulled in on the clip strip, three named highlight rows under it.

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.
The Ask card over the library window, with a sentence typed into it.

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.
The Properties settings: a list of properties, one selected with its tags and their descriptions.

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.
Claude Code with BetterApps
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/reel

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

Your footage, your folder

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.

Pricing

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.

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

The clip library. Find the shot you mean.

$4.99/ month
Billed monthly. Cancel any time.
600 AI credits a month
Start 3-day trial
  • 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
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 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.
BetterClips app icon
BetterClips for Mac
Version 0.1 · 62 MB · macOS 14.4 or later, Apple silicon or Intel
A notarized disk image; drag the app to Applications.
Public build coming soonbrew install --cask betterclips