A LITTLE HELP. A LOT DONE.
Good tools.
Great flow.
Your shortcut to the everyday. Create, convert, calculate,
and get back to what you love.
✳
✳
✓ Free to use✓ No sign-up✓ 500+ possibilities
About this tool
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 it
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
- Click or drag your MP4, WebM or MOV onto the upload area.
- Preview the clip to confirm the loop unit is correct.
- Drag the loop count slider — 2× to 20× — and watch the live duration / size estimate.
- Click 'Loop Video' and wait for ffmpeg.wasm to concatenate the clip N times.
- Preview the looped result inline to verify smooth join points.
- Click Download to save the looped MP4 to your device.
When it helps
- 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
01Loop 30s ambient clip 10×
Input10 MB MP4, 30s, looped 10 times
Expected result~100 MB MP4, 5 minutes total, lossless
Input5 MB MP4, 8s animation, looped 3 times
Expected result~15 MB MP4, 24s total
03Build screen-saver background
Input20 MB MP4, 1 minute, looped 15 times
Expected result~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.
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.