Combine Zoom Recording Parts Into One File With FFmpeg

Sep 23, 2026

If one Zoom meeting produced three MP4s instead of one, you can stitch them back together without re-encoding anything. FFmpeg's concat demuxer reads a plain text list of files and writes one output, copying the existing packets straight through.

Before the command, it is worth knowing why you have several files — because one common reason means you should not join them at all.

Why Zoom handed you more than one file

Zoom documents exactly one rule that creates extra video files during a recording, and it says the same thing twice.

For recordings saved to your computer, Zoom writes: "During a Zoom recording, a participant can Stop or Pause the recording. If a participant stops the recording and starts it again, a new video file will be created for the next recording segment. If a participant pauses the recording and starts it again, Zoom will record to the same video file for the recording segment."

For cloud recordings, the wording is shorter and identical in substance: "Pausing a cloud recording does not create a separate file, but stopping a recording and starting a new cloud recording does create a new file."

So: Stop then Start splits the recording. Pause then Resume does not. That is the whole rule, and it is the same on both sides.

What Zoom's documentation does not contain is any threshold that splits a recording automatically. There is no stated size limit, no stated duration limit, and no "new file every N gigabytes" behaviour anywhere in the official recording articles. The widely repeated claim that Zoom starts a new file every 4 GB has no official source — if someone stopped and restarted, that is your answer.

One case where joining is the wrong move. Cloud recording has a separate setting Zoom describes as "Record active speaker, gallery view and shared screen separately: This option records each view as separate video files." Those files are not sequential parts of one timeline — they are the same meeting shot three ways, running in parallel. Concatenating them gives you the meeting three times in a row. Check the durations first: parts that add up to the meeting length are parts; files that each run the full length are layouts.

The command

Make a text file listing the parts in the order you want them, one per line:

file 'video98796876.mp4'
file 'video98796877.mp4'
file 'video98796878.mp4'

Save it as parts.txt next to the recordings, then run:

ffmpeg -f concat -safe 0 -i parts.txt -c copy joined.mp4

If you are not sure where the parts live, Zoom lists its defaults for recordings saved to your computer:

Windows: C:\Users\[Username]\Documents\Zoom
Mac: /Users/[Username]/Documents/Zoom
Linux: home/[Username]/Documents/Zoom

(That Linux line is copied as Zoom writes it; another Zoom article gives the same path as /home/Username/Documents/Zoom.)

Finding the right filenames is its own small annoyance, because Zoom does not name recordings after the meeting. Its own description of the MP4 output is "Audio/Video file that is named video[random number].mp4 by default." If you are on Windows, Zoom also drops a playlist next to them, described as "Playlist file to play all individual MP4 files (Windows only) that is named playback[random number].m3u by default" — open that .m3u in a text editor and you have Zoom's own list of the MP4s from that recording.

What -c copy does

-c copy is the part that makes this fast and lossless. FFmpeg's documentation defines it: "The simplest pipeline in ffmpeg is single-stream streamcopy, that is copying one input elementary stream's packets without decoding, filtering, or encoding them."

The same page states the payoff outright: "Streamcopy is useful for changing the elementary stream count, container format, or modifying container-level metadata. Since there is no decoding or encoding, it is very fast and there is no quality loss."

Note the stated scope. Stream copy changes stream count, container and container-level metadata — nothing else. It cannot re-scale, re-encode or otherwise alter the picture, which is why the joined file is bit-for-bit the same footage Zoom wrote.

For what the other options on that command line do, and for the concat demuxer's full option list, check the official FFmpeg documentation.

Name the output before you run it

Zoom states one file-naming recommendation twice, and it applies the moment you pick a name for the joined file. From the computer-recording article: "After the file has completed converting, if you choose to rename the file from the default naming convention, we recommend you use a unique file name. We recommend you do not use the words Zoom, Personal Meeting Room, or My Meeting when saving your meeting files."

The recording-troubleshooting side repeats it: "Always use a unique file name when saving or sharing meeting files. Do not use words such as Zoom, Personal meeting room, or My meeting in the file name."

Zoom does not say why. Practically: joined.mp4 is fine, My Meeting.mp4 is what Zoom asks you to avoid.

Output a different container

Changing the container format is one of the three uses FFmpeg's documentation names for stream copy, so the same list and the same -c copy can write an .mkv — just change the output extension:

ffmpeg -f concat -safe 0 -i parts.txt -c copy joined.mkv

Nothing about the video or audio changes: the same packets in a different wrapper, with the same "no quality loss" guarantee.

The other files in that folder

The MP4s are usually not the only files Zoom left behind, and some of them are not parts of your timeline. Zoom's audio-only output is M4A — "Audio-only file that is named audio[random number].m4a by default" — and it is a parallel copy of the meeting's sound, not a fourth video segment.

If separate participant tracks were recorded to your computer, they land somewhere else again — Zoom's instructions put them in a sub-folder: "Once in the Audio Record folder, each participant's audio track will be listed as its own file. Each file name begins with the participant's name." Zoom's example for those is audioJohnSmith98796876.m4a. The cap differs by page: Zoom's cloud recording settings say "up to 200 speakers individually", the desktop client's Recording settings say "up to 80 participants". Either way, none of those files belong in parts.txt.

Try it right here

Runs in your browser. Your file is not uploaded anywhere.

Loading tool…

That converter runs FFmpeg compiled to WebAssembly inside your browser tab: the file is read from disk, processed locally and handed back, with nothing uploaded to a server. It handles the container swap above one file at a time, which is the useful half of this job if you never installed FFmpeg. Joining multiple files still needs the command line. See all Clapr tools for the rest, or the FFmpeg guides for more one-liners.

Troubleshooting

You joined files that were never sequential. If the output runs three times the meeting length, you concatenated layouts rather than segments — see the separate-views setting above. Check each file's duration before building the list.

Zoom has not produced MP4 files yet. A recording saved to your computer is not an MP4 until conversion finishes. Do not rename anything mid-conversion — Zoom warns that "If you change the name of the double_click_to_convert.zoom file(s) while the recorded meeting is converting, it may corrupt the file and not convert correctly." Wait for conversion, then build your list. See getting a Zoom recording as MP4.

You copied the Zoom folder to another machine and it will not play. Zoom states the constraint plainly: "To play a computer recording, you must be accessing it from the same device on which it was recorded." Convert on the recording machine first, then move the MP4s.

FAQ

Why did Zoom split my recording into multiple files? Because the recording was stopped and started again. Zoom's documentation says a new video file is created for the next recording segment when a participant stops and restarts, while pausing and resuming keeps writing to the same file.

Does Zoom automatically split recordings at a certain size? Zoom's official recording documentation states no such threshold — no size cap, no duration cap, no automatic segmentation. The only documented split is stop-then-start.

Will joining the parts lose quality? Not with -c copy. FFmpeg's documentation states that because there is no decoding or encoding, "there is no quality loss." That holds for the MKV output too — the container changes, the packets do not.

What codec are Zoom's MP4 files? Zoom does not say. Its articles describe the MP4 only as an "Audio/Video file" and never name a video or audio codec, so run ffprobe on a part if you need to know before choosing an output container. More on Zoom's outputs in Zoom recording file formats explained.

How big will the joined file be? Roughly the sum of the parts, since nothing is re-encoded. For the parts themselves Zoom gives only an estimate: "Recording screen sharing uses about 20MB of storage per hour, while recording video uses about 200MB of storage an hour. This is an approximation, since the resolution and types of video or screen sharing content can affect the amount of storage used."

Can a single meeting generate a lot of files? Yes, and Zoom caps it: "There is a limit of 150 files that can be generated from a live session's cloud recordings." Layouts, audio-only files, chat transcript and interpreter views all count toward that number.


Zoom quotes from Zoom's support articles on starting computer recordings, cloud and desktop-client recording settings, recording file formats and troubleshooting recording issues, checked 16 September 2026. FFmpeg quotes from the FFmpeg documentation, section "Streamcopy".

Clapr team

Clapr team

Combine Zoom Recording Parts Into One File With FFmpeg | Clapr Blog