← Home
GLOSSARY

Published · Updated

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

Read 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 name8 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 codeV for video, A1A4 for audio, AA or AA/V for combinations. Four audio channels is the ceiling, which is why anything with a real mix leaves through AAF instead.
  • TransitionC cut, D dissolve, W wipe, K key — 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

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 is simply the oldest way of writing it down.
In the classic CMX 3600 form: a title line, a frame code mode line declaring drop-frame or non-drop-frame timecode, then one line per event. Each event line carries an event number, a reel name of up to 8 alphanumeric characters, a channel code (V for video, A1 through A4 for audio, or combinations such as AA/V), a transition code (C for cut, D for dissolve, W for wipe, K for key), a frame duration for that transition, and four timecodes: source in, source out, record in, record out. Comment lines beginning with an asterisk carry the human-readable clip name and locator markers. It contains no picture and no sound — the media has to exist somewhere else, under the names the list expects.
No, and the difference matters. A project file is the whole editing state in a vendor's own format: bins, multiple layers, effects with keyframes, colour work, audio processing, undo history. An EDL is a deliberately small, portable subset of that state — mostly which source range plays when. CMX 3600 caps out at 999 events, 8-character reel names and four audio channels, and carries no titles, no multi-layer compositing and no effect parameters. That narrowness is the point: it is the lowest common denominator every system can read. When you need the effects to survive the trip, the modern interchange formats are AAF, Final Cut Pro XML and OpenTimelineIO.
Because the out point is exclusive — it names the first frame that is not included, not the last frame that is. A one-second event at 24 fps running from 01:00:00:00 has an out point of 01:00:01:00, and the last frame you actually see is 01:00:00:23. This is the single most common source of off-by-one errors when reading an EDL by hand or writing a parser, and it is why an event's duration is simply out minus in with no correction term.
The .edl file is legacy interchange; the idea it encodes runs every editor made since. Non-linear editors are non-destructive precisely because they store a list of instructions over untouched media rather than rewriting the media itself, and colour and finishing workflows still round-trip EDLs because CMX 3600 is the one format everything reads. Where the edit carries effects, speed ramps or multi-layer work, AAF, FCPXML and OpenTimelineIO have replaced it. So the file is on its way out; the concept is not.
Three reasons, all structural. First, reversibility: an agent will occasionally get a request wrong, and if the edit were destructive that mistake would be permanent — with a decision list, the wrong version is just a version. Second, verifiability: because the edit is data, a server can diff the document before and after a turn and check the agent's claim against it. You cannot diff pixels for intent, but you can diff a list. Third, cost: deciding is cheap and rendering is expensive, so an agent can revise the document many times and render only when the document is right.
Valmera's agent edits a JSON edit decision list and never touches pixels; a renderer compiles that document into the actual video. The core field is a keep list of [start, end] ranges in the source's own seconds, and captions, music, sound effects, inserted clips, zooms, on-screen text, overlays, speed spans, volume and effects all hang off it. Every write appends a new numbered version rather than overwriting the last, so any earlier state is recoverable and anything cut can be restored. Previews render from a proxy; the final export is rendered from the original uploaded file at source quality.
No. Valmera's edit decision list is a JSON document readable through the agent's get_edl tool, but there is no .edl, AAF, FCPXML or OpenTimelineIO import or export, so Valmera is not an offline step that conforms into another NLE. The deliverable is a rendered H.264 MP4 from the original file. If your workflow requires handing a cut list to a finishing suite, use a traditional NLE for that stage.

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 →
See pricing →

Related Articles

Agentic Video Editor
The category page: what it means for the agent, rather than you, to be the one holding the tool.
Timeline & Transcript
The two visual views onto the same decision list — scrub it, or read it as text.
MCP Tool Reference
Every tool that writes to the edit decision list, what it does, and what it refuses.
Cuts, Silence & Filler Removal
How ranges leave the keep list, and how to put any of them back.