# How to add, trim and export clips from your footage in Grain

Add a clip from a suggested moment or with I and O, trim it in the clip editor, and export each clip as an MP4 with an SRT, leaving the original untouched.

Canonical page: https://grain.photo/guides/add-trim-export-clips
Last updated: 2026-11-10


In Grain Photo, a clip is a range you mark in a recording: choose **Add Clip** on a suggested moment, or press I and O and then choose **Add Clip**. Trim it with **Edit Clip**, then choose **Export Clips…** to write each clip as an MP4 with an SRT caption file, timed to the clip. The original recording is never changed.

::video moments | Moments beside the player: expand a suggested moment, play it from the line and choose Add Clip.

## A range, not a copy

A clip is a range linked to the original recording: an in point, an out point and the words between them. Grain doesn't copy or render anything when you add one. Media is written only when you export.

::cards
### In Grain
- A linked range of the original recording
- No media copied, so clips cost no disk space
- Trim or remove it without touching the recording
### After Export Clips…
- An MP4 and an SRT for each clip
- In a local folder you choose
- The original recording untouched
::end

So you can add clips freely, including second-best takes, from footage on any drive, and change your mind later.

## Where clips live: Moments

Open a recording and **Moments** shows its transcript beside the player, in order. **All** shows the transcript and your clips together, so you see each clip in the context of what was said around it. **Clips** shows only the clips you've added from this recording.

**Show All** opens the full reader. Previous and next step through every moment in the recording.

## Add a clip

Grain suggests moments in a recording, and a search highlights the passages that match. Keep one of those, or mark your own range for a reaction, a cutaway or a passage with no dialogue.

::cards
### From a suggested moment
- Click the moment to play it from the line
- Choose **Add Clip**
- The clip covers the moment's range; trim it afterwards for more or less
### With I and O
- Play or scrub to where the clip should start, and press **I**
- Move to where it should end, and press **O**
- Choose **Add Clip**
::end

You can scrub the timeline to look beyond a suggested passage before you mark it.

## Clips and transcription

You don't have to wait for transcription to add clips. A clip added before Grain has transcribed that recording picks up its words when transcription finishes. Transcription is automatic, on your Mac. See [how automatic transcription works](/guides/automatic-transcription).

If a word in a clip is misheard, double-click the moment's words to correct it. Search, captions and exports use your correction.

## Trim a clip

Choose **Edit Clip**, or double-click the clip in **Moments**, to open the clip editor. Set the range either way:

::cards
### Drag the handles
- Move the in and out by eye
- The video follows, so you see the frame you're landing on
### Type In and Out
- Enter exact timecodes
- For an agent's selects or an editor's notes
::end

Then choose **Update Clip** to apply the change, or **Cancel** to keep the clip as it was.

> Tip: Leave a few frames of air at each end. It's easier to trim in the edit than to find more.

::video clip-editor | Mark a range with I and O, choose Add Clip, then drag the Out handle in the clip editor and choose Update Clip.

## Remove a clip

Choose **Remove Clip**. The clip is removed, and the original recording and its transcript stay as they are. If you removed the wrong one, Undo restores the clip.

## Export clips

Choose **Export Clips…** and pick a local folder. Grain writes a new folder named `Grain Clips-<file>-<date>-<time>-<id>`, with the clips inside named `001-<first words>.mp4` and `.srt`.

::cards
### MP4
- One per clip, of the clip's range
### SRT
- One per clip, timed to the clip
- The first caption starts at the clip's start, not the recording's
### Grain Clips.json
- A manifest of the source file and each clip's range and files
- Lets an editor, agent or script put the clips back in order or find the original
::end

One export covers up to 100 clips and 30 minutes of selected media. For bigger selections, export in batches. Your clips stay in Grain after the export, so you can update one and export again.

::video clip-export | Export Clips… writes each clip's MP4 and SRT to a new folder, with Grain Clips.json beside them.

## What to do with exported clips

::cards
### In your editor
- Bring the MP4s into Premiere Pro, Final Cut Pro or DaVinci Resolve as selects
- Import the SRTs as captions where you need them
- The manifest says which recording each came from
### With an agent
- Give it file access to the export folder: Claude Code, or a desktop agent with the folder connected
- With ffmpeg or similar tools it can string the clips into a rough cut, make vertical versions, burn in captions or write an edit decision list
- See [what agentic video editing can do](/blog/agentic-video-editing)
### For social
- The MP4 and SRT are a starting point for short-form video
- Reframe to vertical and style captions in your editor or with an agent
::end

What an agent makes with the clips is its work with other tools, and you review it.

> Prompt: In ~/Exports/Harbor selects, read Grain Clips.json and string the clips together with ffmpeg in the order listed. Combine the SRTs into one caption file timed to the string-out. Don't re-encode if you can avoid it, and tell me the running time.

## Clips with an agent

A connected agent can search dialogue across a source and read timed transcripts, then propose selects with recordings and timecodes. It doesn't add clips. You play each pick in Grain and choose **Add Clip** on the ones you agree with, then type the agent's In and Out timecodes into the clip editor if you want its exact range.

## Shortcuts

| Keys | What they do |
|---|---|
| {{Space}} | Play and pause |
| {{,}} {{.}} | Step back or forward one frame |
| {{I}} {{O}} | Mark the start and end of a range |
| {{⌘Return}} | Add the marked range as a clip |
| {{Esc}} | Cancel a range you're making or editing. Otherwise, leave the video |

Every shortcut in Grain is on one page: [keyboard shortcuts](/guides/keyboard-shortcuts).

## Controls at a glance

| Control | What it does |
|---|---|
| **Add Clip** on a suggested moment | Adds a clip covering that moment |
| **I** and **O**, then **Add Clip** | Adds a clip from your own in and out |
| **Edit Clip**, or double-click the clip | Opens the clip editor |
| Handles, or typed In and Out | Set the range in the clip editor |
| **Update Clip** / **Cancel** | Apply the change, or keep the clip as it was |
| **Remove Clip** | Removes the clip; the original and transcript stay |
| Undo | Restores a removed clip |
| **All** / **Clips** | Transcript with clips, or clips only |
| **Export Clips…** | Writes an MP4 and SRT per clip, plus `Grain Clips.json`, to a folder you choose |
