Edit Decision List (EDL)
An edit decision list (EDL) is a machine-readable document that describes a finished video as instructions rather than as pixels. It is an ordered list of events, and each event names a source (a tape reel, or a media file), an in and out point within that source's own clock, and the point in the finished program where those frames land. Because it records decisions and not picture, the same list can be re-applied to the original camera masters at full quality — a process called conforming — and the source material is never altered. Every non-linear editor maintains one internally; the .edl file, standardised by the CMX format that later systems copied, is simply the oldest way of writing it down.
What an EDL Looks Like
The reference serialisation is CMX 3600. It is a fixed-column text file, one line per event, and it is worth reading once because every later format is a reaction to its limits.
TITLE: EPISODE 04 ROUGH
FCM: NON-DROP FRAME
001 AROLL01 V C 01:12:04:11 01:12:18:03 01:00:00:00 01:00:13:16
* FROM CLIP NAME: A001_C012.MOV
002 BROLL01 V C 02:03:41:00 02:03:46:12 01:00:13:16 01:00:19:04
* FROM CLIP NAME: B004_C002.MOVRead at 24 fps, the frame field runs 00–23. Event 001 pulls 13 seconds and 16 frames out of reel AROLL01, starting at timecode 01:12:04:11 on that tape, and lays it at the very start of the program. Event 002 pulls five seconds and twelve frames from a different reel and butts it directly against the first — its record in is the previous event's record out, which is what makes this a hard cut with no gap.
The fields, left to right:
- Event number — sequential, and capped at 999 in CMX 3600. A feature-length cut routinely exceeds that, which is why long programs get split into reels before export.
- Reel name — 8 alphanumeric characters, a limit inherited from tape labels. Avid's dialect allows 32. Truncating a modern camera-card filename into eight characters is the single most common way a conform breaks.
- Channel code —
Vfor video,A1–A4for audio,AAorAA/Vfor combinations. Four audio channels is the ceiling, which is why anything with a real mix leaves through AAF instead. - Transition —
Ccut,Ddissolve,Wwipe,Kkey — followed by a frame count when the transition has a length. There is no field for anything else. - Four timecodes — source in, source out, record in, record out. The first pair addresses the tape; the second pair addresses the finished program.
Two details trip people up. Out points are exclusive: the out point is the first frame not included, so a shot whose last visible frame is 01:00:03:15 is written out at 01:00:03:16, and duration is out minus in with no correction. And the FCM header declares drop-frame or non-drop-frame timecode — a bookkeeping convention that exists only because NTSC video runs at 29.97 fps rather than 30, so counting 30 labels per second drifts about 3.6 seconds per hour against the clock. Get FCM wrong and every timecode in the file is quietly, uniformly late.
The Two Clocks
The single idea worth taking away from the format is that an EDL always tracks two independent clocks, and confusing them is the root of most editing bugs, human or machine.
Source time is the footage's own clock. It never changes. The moment you flubbed the pricing line sits at the same source timecode forever, no matter how the edit is rearranged around it. Record time — also called program or output time — is the clock of the finished piece, and it moves under you constantly: cut four seconds out of the intro and every subsequent frame in the program shifts four seconds earlier while its source time stays exactly where it was.
This is why a transcript is a source-time artefact and a caption is an output-time artefact, why a music cue placed "at 1:30" is ambiguous until you say which clock, and why any tool that stores decisions in output time breaks the moment an earlier cut changes length.
Where It Came From
The EDL solves a problem that no longer exists, which is why its shape looks so strange now. Videotape editing was linear: you dubbed shots from one machine to another, in order, and each dub cost a generation of picture quality — so recutting the middle meant re-recording everything after it, on suites billed by the hour. The industry's answer was to split the job. Offline editing made the creative decisions cheaply against low-quality copies; online editing then rebuilt them once, at full quality, from the camera masters. The only artefact that had to travel between the two stages was the edit decision list.
CMX Systems, a joint venture of CBS and Memorex, built the first computerised version in 1971 with the CMX 600, which stored a rough cut on disk packs and emitted its decisions on punched paper tape. A companion CMX 200 read that tape and drove several videotape machines to auto-assemble the finished program. The later CMX controllers gave the world the text format still called CMX 3600, and it became the lowest common denominator that every rival system agreed to read.
Non-linear editors then dissolved the offline/online split by making every edit instantaneous and every source random-access — but they did not abandon the EDL. They internalised it. What a modern NLE calls a sequence is a decision list with a graphical front end; the timeline you drag is a rendering of the document, not the thing itself. That is precisely why editing is non-destructive: the software never rewrites your media, it rewrites the list. Where the list needs to leave the building carrying more than cuts and dissolves, the modern interchange formats are AAF, Final Cut Pro XML and OpenTimelineIO.
Why This Is a Prerequisite for Letting an AI Edit
Handing an autonomous agent your only copy of a shoot would be an unreasonable ask if the agent worked on pixels. Every argument for giving one editing authority runs through the decision list.
A mistake is a version, not a loss
An agent will misread a request sometimes — that is true of human editors too. On a decision list the damage is bounded by construction: the media was never touched, so the wrong edit is a document you discard. "Put back the bit you cut" is a real operation rather than a plea.
You can diff a document; you cannot diff intent
If the edit is data, a server can compare the list before and after a turn and check what the agent claimed against what measurably changed. That is the only mechanical basis for an honesty guarantee. If the agent rewrote pixels, its report would be unauditable — you would be trusting a narrator instead of reading a receipt.
Deciding is cheap; rendering is expensive
Writing an entry costs microseconds. Producing the frames it implies costs compute measured in minutes. An agent that edits the list can plan, revise and self-correct many times per render, and can render a low-cost proxy to look at before committing to a full-quality pass.
Later edits do not invalidate earlier ones
Because decisions are anchored to source time, changing something in the middle does not force everything downstream to be recomputed. That is what makes a conversational workflow — "actually, keep that take" — possible at all.
A Scenario Where It Shows
You record a 42-minute podcast in one take. You ask for the dead air and the filler words removed. That single request rewrites the keep list into several hundred surviving ranges — the program is now maybe 34 minutes, and every one of those ranges still points into the untouched original.
Then you watch it and say: the first two minutes drag, start at the question instead. In a pixel-rewriting world you now own a rendered 34-minute file and a second editing problem. On a decision list, one range's start moves. Captions re-time because they are derived from word timestamps in source time, not baked into output time. The music re-fits because its length was expressed as "fit the program", and the program is now shorter. The zoom you asked for on minute nine is still on the same spoken sentence, because it was anchored to that sentence and not to 09:12.400 of a file that no longer exists.
Then you change your mind again and want ninety seconds of the intro back. It is still there. Nothing was ever deleted — a range simply stopped being listed.
Common Misconceptions
"An EDL is a file format."
An EDL is a data model. CMX 3600 is one serialisation of it, and there are several mutually incompatible others — Grass Valley, Sony, Avid dialects — differing on reel-name length, timecode rate and audio channel notation. Every non-linear editor holds an EDL in memory whether or not it can write the file.
"An EDL contains the video."
It contains no picture and no audio whatsoever — an entire feature's EDL is a text file measured in kilobytes, not gigabytes. It is a set of pointers. If the media it names is missing, renamed, or has different timecode than it did when the list was written, the list is worthless. Non-destructive does not mean indestructible.
"An EDL can carry the whole edit."
CMX 3600 carries cuts, dissolves, wipes, keys and up to four audio channels. It cannot carry titles, multi-layer compositing, effect parameters, keyframes, speed ramps or colour decisions. Anyone who has sent an EDL expecting their graded, titled cut to arrive intact has learned this the expensive way. That gap is exactly the reason AAF, FCPXML and OpenTimelineIO exist.
"The out point is the last frame of the shot."
It is the first frame after it. Out points are exclusive, so an event lasting exactly one second at 24 fps spans 01:00:00:00 to 01:00:01:00 and the last frame you see is 01:00:00:23. Assume inclusive and every duration you compute is one frame too long.
"A dissolve is one event."
It is two lines sharing one event number: a zero-length cut of the outgoing shot to itself, then a D line for the incoming shot with the transition length in frames. That shape is a fossil of the tape room, where overlapping frames physically required a second playback machine — the B roll. The term survived the machine.
"EDLs are obsolete."
The file is legacy interchange. The concept is load-bearing in every editor shipped this decade, and it is what makes AI editing tractable at all: an agent can read, reason about and rewrite a list of decisions in a way it fundamentally cannot do to a compressed video stream.
How This Works in Valmera
Valmera is an agentic video editor, and its agent edits an edit decision list. It has no way to touch pixels — a separate renderer compiles the document into video. The timeline and the transcript in the studio are two views onto that same document, not two separate things to keep in sync. Concretely:
- The document is JSON, and time is seconds as floats — not timecode. Uploads arrive at whatever frame rate the camera or phone chose, so a float second is the honest common unit; frame rounding happens once, at render.
- The core field is a keep list of
[start, end]ranges in source seconds. Captions, music, sound effects, inserted clips, zooms, on-screen text, overlays, speed spans, per-range volume and effects all hang off it. - The two clocks are explicit. The transcript, the keep list, volume and speed live in source seconds; where something lands in the finished program is output seconds. The agent is required to say which one it means, for the same reason CMX kept source and record timecode in separate columns.
- Every write appends a numbered version rather than overwriting the last, so the history is recoverable and anything cut can be restored by asking.
- Previews render from a proxy; the export renders from your original file at source quality. The decision list is resolution-agnostic, which is the whole point of conforming.
- The agent's replies are checked against the document. Because the change is data, the server verifies what it says it did against what it actually wrote — it cannot claim an edit that is not in the list.
The honest limit: Valmera's EDL is its own JSON, readable through the agent's get_edl tool. There is no .edl, AAF, FCPXML or OpenTimelineIO import or export, so Valmera is not an offline stage that conforms into Premiere or Resolve — the deliverable is a rendered MP4. Captions are burned in rather than exported as SRT or VTT, for the same reason. If your pipeline needs to hand a cut list to a finishing suite, that stage belongs in a traditional NLE.
Related Terms
Other entries in the Valmera video editing glossary that touch this one:
- Word-level timestamps — The clock an agent snaps cut points to, so a range is a word boundary and not a guess.
- Silence detection — The measurement that turns dead air into candidate ranges to drop from the keep list.
- Proxy editing — Editing against a light stand-in and conforming the decisions back to the originals.
- B-roll — The term is a fossil of the EDL: the second tape reel a dissolve physically needed.
- Jump cut — What you get when two non-adjacent source ranges land next to each other in the program.
- J-cut and L-cut — Audio and video events with deliberately different in points — two tracks, one edit.
- Text-based video editing — Editing the transcript and letting the tool rewrite the underlying list.
- Shot detection — Finding the cuts already inside a source, which is the inverse of writing new ones.
Frequently Asked Questions
See a Decision List Being Edited
Upload real footage, describe the edit in plain English, and watch the agent rewrite the list instead of your file. 50 free credits, no card.
Start free →