Editorial Toolkit › Convert an EDL to OpenTimelineIO

How to convert an EDL to OpenTimelineIO (and back)

Guide · Updated 6 July 2026

The CMX3600 EDL is the oldest lingua franca in editorial - a plain-text list of cuts that virtually every system can read. OpenTimelineIO (OTIO) is the modern one: an open, JSON-based interchange format from the Academy Software Foundation that pipelines, conform tools and Python scripts speak natively. Sooner or later you need to move a cut from one to the other. Here is what actually happens when you do, and how to do it without installing anything.

What each format carries

An EDL is deliberately minimal. Each event has an edit number, a reel/source name, source in/out timecodes and record in/out timecodes, all on a single track of straight cuts. Anything richer - a second video track, effects, per-clip metadata - either falls away or gets flattened. That simplicity is why EDLs are so portable, and also why they are lossy.

OTIO is the opposite: a structured timeline that can hold multiple tracks, transitions, markers, gaps and arbitrary metadata, serialised as readable JSON. When you convert an EDL into OTIO you are promoting a flat list into that structure, so nothing in the EDL is lost - but the OTIO you get is only as detailed as the EDL was. Converting the other way, from a rich OTIO back to an EDL, is where you should expect to shed anything the EDL can't represent.

Rule of thumb: EDL → OTIO preserves everything the EDL held. OTIO → EDL keeps a single video track of cuts and drops the rest. Convert in the direction your downstream tool needs, and keep the original.

The frame-rate gotcha

An EDL's timecodes only make sense at a known frame rate, and the file does not always declare one. If you interpret a 25 fps EDL as 24 fps, every record position drifts. Before you convert, set the frame rate to match the sequence the EDL came from. Drop-frame rates (29.97 and 59.94) need special care - see our drop-frame vs non-drop guide for why the semicolon in 01:00:00;00 matters.

Convert it in your browser

Because both EDL and OTIO are text, you don't need Resolve, Hiero or a Python environment to move between them. Editorial Toolkit does it locally:

  1. Open the free converter.
  2. Set the frame rate to match your EDL's source sequence.
  3. Paste the EDL text, or load the .edl file. The format is auto-detected.
  4. Click OTIO to convert, then Copy or Download the .otio.

To go back, paste the .otio JSON and click EDL. Everything happens on your machine - the cut is never uploaded, which matters when the timeline is under NDA.

Sanity-check the result

After any conversion, verify three things: the event count matches, the first and last record timecodes line up, and the frame rate is what you expected. Editorial Toolkit's built-in cut inspector lists every event with its clip name, record position and duration so you can eyeball this in seconds before handing the file on.

When you need more than a conversion

Converting formats is a one-off task. If you are conforming a cut against rendered shots, comparing two turnovers, or tracking delivery across a team, that is ongoing work. Cutlist Tracker reads these same formats (EDL, OTIO and FCPXML) and treats the imported cut as your shot list - running a conform check, a cut-diff between versions and a per-department delivery matrix. Use Editorial Toolkit to convert; step up to Cutlist Tracker to track a whole show.

Convert a cut now Explore Cutlist Tracker →