UtilityKit

500+ fast, free tools. Most run in your browser only; Image & PDF tools upload files to the backend when you run them.

Video Looper

Loop an MP4, WebM or MOV clip a chosen number of times into one continuous output file.

About Video Looper

Video Looper repeats your clip N times back-to-back into a single output file. It uses the FFmpeg concat demuxer in stream-copy mode, so the loop is lossless and fast — no re-encoding required when the source is a clean H.264 MP4. Pick anywhere from 2 to 20 repeats; the live estimate shows the resulting duration and approximate file size before you commit. Useful for ambient backgrounds (3-minute clip looped 5× = 15-minute background), stretching short tutorial intros, or producing meditation / stretch / habit-loop video assets. Everything runs in your browser via ffmpeg.wasm — your file never uploads.

Why use Video Looper

  • 100% private — your clip never leaves your device
  • Lossless concat — no re-encoding when source is clean H.264
  • Near-instant processing even for high loop counts
  • Live estimate of output duration and size
  • Loops 2-20 times in one operation
  • No watermarks, no signup, completely free

How to use Video Looper

  1. Click or drag your MP4, WebM or MOV onto the upload area.
  2. Preview the clip to confirm the loop unit is correct.
  3. Drag the loop count slider — 2× to 20× — and watch the live duration / size estimate.
  4. Click 'Loop Video' and wait for ffmpeg.wasm to concatenate the clip N times.
  5. Preview the looped result inline to verify smooth join points.
  6. Click Download to save the looped MP4 to your device.

When to use Video Looper

  • Stretching a 30-second loop into a 5-minute meditation backdrop
  • Creating long ambient backgrounds for trade show monitors or kiosks
  • Repeating a tutorial step animation 3-5 times for emphasis
  • Generating habit-loop or breath-cycle video assets
  • Producing extended loops for screen savers or live streaming overlays
  • Filling a fixed-duration slot with a shorter source clip

Examples

Loop 30s ambient clip 10×

Input: 10 MB MP4, 30s, looped 10 times

Output: ~100 MB MP4, 5 minutes total, lossless

Triple a tutorial step

Input: 5 MB MP4, 8s animation, looped 3 times

Output: ~15 MB MP4, 24s total

Build screen-saver background

Input: 20 MB MP4, 1 minute, looped 15 times

Output: ~300 MB MP4, 15 minutes — fits memory

Tips

  • Watch the live estimate before clicking — a 50 MB clip × 10 = 500 MB output and you'll hit the browser memory wall.
  • If join-point stutter appears, compress the source first via Video Compressor — that re-encodes with regular keyframes.
  • For seamless audio loops, ensure the clip's audio fades in and out exactly at the loop boundary.
  • Loop counts 2-3 are useful for emphasis on short reaction shots; 5-10 work well for ambient backgrounds.
  • Combine with Video Mute to make a long silent background, then add audio with Video Add Audio.
  • After the first run ffmpeg.wasm is cached so subsequent loops start instantly even offline.

Frequently Asked Questions

Does my video leave my device?
No. Looping runs 100% locally via ffmpeg.wasm — the source and output never touch a server.
Why does it require Chrome / Edge?
ffmpeg.wasm needs SharedArrayBuffer for multi-threaded WebAssembly. SharedArrayBuffer is only available in browsers receiving COOP/COEP headers — Chrome, Edge, Brave, Arc.
What's the file size limit?
No server limit. Browser memory caps practical total output around 500 MB. A 50 MB clip looped 10× makes a 500 MB output, near the ceiling.
Will looping reduce quality?
No. Concat-demuxer stream-copy means the source bytes are repeated without re-encoding — the loop is mathematically lossless.
Will the join points be visible?
Stream-copy concat requires the source to start and end on a keyframe; otherwise you may see a 1-frame stutter at each join. Most exported MP4s are fine.
Why is the output file size N × source?
Stream-copy literally repeats the data. There is no shared frame compression across boundaries — that would require re-encoding, which kills the speed advantage.
Can I loop 100 times?
The slider caps at 20 to keep the output within browser memory. For higher counts, loop multiple times: 20 × → output, then loop that 5× = 100 ×.
Why does the first run take longer?
ffmpeg.wasm (~30 MB) downloads on first use and is cached, so subsequent loops start instantly even offline.

Explore the category

Glossary

Concat demuxer
FFmpeg input mode (-f concat) that reads a list of files and joins them as one — fast and lossless when sources match.
Stream copy
FFmpeg -c copy mode: muxes streams into a new container with no decoding/re-encoding.
Keyframe
Self-contained video frame from which playback can start. Stream-copy concat works best when source starts/ends on keyframes.
Join point
The boundary between two repetitions of the source — slight audio or video glitches can appear if codec parameters mismatch.
ffmpeg.wasm
WebAssembly port of FFmpeg that runs locally in your browser tab.
SharedArrayBuffer
JS memory primitive needed for multi-threaded WebAssembly; gated by COOP/COEP.