Repeat a clip by count or to a target length, and choose what happens at the joint: a hard cut that copies without re-encoding, a boomerang, a cross blend or a fade through black. For Stories, backgrounds and cinemagraphs.
Initializing in your browser…
Cut a clip out of a video, choosing whether the cut lands on the exact frame (re-encodes to MP4) or leaves the streams untouched (instant and lossless, but only at a keyframe). The result says which ran and reads the real length back off the file.
Convert a video between MP4, WebM, OGG, MOV, AVI and MKV, each naming the codecs it really writes and each producing a file that actually plays. One quality dial normalised into four different encoder scales.
Join clips end to end, saying in advance whether they can be stitched together untouched and, when they cannot, exactly which differences stop it. Clips of different sizes are letterboxed into one frame rather than squashed.
You want a background clip to loop on a landing page without a visible jump at the joint.
Input
ambience.mp4, 2.000 s · cross blend the joint, 0.4 s · ×3
Output
A 4.800 s clip whose last frame is a dissolve continuing into its first
The blend is built once, as a unit whose end flows into its start, and that unit is then repeated with a lossless copy, so a long loop costs one encode however many times it repeats. Each copy is shorter by the length of the blend, which is why three copies of a two second clip come to 4.8 seconds and not 6. Plain repeating is also offered and is a stream copy: three copies of the same clip came out as exactly 180 frames with the picture bit for bit the source.
Repeat a clip a set number of times, or until it reaches a length you name, and choose what happens at the joint. Repeating is a stream copy, so the picture is bit for bit the source; three other methods make the joint disappear at the cost of one re-encode.
Create long-running looping videos for digital signage, event backgrounds, or ambient room displays, using the cross blend so the joint does not read as a cut.
Loop a short clip to meet platform minimum length requirements by naming the target length rather than counting repeats yourself.
Play a short action forward and back repeatedly, which is the one joint that cannot jump because it is a single frame meeting itself.
Repeating a clip is a stream copy: the input is written into a concat playlist N times and joined with -c copy, so nothing is decoded, nothing is re-encoded, and the picture in the output is bit for bit the picture in the input. Fifty copies take about as long as two. Measured on a two second, 60 frame test clip, three copies came out as exactly 180 frames at the same 640 by 480 and the same H.264, and the size estimate of input times count was 1.9 percent high, because the container header is written once rather than three times.
The part that needed saying is the joint. A concatenation is a hard cut. It is invisible only when the clip's last frame already flows into its first, which is what a cinemagraph is and what most footage is not. So there are four methods and each states what it costs. Repeat as is copies without re-encoding and cuts hard. Forward then backward plays the clip through and back, which makes the joint one frame meeting itself and cannot jump, at the cost of reversing the motion. Cross blend the joint dissolves the clip's last moment into its first, so the end really does flow into the beginning; the unit gets shorter by the length of the blend. Fade through black fades out and in, which always works and always reads as a deliberate cut.
The three joining methods are built once and then copied, which is what keeps them fast and what keeps them inside a browser's memory. A single unit is encoded with one small filter graph over one decode, and that unit is then repeated with the same lossless concat, so a twenty times loop costs one encode rather than twenty. The obvious alternative, an xfade graph over two copies of the input, does not finish in this WebAssembly build at all: two copies of a two second clip reported no progress and had not finished after four and a half minutes.
One honest measurement about the soundtrack. AAC codes 1024 samples at a time and pads the end of every separately encoded piece, so a joined audio track can run slightly longer than the picture: three copies of the test clip gave a video of exactly 6.000 seconds and a container reporting 6.023, which is 23 milliseconds inside a bound of 70. The page prints that bound before you run it and the real length of the finished file afterwards.
Only in three of the four modes. Repeating is a hard cut, and it is invisible only when the clip was already made to loop. Forward then backward, cross blend and fade through black each make the joint continuous in a different way, and each re-encodes once to do it.
Not in Repeat mode: the streams are copied without being decoded, so the output frames are the input frames. The three joining modes re-encode the clip once, which costs one generation of compression on the whole thing.
AAC codes 1024 samples at a time and pads the end of each piece, so every joint can add up to one frame of padding, about 23 milliseconds per second of joins at 44.1 kHz. The page prints that bound before the run and the real measured length afterwards.
Yes, and it comes from the browser rather than from this tool: a single file cannot exceed 2 GB in a tab. The ceiling is worked out from your file size and shown, and the count control cannot be pushed past it.
Video is decoded and re-encoded on your own device. Large files never leave your machine.