Audio Looper
Loop a short audio clip into a long one (up to 30 minutes) in your browser. Pick a target duration, get a seamless crossfade by default, or use byte-perfect Fast mode for pure noise sources. Powered by ffmpeg.wasm. No upload, no signup.
Interactive tool
ffmpeg.wasm engine loads on first run (~32 MB)
The engine is cached for the rest of your session. Every transcode runs entirely in your browser: files never leave your device.
Threading: detecting…
Drop an audio file here
Up to 60 seconds works best for loops. Longer sources don't need a looper.
What is the Audio Looper?
A free, in-browser audio looper that repeats a short clip into a long one: up to 30 minutes, with a seamless crossfade between iterations so the join is inaudible. Runs entirely through ffmpeg.wasm, so the source file never leaves your browser. Built for UGC creators who need long background beds from short noise, ambient, or music clips.
How to Use the Audio Looper
- 1Drop an audio file (mp3, aac, ogg, opus, wav, flac): under 60 seconds works best
- 2Pick a target duration with the preset chips or type one in (mm:ss)
- 3Leave Seamless mode on for music / fan / rain, or toggle Fast mode for pure white noise
- 4Optional: add a fade-in and fade-out on the final long file
- 5Click Loop: preview the result, then download
Key features
Seamless crossfade by default
A two-pass acrossfade renders one clean join, then streams it to the target duration: no clicks, no pops, no phase pops at loop points
Fast mode for noise sources
Optional byte-perfect mode (-c copy) skips re-encoding entirely. 3 s into 10 min finishes in under a second and loses zero quality
Preset durations for UGC
One-click chips for Story (15 s), Reel (60 s), TikTok-friendly 3 min, and long beds up to 30 min
Optional fade-in / fade-out
Apply fade envelopes to the final long file via the afade filter: useful for soft starts and clean endings under a voice-over
Six output formats
mp3 / aac / ogg / opus / wav / flac, or keep the source format and re-encode at the same bitrate
Projected size before render
Live byte estimate so you know what you are about to download before committing to a long render
100% private
No upload, no signup, no logs: the audio is processed locally in your browser through ffmpeg.wasm
Why Loop Audio Locally?
Online "loop audio" sites upload your file, often watermark, rate-limit, or cap output at a few minutes. Looping locally is private, fast, and watermark-free. The two-pass crossfade renders a clean master once and then copies it, so a 30-minute output ships in seconds instead of minutes, and the join between iterations is inaudible.
Common use cases
- Extend a 3-second white noise clip into a 10-minute focus / sleep bed
- Build a long background ambient for a TikTok or Instagram Reel
- Loop a sound-effect bed under a podcast intro or outro
- Turn a short rain / fan / fire recording into a multi-minute ASMR loop
- Pre-render a long backing pad for a voice-over without leaving the browser
Seamless mode vs Fast mode
Seamless mode renders a short master with a small crossfade between two copies of the input (default 30 ms), then loops that master to the target duration. The crossfade hides the discontinuity at the join, so even tonal content like a fan hum or AC compressor cycles seamlessly. Fast mode skips the master pass and uses ffmpeg's -c copy stream loop: instant and byte-perfect, but it leaves the raw waveform discontinuity in place. That is inaudible on pure white / pink noise but can click on tonal sources, so the toggle is opt-in.
Why is the output capped at 30 minutes?
The ffmpeg.wasm virtual filesystem has to materialise the output blob in memory before handing it back to the browser. Above 30 minutes for lossy formats (or 15 minutes for wav / flac) the tab tends to run out of memory on lower-spec devices. Multi-hour sleep / ASMR renders are on the roadmap as a server-side option.
How the crossfade is built
Stage 1 takes the input twice and joins them with ffmpeg's acrossfade filter using a triangular curve (c1=tri, c2=tri) of the configured duration. Stage 2 stream-loops that master to the target length with -stream_loop -1 and -t, then applies any final fade-in / fade-out via afade and encodes to the chosen format. The whole pipeline runs in a single ffmpeg session via withFfmpeg(): only one engine load.
Tips & best practices
Use Fast mode for pure noise
White, pink, and brown noise have no temporal correlation: the join is inaudible even without crossfade. Fast mode is byte-perfect and instant.
Bump crossfade to 100-300 ms for music beds
On melodic or percussive material a longer crossfade smooths the join. 30 ms is the right default for noise / ambient; reach for 100-300 ms on music.
Trim before looping
If your source has a click at the start or end, run it through the Audio Trimmer first to snap to a clean boundary. The cleaner the source, the cleaner the loop.
Keep source short
For clean noise beds, a 1-3 second source is plenty. Shorter sources mean a smaller master and a faster render.
Privacy & security
Looping runs entirely in ffmpeg.wasm inside your browser. The source audio is never uploaded, logged, or stored. Engine artefacts are served from our own origin (not a third-party CDN).
Related tools
- Audio Converter & Compressor
Convert and compress mp3, aac, ogg, opus, wav, and flac audio in your browser via ffmpeg.wasm. Pick a target format, bitrate, sample-rate, and channel mode, and see before / after waveforms side by side.
Audio Tools
- Audio Trimmer
Trim mp3, aac, ogg, opus, wav, and flac audio in your browser with ffmpeg.wasm. Drag the waveform thumbs to set start and end, add optional fade-in / fade-out, and keep the source format. No upload, no signup.
Audio Tools
- Noise Generator
Generate white, pink, brown, blue, or violet noise in your browser: up to 30 minutes. Pick a duration, sample rate, channels, and loudness; export as wav, mp3, aac, ogg, or opus. Perfect for sleep, focus, ASMR, UGC voice-over beds, and tinnitus masking. No upload, no signup.
Audio Tools
- Video Trimmer
Trim mp4, webm, mkv, and mov videos in your browser with ffmpeg.wasm. Lossless (-c copy) for instant cuts at keyframes, or frame-accurate re-encode when you need precision. No upload, no signup.
Video Tools
- PDF Compress
Shrink PDF file size by repacking and optimizing structure. runs locally in your browser.
PDF Tools
- Video to GIF Converter
Turn any mp4, webm, mov, or mkv into a high-quality animated GIF: fully in your browser via ffmpeg.wasm. Pick a time range, FPS, width, and dither; we generate an optimised palette in a single click.
Video Tools
Frequently Asked Questions
What is the difference between Seamless and Fast mode?
Seamless renders a small crossfaded master, then stream-loops it to the target duration: the join between iterations is inaudible on any source. Fast mode uses ffmpeg -c copy on a stream loop, so it produces a byte-perfect output in milliseconds, but the raw waveform discontinuity at the join can click on tonal sources. Seamless is the safe default. Fast is the right choice for pure noise.
Why is the output capped at 30 minutes?
ffmpeg.wasm has to materialise the output blob in the browser's virtual filesystem before handing it back. Above 30 minutes (lossy) or 15 minutes (wav / flac), browser memory becomes the bottleneck. Multi-hour loops for sleep / ASMR content are on the roadmap as a server-side option.
Will my looped audio lose quality?
In Fast mode, no: -c copy is a byte-perfect repeat with no re-encoding. In Seamless mode there is one generation of re-encoding (the master pass), then the stream-loop is bit-perfect to that master. Pick wav or flac as the output format to avoid any lossy compression.
Why does the tool only accept clips up to 60 seconds?
Longer sources do not need looping. They are already long. If you want to repeat a 5-minute clip a few times, use a podcast editor or a video editor instead. For trimming a long source to a clean loop point first, use the Audio Trimmer.
Does my file get uploaded?
No. Looping runs entirely in your browser through ffmpeg.wasm. The audio is never sent to a server. The ffmpeg engine artefacts are served from our own origin under /ffmpeg/<version>/.
How should I set the crossfade duration?
For white / pink / brown noise: 30 ms (the default) is inaudible. For ambient with subtle tonal content (fan, AC, rain): 50-100 ms hides any phase pop. For musical or rhythmic beds: 200-500 ms gives a smooth blend.