Disable Edit Lists in FFmpeg MP4 Muxer

This article explains how to disable edit lists in FFmpeg when outputting to MOV or MP4 formats. You will learn the specific -movflags parameters required to prevent the creation of edit lists, how to handle negative timestamps, and how to combine these with other streaming-optimization flags like omit_tfhd_offset for maximum player compatibility.

The Core Command to Disable Edit Lists

By default, FFmpeg’s MP4 and MOV muxer writes edit lists (elst atoms) to handle video streams with B-frames or audio streams with encoder delay. This ensures perfect audio-video synchronization but can cause playback compatibility issues with older hardware players, browsers, or specific video editing software.

To disable edit lists, use the -movflags -use_editlist option in your FFmpeg command:

ffmpeg -i input.mkv -c:v libx264 -c:a aac -movflags -use_editlist output.mp4

The minus sign (-) directly preceding use_editlist explicitly disables the flag, which is otherwise enabled by default.

Fixing Timestamp Issues with avoid_negative_ts

When you disable edit lists, you may encounter synchronization issues or blank frames at the beginning of your video because of negative presentation timestamps (PTS) caused by B-frame reordering.

To resolve this without edit lists, pair -movflags -use_editlist with the -avoid_negative_ts make_zero option. This shifts all stream timestamps so that the video starts precisely at zero:

ffmpeg -i input.mkv -c copy -avoid_negative_ts make_zero -movflags -use_editlist output.mp4

Disabling Edit Lists in Fragmented MP4s (fMP4)

If you are packaging video for DASH or HLS streaming using fragmented MP4s, you may also want to use the -movflags omit_tfhd_offset flag. This flag reduces overhead by omitting the absolute base data offset in tfhd atoms, which is critical for seamless chunk playback.

You can chain multiple movflags together using a plus (+) or minus (-) prefix:

ffmpeg -i input.mp4 -c copy -movflags -use_editlist+omit_tfhd_offset+frag_keyframe output.mp4

In this command: * -use_editlist disables the edit list generation. * +omit_tfhd_offset optimizes the track fragment headers for web streaming. * +frag_keyframe fragments the output at keyframe boundaries.