Convert Full Range to Limited Range Video with FFmpeg

This article provides a straightforward guide on how to convert a video’s color range from full (0-255) to limited (16-235) using FFmpeg. You will learn the exact command-line arguments and video filters required to scale the pixel values and write the correct metadata, ensuring your video displays properly on standard broadcast and TV screens.

The Conversion Command

To convert both the actual video stream data (pixel values) and the container metadata from full range to limited range, use the following FFmpeg command:

ffmpeg -i input.mp4 -vf "scale=out_range=limited,format=yuv420p" -color_range tv -c:v libx264 -crf 18 -c:a copy output.mp4

Parameter Breakdown

Changing Metadata Only (No Re-encoding)

If your video pixels are already limited to 16-235, but the file is incorrectly flagged as full range (0-255), you can fix the metadata flag instantly without re-encoding the video:

ffmpeg -i input.mp4 -c copy -color_range tv output.mp4

Using -c copy bypasses the rendering process, meaning this command completes almost instantly and results in zero quality loss.