Remotion · Troubleshooting

How to Fix Remotion Audio Not Playing With the loop Prop

Looping audio intermittently failing to play is usually a mismatch between the composition's total duration and the audio file's own duration.

Using loop on an <Audio> component to repeat a short track across a longer composition is a common pattern for background music — and it has a known intermittent failure where the audio stops playing partway through instead of looping cleanly.

The likely cause

This tends to surface when the composition's durationInFrames isn't a clean multiple of the audio file's own duration in frames. Remotion's loop implementation calculates loop boundaries based on both durations — a mismatch there can produce a boundary calculation that doesn't line up with an actual frame, causing playback to drop instead of restarting.

The reliable fix

Rather than relying on the loop prop's automatic boundary calculation, control the looping explicitly using multiple Sequence components, each restarting the audio from frame 0:

{Array.from({ length: loopCount }).map((_, i) => ( <Sequence key={i} from={i * audioDurationInFrames}> <Audio src={staticFile("music.mp3")} /> </Sequence> ))}

This sidesteps the loop prop's internal boundary math entirely — each Sequence is a fresh instance of the audio starting cleanly, which is more predictable across different composition lengths.

Checking your audio file's actual duration

Confirm the exact duration in frames with ffprobe, then calculate loopCount as Math.ceil(compositionDuration / audioDurationInFrames) — rounding up ensures the last loop iteration covers the full composition even if it gets cut off mid-loop by the composition's end.

Skip the debugging

Background music timing is a solved problem inside a tested template — one more reason not to rebuild the audio layer from scratch for every render.

See the templates

Common questions

Is this bug present in every Remotion version?+
Check your specific version's changelog — loop-related audio handling has seen fixes over time, but the explicit Sequence approach works regardless of version.
Does this affect looping video too, not just audio?+
The same duration-mismatch principle can apply to looped video, though the visual symptom (a frozen frame) is usually more obvious than silent audio.
Will multiple overlapping Sequence instances double the volume?+
No — as long as each Sequence's frame range doesn't overlap with the next, only one instance plays audio at any given frame.