← Home
HOW-TO

Published · Updated

How to Edit Video With Claude

Claude cannot open or render a video file by itself. It has no decoder, no audio path and no renderer, and a Claude conversation does not accept video formats as uploads. What it can do is reason about an edit — read a transcript you paste, decide which sentences belong in the cut, and write you a timestamped cut list or an ffmpeg command. And when it is given tools that hold the footage, it can perform the edit end to end and hand you a finished MP4.

There are three levels, and most of the confusion online comes from answering for one of them while the reader meant another. This page covers all three: Claude with no tools, Claude with a shell, and Claude with a video editing MCP server connected. Setup steps and honest limits for each. If you want the positioning argument rather than the instructions, that is the Claude video editor page.

Give Claude a Real Video Editor

Free Valmera account, 50 credits, no card. One paste and one sign-in to connect it to Claude.

Create a free account →
See pricing →

Where the Video File Actually Is

The difference between the three levels is not how clever the model is. It is one structural fact: whether anything in the system can decode your footage, and whether the model can see what came out. Follow the file.

Where the video file sits at each of the three levelsAt level one the video stays on your disk and nothing about it reaches Claude except text you paste by hand, so no edit can be performed. At level two Claude Code has a shell on your machine, decodes the file with ffmpeg and writes an output file, but only sees stills it extracts on purpose. At level three the file lives on a video editing server reached over MCP; the model sends tool calls and receives text and requested frames, and the server performs the edit and exports from the original.1 · NO TOOLS2 · A SHELL3 · MCPCLAUDEYOUR DISKvideo.mp4CLAUDE CODEYOUR DISKvideo.mp4 + ffmpegCLAUDEEDITING SERVERvideo.mp4 + index + EDLyou paste textby handstills it extracts↑ ffmpeg commands ↓transcript · frames↑ tool calls ↓nothing decodesthe file→ a plan, not an editffmpeg decodes it,the model is blind→ an edit it cannot checkthe server decodes itand shows the model frames→ an edit it verifies

Read the bottom row. At level 1 the model is reasoning about a video it has never encountered. At level 2 the file is genuinely being decoded, but by a program the model is issuing commands to and cannot watch. Only at level 3 does the same system both perform the edit and show the model what the edit produced — which is why it is the only level where a wrong result gets fixed without you noticing it first.

Claude aloneClaude Code + ffmpegClaude + Valmera (MCP)
Read a transcript you paste
Open the video file itselfYes — via a shell it controls
Hear the audio / measure silencesYes — if ffmpeg and an ASR model are installed
Get word-level timingsOnly what you pasteFrom a local transcription model
See frames of the footageOnly stills you pasteYes — extracted stills it re-reads
Perform the cutYes — as ffmpeg commands
Look at the render it just madeOnly if it extracts stills again
Hand you a finished MP4Yes — on your own machine
Works in the Claude app (no terminal)

Level 1 — Claude With No Tools at All

This is the level almost every blog post about "editing video with Claude" is actually describing, and it is more useful than its reputation. Claude is good at the part of editing that is reading: working out what an hour of talk is arguing, which sentences carry it, which are repetition, and what order the surviving pieces should go in. That is editorial judgement, and it is the expensive half of a rough cut.

What it can genuinely do with nothing but the chat window:

  • Turn a pasted transcript into a keep list. Ask for the ranges to retain rather than the ones to delete — a keep list is what an editor actually builds, and it is far harder for a model to produce a self-contradicting one.
  • Write a shot list or a script before you shoot, including B-roll you will need to cover the joins.
  • Find the moment you half-remember. Paste the transcript and describe it. This is a search problem, and it is the thing Claude is unambiguously better at than scrubbing.
  • Write the ffmpeg command. Trim, concatenate, normalise loudness, burn in a subtitle file, re-encode for a platform. It knows the flags.
  • Restructure a transcript into a stringout order — which answer opens, which is the payoff, what gets dropped.

The prompt shape that works is a keep list with reasons, because the reasons are checkable and a bare list of numbers is not:

YOU     Here is a timestamped transcript of a 22-minute talk.
        Give me a KEEP list for a 6-minute cut: ranges to
        retain, in order, one line of reasoning each. Do not
        invent timestamps that are not in the transcript.
        Flag anywhere a keep starts or ends mid-sentence.

CLAUDE  KEEP  00:14 – 00:48   the claim, stated cleanly
        KEEP  02:31 – 03:52   the only concrete example
        KEEP  05:10 – 05:26   ⚠ starts mid-sentence ("...and that
                              is why") — extend back to 05:04
        KEEP  11:02 – 13:40   the objection and the answer
        KEEP  20:55 – 21:30   the close
        DROP  03:52 – 05:10   restates 02:31 in weaker terms
        ...

The limits at level 1, specifically

  • It cannot execute any of it. The output is a document. Something else has to make the cuts.
  • It is only as precise as the timestamps you pasted. A transcript timed per sentence yields cuts timed per sentence, and cuts that do not land on word boundaries clip syllables. This is the single biggest reason level-1 cut lists sound wrong when someone applies them.
  • Timecode arithmetic is a weak point. Sums of durations, frame-to-second conversions and running totals are exactly the kind of thing a language model gets confidently wrong. Check them, or use a timecode calculator.
  • It cannot hear the delivery. A transcript does not record the pause before the good line, the take where the laugh lands, or the moment the audio clips. Two identical sentences on the page can be a usable take and an unusable one.
  • It cannot see anything. Framing, whether someone walked out of shot, whether the screen share was on — all invisible.

Level 1 produces a plan. Treat it as one, and it is a good one. Ask it for a finished video and you will get a confident description of a video that does not exist.

Level 2 — Giving Claude the File

The obvious next move is to upload the video to the conversation. It does not work, and the reason is more basic than model capability: the upload is refused by file type. Checked on 5 August 2026 against Anthropic's own documentation, this is what a Claude conversation accepts.

KindAcceptedNotes
DocumentsPDF, DOCX, CSV, TXT, HTML, ODT, RTF, EPUB, JSON, XLSXXLSX requires code execution enabled
ImagesJPEG, PNG, GIF, WebPUp to 8000 × 8000 pixels
VideoNoneMP4, MOV, MKV and WebM are not on the list
AudioNoneNo WAV, MP3 or M4A
Size500 MB per file, up to 20 files per chatPDFs are additionally capped at 1000 pages

The developer platform is the same answer by a different route. The Files API takes uploads up to 500 MB, but a file is only usable through a content block, and the block types are document (PDF and plain text), image (JPEG, PNG, GIF, WebP) and container_upload (datasets for the code execution sandbox). There is no video block. If a page tells you to drag an MP4 into Claude, it was written from imagination.

What you can put in the conversation instead

Everything useful about a video that is not the video. Export a transcript from any transcription tool and paste it as .txt. Export an SRT and rename it .txt — it is text with timings, which is exactly the form Claude works best in. Screenshot the frames you want an opinion on and upload those as PNG; image analysis is native and good. This is a real workflow, and it is level 1 with better inputs rather than a new level.

Claude Code: the level that does decode the file

Claude Code is different in one decisive way — it runs on your machine with a shell. It can call ffprobe to read the container, run a locally installed transcription model to get timings, write and execute ffmpeg commands, and leave an output file on your disk. That is a genuine edit, performed by Claude, on real footage. People do build pipelines this way and they work.

It can also partly see. Claude Code reads images, so it can extract stills from the source or from its own render and look at them:

ffmpeg -ss 62 -i out.mp4 -frames:v 1 /tmp/check_62.png
ffmpeg -ss 310 -i out.mp4 -frames:v 1 /tmp/check_310.png
# then read both back as images

That closes the loop by hand, at three moments it happened to choose, on a render it has to produce in full first. It is the right instinct and the wrong ergonomics.

The limits at level 2, specifically

  • The model is outside the preview loop. A human editor cuts, plays, adjusts, plays. Claude Code cuts, renders, and waits for you to describe what is wrong. Every iteration that you do not personally review is blind.
  • ffmpeg is destructive. It writes and overwrites real files. There is no version history and no restore — an undo is whatever copy you remembered to keep. Handing an autonomous agent the only copy of a shoot is a bad idea at this level in a way it is not at level 3.
  • You are assembling the toolchain. ffmpeg, a transcription model, and whatever does scene detection all have to be installed, versioned and working. The agent will confidently write a command for a filter your build does not have.
  • Paths and long jobs are where it actually breaks. Assumptions about file locations, and a forty-minute render inside a session, are the two failure modes people report most.
  • It needs a terminal. None of this exists in the Claude app on your phone.

None of that makes the ffmpeg route wrong — for deterministic, repeatable conversions it is excellent, and it is free. It makes it the wrong shape for editorial work, where the whole job is looking at the result and reacting. The comparison in full is a page of its own.

Level 3 — Connect a Video Editor Over MCP

The Model Context Protocol is an open standard for handing a model a real toolset. For video it resolves the problem exactly: the server holds the footage and does the pixels, the model decides what to call. Nothing about the file has to fit through the conversation, which is why a three-hour recording is no harder than a three-minute one.

Valmera publishes its complete editing toolset this way — 108 tools, 97 editing and 11 session — over streamable HTTP with OAuth 2.1, dynamic client registration and PKCE. It is the same registry Valmera's own in-house agent uses, served verbatim rather than re-declared as a subset, so there is no second tool list that can drift out of step.

What crosses between the Claude session and the editing serverYour Claude session holds the conversation, the tool calls it makes and the results it receives — text, and the specific frames it asked for. The editing server holds the original file, the fast preview proxy, the index of transcript, silences, shots and frame tiles, the edit decision list and the renderer. Only tool calls cross one way and text plus requested frames cross the other. The video itself never enters the model's context.YOUR CLAUDE SESSIONTHE EDITING SERVER· your sentence· the tool calls it chooses· tool results, as text· the frames it asked for· your Claude subscription pays for the thinking· the ORIGINAL file, untouched· a fast proxy, for previews only· the index — transcript, silences, shots, labeled frame tiles· the edit decision list· the renderer and the exportertool callstext + framesMCP / HTTPSThe video never crosses this line. That is not a privacy flourish —it is the reason a 3-hour file is no harder to edit than a 3-minute one,and the reason the export can come from the original rather than a copythat has been through the conversation.

The setup, exactly

In the Claude app: Settings → Connectors → Add custom connector, paste the endpoint, sign in with your Valmera account, press Allow. There is no client id, no secret and no token to copy — Claude discovers the authorization server from the endpoint and registers itself.

https://entrepreneur-bot-backend.onrender.com/mcp

In Claude Code, run the same OAuth flow or attach a bearer token minted from your account:

claude mcp add --transport http valmera \
  https://entrepreneur-bot-backend.onrender.com/mcp \
  --header "Authorization: Bearer vlm_mcp_..."

Both paths reach the identical registry. Configs for Cursor, VS Code, Cline, Windsurf, Zed, Continue, Goose and the stdio-only clients that need the mcp-remote bridge are on the setup page, each marked with what was verified and when.

Getting the footage in — the part with a real catch

Worth knowing before you try it. upload_start hands back a presigned URL that the client has to push the bytes to itself. Claude Code can do that — it has a shell and curl — so from Claude Code you can point at a local file and it will genuinely upload it. The Claude app cannot: it has no access to your filesystem. From the app there are two routes that do work, and both are one sentence:

  • Paste a link. fetch_url pulls the media in server-side — a direct file link from Drive, Dropbox or a CDN, or a page link from YouTube, TikTok, Vimeo or SoundCloud.
  • Upload it in the studio first, then tell Claude to open that project. It calls list_projects and open_project and picks up the finished index.

A real conversation

What one turn looks like once it is connected. Every tool named is real and documented on the tool reference; arguments are abbreviated and the numbers are one illustrative run, not a benchmark.

YOU     Open my "Q3 recap" project. Cut the dead air and the
        ums, karaoke captions, chill music under my voice,
        make it a Reel.

CLAUDE  list_projects()                  → 4 projects
        open_project(id=312)             19m04s · indexed
        find_silences(min_len=0.35)      84 pauses, 3m12s total
        get_words(0, 1140)               word-level timings
        cut_silences()                   19m04s → 15m52s
        remove_filler_words()            61 removed → 15m31s
        add_captions(preset="karaoke")   timed against the KEPT
                                         transcript, not the raw one
        list_music_library(mood="chill") candidate tracks
        add_music(duck=true)             fitted to 15m31s
        set_frame("9:16", mode="crop")
        auto_reframe()                   crop aimed at the speaker
        render_preview()                 → v4
        look_at(output_times=[0.4, 62, 310, 900])

        ← here Claude reads its own frames, and finds this:

        set_caption_style(position="middle")
        render_preview()                 → v5

CLAUDE  "Cut 3m12s of pauses and 61 filler words — 19m04s down
         to 15m31s. Captions were sitting over your chin once
         the crop went vertical, so I moved them up. Music
         ducks under speech. Preview is v5 — want it looser?"

YOU     Looser cuts, and lose the music under the first 20 seconds.

CLAUDE  ... (works from the edit it already has, not from scratch)

YOU     Good. Export it.

CLAUDE  export_final()                   job queued
        wait_for_job(...)                rendered from the ORIGINAL
        download_url()                   → https://...mp4

Three things in that trace are the point. The order was not in the request: get_words runs before any cut because no Valmera tool accepts a timestamp the model invented; captions come after the cuts, because a caption timed against the raw recording drifts by the length of everything removed before it; music is fitted last because its length is a function of an edit that did not exist when you typed. Claude derived that sequence.

Then look_at. Claude rendered, looked at real frames of what it produced, found a caption over a chin that nothing in the transcript or the timeline could have predicted, fixed it, and rendered again — before it said anything to you. That is the loop level 2 cannot close.

And the reply itself is checked. Every agent reply is verified server-side against the edit decisions actually recorded, so "3m12s of pauses, 19m04s down to 15m31s" is a read of the edit decision list rather than a sentence the model composed. A model reporting on its own work has an obvious failure mode; this is the fence around it.

How to Edit a Video With Claude (MCP Setup)

  1. 1
    Create a free Valmera account
    Sign up at valmera.io with email or Google. It is free, needs no card, and comes with 50 one-time credits — enough for several real agent turns on your own footage.
  2. 2
    Add the connector in Claude
    In the Claude app open Settings → Connectors → Add custom connector and paste https://entrepreneur-bot-backend.onrender.com/mcp. There is nothing else to fill in: no client id, no secret, no token. In Claude Code, run `claude mcp add --transport http valmera https://entrepreneur-bot-backend.onrender.com/mcp` or attach a bearer token minted from your account.
  3. 3
    Sign in and press Allow
    Claude discovers the authorization server from the endpoint, registers itself via dynamic client registration, and opens a Valmera sign-in and consent page. Sign in, review what you are granting, press Allow. Claude now has 108 tools — 97 editing, 11 session.
  4. 4
    Get the footage into a project
    From Claude Code, point at a local file and it uploads the bytes itself. From the Claude app, paste a link (Drive, Dropbox, a CDN, YouTube, TikTok, Vimeo) and it fetches server-side, or upload in the Valmera studio first and tell Claude to open that project. Uploads can be up to 14 GB or 3 hours, in MP4, MOV, MKV or WebM. Indexing runs once — word-level transcript with speaker labels, silences, shot boundaries and labeled frame tiles — and every later edit reuses it.
  5. 5
    Describe the outcome, not the steps
    One sentence: "cut the dead air and the ums, add karaoke captions, put chill music under my voice, and make it a Reel". Claude sequences the dependent operations itself — timings from tools rather than guesses, captions after cuts, music fitted to the finished length.
  6. 6
    Judge the preview, then export
    Claude renders a preview, looks at frames from it, and fixes what it finds before replying. Correct in plain English — "looser cuts", "bigger captions", "different track" — and each correction works from the edit it already has. When it is right, ask it to export: the final render comes from your ORIGINAL file at source quality, and Claude returns a download link.

Connecting takes about two minutes and is done once. Indexing a long upload takes a while and shows progress; every request after it reads the index and is fast.

Five Things That Trip People Up at Level 3

  • You cannot edit the same project from the studio and from Claude at once. It is refused in both directions rather than silently interleaved, because two agents writing one EDL corrupts it. Every MCP call writes an activity row, so the studio shows the outside model editing live.
  • Renders and exports return a job id, not a result. Claude calls wait_for_job and waits. This is deliberate: the alternative is a fabricated completion, and a model that reports "done" on a render that has not started is worse than one that waits.
  • Previews are not the deliverable. They render from a smaller proxy because they have to be fast. The export replays the decision list against your original file, so export quality does not depend on how many turns it took to get there.
  • A tool with an unconfigured backing service is hidden, not broken. It disappears from the registry rather than being exposed and failing when Claude calls it, so a live session can list slightly fewer than 108 tools.
  • Ask for one deliverable at a time. Ten Shorts from one recording is ten directed requests, not one batch. This is a genuine strength of the automated clippers and a genuine weakness here.

The errors worth recognising during setup — an expired consent, a stale connector, a client that needs the bridge — are collected on the connect Claude guide.

What Still Cannot Be Done, at Any Level

Connecting an editor replaces the model's limits with the editor's. Here are Valmera's, so you can find out now rather than three turns in. Claude will be told the same thing by the tool — out-of-scope requests are refused rather than faked.

  • No text-to-video. Valmera edits footage you have. It can splice in short generated clips and stills, but there is no whole-video generation from a prompt. That is a different category.
  • No subtitle files. Captions are burned into the picture. No SRT or VTT import or export, and no chapter metadata.
  • No multi-cam. The EDL addresses one main video, not a bin of angles, so a three-camera shoot has to be one cut file before it arrives. A traditional NLE — Premiere, DaVinci Resolve, Final Cut — still wins on angle sync, node-based colour, keyframed compositing and motion tracking.
  • No true crossfade or dissolve, and no per-cut transition choice. One transition style applies across a video; hard cuts otherwise.
  • No audio restoration. No denoise or "studio sound", no per-speaker leveling, no separating music out of an already-baked track, no AI music generation. Loudness mastering, ducking and per-layer gain are there; repair is not.
  • No custom font uploads (12 families are bundled), no motion-tracked overlays or stickers, and no native mobile app — mobile browsers work.
  • No team surface. No seats, collaboration, share links, brand kits, or direct publishing to YouTube or TikTok. Export is a file you download and post yourself.
  • English is the best-tested transcription path. Other languages work; that one is the one with the most road behind it.

Free-plan exports carry a small Valmera mark and every export closes with a brief end card; paid exports carry no watermark at all, and previews are never marked on any plan. The export documentation has the detail.

Which Level You Actually Want

If the job is thinking — what should this video argue, which take is the honest one, what order do the pieces go in — level 1 is enough and costs nothing. Paste the transcript and ask for a keep list.

If the job is a deterministic conversion — re-encode a folder, normalise loudness, burn in a subtitle file you already have — level 2 is excellent and also free. Claude Code writes better ffmpeg than most people do, and for a repeatable transform the fact that it cannot watch the result matters much less, because the result is predictable from the command.

If the job is editorial and the result has to be looked at — cuts that need to feel right, captions that must not sit on a face, a crop that has to follow whoever is speaking — you need the level where the same system performs the edit and sees what it produced. That is what MCP buys, and it is the only one of the three where being wrong gets caught before you are the one who catches it. If your working environment is already a chat window, an editor your assistant can call is a different product from one you have to leave the conversation to open. We keep an honest comparison of every video editing MCP server, including where another one is the better answer, and a library of prompts that work once you are connected.

Frequently Asked Questions

Not on its own. Claude is a language model with no ability to open a video container, decode its frames, hear its audio or render a file, and video formats are not on the list of file types a Claude conversation accepts. What it can do alone is reason about an edit: read a transcript you paste, decide which sentences belong in the cut, and write you a timestamped cut list or an ffmpeg command. It can perform the edit in two situations — running in Claude Code, where it has a shell and can drive ffmpeg on your machine, or connected to a video editing MCP server, where a real editing engine does the work and Claude decides what to call. With Valmera connected over MCP, Claude has 108 tools and returns a downloadable MP4.
No. As checked on 5 August 2026, a Claude conversation accepts PDF, DOCX, CSV, TXT, HTML, ODT, RTF, EPUB, JSON and XLSX documents plus JPEG, PNG, GIF and WebP images, at up to 500 MB per file and 20 files per chat. No video container is on that list, and the Files API on the developer platform has no content-block type for video either — its types are document, image and container_upload. So the file is refused before any question about whether the model could understand it arises. What you can upload is what you derive from the video: a transcript as .txt, a subtitle file as .txt, or individual frames as PNG or JPEG.
Create a free Valmera account. In the Claude app open Settings → Connectors → Add custom connector and paste https://entrepreneur-bot-backend.onrender.com/mcp. Claude registers itself and opens a Valmera sign-in page; sign in and press Allow — there is no token to copy. Get the footage into a project: paste a link and Claude fetches it, or upload it in the Valmera studio and tell Claude to open that project. Then describe the edit in one sentence — "cut the dead air and the ums, add karaoke captions, chill music under my voice, make it a Reel". Claude sequences the tools, renders a preview, looks at the frames it produced, fixes what it finds, and exports an MP4 from your original file when you say go.
Yes, and this is the strongest thing it does with no tools at all. Paste a timestamped transcript and ask for the keeps rather than the cuts — a list of ranges to retain, with a one-line reason each. Claude is good at reading an hour of talk, working out what the argument is, and deciding which sentences carry it. Two cautions. It can only be as precise as the timestamps you pasted, so a transcript timed to the nearest sentence produces cuts to the nearest sentence and words will be clipped. And arithmetic over timecodes is a known weak point: check any total runtime it reports rather than trusting it.
Yes, with a real caveat. Claude Code has a shell, so it can run ffprobe on your file, transcribe with a locally installed model, write and execute ffmpeg commands, and hand you an output file. What it cannot do is watch the result. The loop a human editor runs is cut, play, adjust, play; Claude Code's loop is cut, render, and wait for you to tell it what is wrong — unless it extracts stills from its own output and reads them back as images, which works but is manual, slow and samples only the moments it thought to check. Everything is also destructive by default: ffmpeg writes a new file, and an undo is whatever you kept a copy of.
Only the frames it asks for. Valmera's vision tools let the model request specific moments from your video, from an uploaded clip or from the preview it just rendered, and it gets those frames as images with a faint tenths grid so it can read coordinates off them rather than guess. That is what makes "blur the username in the corner" or "end on the wide shot" land. The video file itself never enters the model's context — it stays on the editing server. That is not a privacy flourish, it is the only reason this works on a three-hour recording at all.
The model's limits are replaced by the editor's. Valmera does not generate a whole video from a text prompt — it edits footage you upload. No multi-cam sync, no SRT or VTT import or export (captions are burned in), no true crossfade or dissolve and no per-cut transition choice, no motion-tracked overlays, no custom font uploads, no audio denoise or per-speaker leveling, no AI music generation, no direct publishing to YouTube or TikTok, no team seats or share links, and one deliverable per request rather than a batch. Claude will be told so by the tool rather than being allowed to invent a call that does not exist.
Any Claude model that supports MCP tool use, in the Claude app (web and desktop) or in Claude Code. The two differ in how footage gets in: the Claude app cannot read a file off your disk, so it fetches from a link you paste or opens a project you uploaded in the studio, while Claude Code can push the bytes to a presigned URL itself with curl. Editing quality depends on both halves — the model plans, and the editor decides what is callable and refuses what would be wrong.
Over MCP, no. Every Valmera tool writes to an edit decision list rather than to pixels, so the original upload is never modified, each operation creates a new version, anything cut can be restored by asking, and the final export renders from the original file at source quality. In the Claude Code plus ffmpeg path the answer is different and worth taking seriously: ffmpeg overwrites and deletes for real, so work on a copy and keep the master somewhere the agent cannot reach.
Your Claude subscription covers the model, and a Valmera account covers the editing. Valmera is free to create and comes with 50 one-time credits and no card. Paid plans are Creator $30/mo (2,000 credits), Pro $50/mo (4,000) and Frontier $100/mo (10,000, on a stronger model), each opening with a 3-day free trial. Credits are charged in proportion to the AI work actually done, so a simple cut costs less than a full pass with captions, music and reframing. Free-plan exports carry a small Valmera mark; paid exports carry none, and previews are never marked.

Connect Claude to a Real Editor

50 free credits, no card required. Two minutes to connect, then ask Claude to cut your first video.

Create a free account →
See pricing →

Related Articles

Claude Video Editor
The positioning page: what Claude can and cannot do with video, and why only an agentic editor can be driven this way.
Connect Claude to Video Editing
The full MCP setup guide for the Claude app and Claude Code, including the errors worth recognising.
MCP Tool Reference
Every one of the 108 tools Claude gets once connected, what it does and what it refuses.
The ffmpeg Alternative
What changes when the model can see the result instead of writing a command and hoping.
Can ChatGPT Edit Videos?
The same question asked of the other assistant, and where the answers differ.