Created attachment 328418 [details] Simple test.html demonstrating the bug Given a buffer of 15 seconds start() on the last line in this example throws InvalidStateError: The object is in an invalid state. const source = context.createBufferSource() source.buffer = buffer source.loop = true source.connect(context.destination) source.start(0, 20) Note: it does not throw when the offset is less than the length of the buffer. Expected: start the looped playback with 5 seconds initial offset. My understanding of the standard and the behavior in Chrome and Firefox suggest that this is a bug. See: https://webaudio.github.io/web-audio-api/#dom-audiobuffersourcenode-start