FFmpeg Cut Video: Difference Between -t and -to

Trimming videos is one of the most common tasks in FFmpeg, and it is primarily done using the -t and -to options. While both options define where a video cut should end, they calculate this endpoint differently. This article explains the exact differences between -t and -to, how they interact with the start time (-ss), and how to use them with clear examples.

The -t Option: Cut by Duration

The -t option specifies the duration of the output clip. When you use -t, you are telling FFmpeg exactly how many seconds (or hours, minutes, and seconds) the final video should last, starting from your split point.

Syntax and Example

ffmpeg -ss 00:01:00 -i input.mp4 -t 30 -c copy output.mp4

In this example: * -ss 00:01:00 starts the cut at the 1-minute mark. * -t 30 instructs FFmpeg to record for 30 seconds. * The resulting video will play from 00:01:00 to 00:01:30 of the original video.

You can also write the duration in HH:MM:SS format, such as -t 00:00:30.


The -to Option: Cut to a Specific Timestamp

The -to option specifies the exact stop time on the timeline where the cut should end. Instead of defining how long the video should be, you define the exact second or timestamp where FFmpeg should stop rendering.

Syntax and Example

ffmpeg -ss 00:01:00 -i input.mp4 -to 00:01:30 -c copy output.mp4

In this example: * -ss 00:01:00 starts the cut at the 1-minute mark. * -to 00:01:30 instructs FFmpeg to stop cutting at the 1-minute and 30-second mark of the original video. * The resulting video will be 30 seconds long.


Key Differences and Behavior with -ss

The way -t and -to behave depends heavily on where you place the start time option (-ss) in your command.

1. When -ss is placed AFTER the input (-i)

If you place -ss after the input file, FFmpeg decodes the input first. * -t acts as the duration. * -to acts as an absolute timestamp of the original input file.

Recommended Command for accurate -to cuts:

ffmpeg -i input.mp4 -ss 00:01:00 -to 00:01:30 -c copy output.mp4

2. When -ss is placed BEFORE the input (-i)

If you place -ss before the input file, FFmpeg seeks to that point immediately, resetting the timeline of the input file so that your start point becomes 00:00:00. * -t still acts as the duration (no change in behavior). * -to behaves exactly like -t because the timeline has been reset. If you set -ss 10 and -to 15, FFmpeg will cut 15 seconds of video, ending at the 25-second mark of the original file.

Behavior Comparison Table:

Option Command Structure Resulting Video Length
-t ffmpeg -ss 10 -i input.mp4 -t 15 ... 15 seconds (ends at 25s mark)
-to ffmpeg -i input.mp4 -ss 10 -to 15 ... 5 seconds (ends at 15s mark)
-to (Reset) ffmpeg -ss 10 -i input.mp4 -to 15 ... 15 seconds (ends at 25s mark)