Skip to content

Trim or Cut a Video Without Re-encoding on Windows

Trim or cut a video without re-encoding on Windows free using WSL and FFmpeg. Cut clips instantly with no quality loss using stream copy, all offline with no uploads.

MGMCSA Guru Team June 26, 2026 4 min read
A WSL terminal trimming a video clip without re-encoding using FFmpeg stream copy on Windows

Cutting the dead air off the start of a recording, or grabbing one section out of a long video, shouldn’t mean re-rendering the entire file or uploading it to an editor site. Most editors re-encode everything just to chop the ends, which is slow and quietly drops quality.

FFmpeg in WSL can cut by copying the existing streams — no re-encoding at all. It finishes almost instantly, the output is bit-for-bit as good as the source, and the file never leaves your machine. It’s free and there’s no length limit.

No WSL yet? See the WSL install guide.

Install FFmpeg

sudo apt update && sudo apt install -y ffmpeg

Confirm:

ffmpeg -version

Trim by start and end time

The key is -c copy, which copies streams instead of re-encoding. Cut from 30 seconds to 1 minute 45:

ffmpeg -ss 00:00:30 -to 00:01:45 -i input.mp4 -c copy output.mp4
  • -ss 00:00:30 is the start time.
  • -to 00:01:45 is the end time.
  • -c copy does the magic: no re-encoding, no quality loss, near-instant.

Times can be HH:MM:SS or plain seconds (-ss 30 -to 105).

Trim by start and duration

If you’d rather specify how long the clip should be, use -t (duration) instead of -to:

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

That takes 15 seconds starting at 30 seconds.

The keyframe trade-off

Stream copy is fast and lossless because it doesn’t decode the video — but that’s also its one limitation. Cuts can only happen on keyframes, which appear periodically through the video. FFmpeg starts at the nearest keyframe to your requested time, so the beginning of a copied clip may be off by a second or two.

For most trims — topping and tailing a recording, pulling a rough section — that’s fine. When you need the cut to land on an exact frame, re-encode instead:

ffmpeg -ss 00:00:30 -to 00:01:45 -i input.mp4 -c:v libx264 -crf 20 -c:a aac output.mp4

This decodes and re-encodes, so it can cut anywhere, at the cost of time and a small quality hit. See compress a video without losing quality for the CRF settings.

Trim options

-ss START -to END -c copy Cut from start to end, instant, lossless
-ss START -t DURATION -c copy Cut a fixed-length clip, lossless
-ss before -i Fast input seeking (recommended for copy)
-c:v libx264 (no -c copy) Re-encode for a frame-exact cut

Why -ss goes before -i

Putting -ss before -i (input seeking) tells FFmpeg to jump close to the start point before it begins reading, which makes the cut fast. Putting it after -i reads from the beginning and is slower. For stream-copy trims, before -i is the standard, efficient choice.

Cut several files the same way

To trim the same window out of every MP4 in a folder:

mkdir -p trimmed
for f in *.mp4; do ffmpeg -ss 00:00:05 -to 00:00:35 -i "$f" -c copy "trimmed/$f"; done

Each result lands in trimmed/ with the originals untouched.

Wrapping up

Trimming without re-encoding is one FFmpeg pattern: ffmpeg -ss START -to END -i input.mp4 -c copy output.mp4. It’s instant and lossless, with the only caveat that copied cuts snap to keyframes — so the start may shift slightly. When you need a frame-exact cut, drop -c copy and re-encode.

It’s free, it batches, and it runs in WSL — so your videos never get uploaded. The same FFmpeg install handles converting MOV/MKV to MP4 and making GIFs from clips.

Frequently asked questions

How do I cut a video without losing quality?

Use FFmpeg with -c copy, which copies the video and audio streams instead of re-encoding them. The cut is instant and the quality is identical to the source. The only limitation is that cuts land on keyframes, so the start point may shift slightly.

Why doesn't my cut start exactly where I asked?

Stream copy can only cut on keyframes, which occur every so often in the video. FFmpeg starts at the nearest keyframe to your requested time, so the beginning can be off by a second or two. Re-encoding allows a frame-exact cut if you need it.

What's the difference between putting -ss before or after -i?

Placing -ss before -i (input seeking) is fast because FFmpeg jumps near the start point before reading. Placing it after -i is slower but more precise. For stream-copy trims, before -i is the usual choice.

Is my video uploaded anywhere?

No. FFmpeg runs locally in WSL, so the file never leaves your machine. That's the reason to trim offline rather than on a website, especially for large or private recordings.

How do I get a frame-exact cut?

Re-encode instead of stream-copying. Drop the -c copy and let FFmpeg encode with libx264; it can then cut on any frame. You trade instant speed and perfect fidelity for precise cut points.

Sources & further reading

Official vendor documentation referenced while writing this guide.

MG

MCSA Guru Team

IT & Systems Administration

We are working IT pros and system administrators who spend our days in Windows Server, Microsoft 365, and the wider Microsoft stack. MCSA Guru is where we write down the fixes and walkthroughs we wish we had found the first time.

MCSA Guru provides independent, educational IT guidance. Microsoft, Windows, Windows Server, Microsoft 365, Exchange, and Microsoft Teams are trademarks of Microsoft Corporation; Docker is a trademark of Docker, Inc. MCSA Guru is not affiliated with or endorsed by Microsoft or Docker. Always test changes in a safe environment before applying them in production.

Related guides

Fixing something right now?

Jump straight into the guide library or search for the exact error or task you are dealing with.