AudioContext

The AudioContext interface represents an audio-processing graph built from audio modules linked together, each represented by an AudioNode. An audio context controls both the creation of the nodes it contains and the execution of the audio processing, or decoding. You need to create an AudioContext before you do anything else, as everything happens inside a context. It's recommended to create one AudioContext and reuse it instead of initializing a new one each time, and it's OK to use a single AudioContext for several different audio source and pipeline concurrently.

Constructor

AudioContext()
Creates and returns a new AudioContext object.

Properties

Also inherits properties from its parent interface, BaseAudioContext.

AudioContext.baseLatency Read only
Returns the number of seconds of processing latency incurred by the AudioContext passing the audio from the AudioDestinationNode to the audio subsystem.
AudioContext.outputLatency Read only
Returns an estimation of the output latency of the current audio context.

Methods

Also inherits methods from its parent interface, BaseAudioContext.

AudioContext.close()
Closes the audio context, releasing any system audio resources that it uses.
AudioContext.createMediaElementSource()
Creates a MediaElementAudioSourceNode associated with an HTMLMediaElement. This can be used to play and manipulate audio from <video> or <audio> elements.
AudioContext.createMediaStreamSource()
Creates a MediaStreamAudioSourceNode associated with a MediaStream representing an audio stream which may come from the local computer microphone or other sources.
AudioContext.createMediaStreamDestination()
Creates a MediaStreamAudioDestinationNode associated with a MediaStream representing an audio stream which may be stored in a local file or sent to another computer.
AudioContext.createMediaStreamTrackSource()
Creates a MediaStreamTrackAudioSourceNode associated with a MediaStream representing an media stream track.
AudioContext.getOutputTimestamp()
Returns a new AudioTimestamp object containing two audio timestamp values relating to the current audio context.
AudioContext.resume()
Resumes the progression of time in an audio context that has previously been suspended/paused.
AudioContext.suspend()
Suspends the progression of time in the audio context, temporarily halting audio hardware access and reducing CPU/battery usage in the process.

Examples

Basic audio context declaration:

var audioCtx = new AudioContext();

Cross browser variant:

var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext();

var oscillatorNode = audioCtx.createOscillator();
var gainNode = audioCtx.createGain();
var finish = audioCtx.destination;
// etc.

Specifications

Specification Status Comment
Web Audio API
The definition of 'AudioContext' in that specification.
Working Draft

Browser compatibility

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
AudioContextChrome Full support 35
Full support 35
No support 14 — 57
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Edge Full support 12Firefox Full support 25IE No support NoOpera Full support 22
Full support 22
No support 15 — 44
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Safari Full support 6
Prefixed
Full support 6
Prefixed
Prefixed Implemented with the vendor prefix: webkit
WebView Android Full support YesChrome Android Full support 35
Full support 35
No support 18 — 57
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Firefox Android Full support 26Opera Android Full support 22
Full support 22
No support 14 — 43
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Safari iOS Full support 6
Prefixed
Full support 6
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Samsung Internet Android Full support 3.0
Full support 3.0
No support 1.0 — 7.0
Prefixed
Prefixed Implemented with the vendor prefix: webkit
AudioContext() constructorChrome Full support 35
Notes
Full support 35
Notes
Notes Prior to Chrome 66, each tab is limited to 6 audio contexts in Chrome; attempting to create more will throw a DOMException. For details see Per-tab audio context limitation in Chrome.
Notes If latencyHint isn't valid, Chrome throws a TypeError exception. See Non-standard exceptions in Chrome for details.
No support 14 — 57
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Edge Full support 12Firefox Full support 25IE No support NoOpera Full support 22
Notes
Full support 22
Notes
Notes Prior to Opera 53, each tab is limited to 6 audio contexts in Opera; attempting to create more will throw a DOMException. For details see Per-tab audio context limitation in Chrome.
Notes If latencyHint isn't valid, Opera throws a TypeError exception. See Non-standard exceptions in Chrome for details.
No support 15 — 44
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Safari Full support 6.1
Prefixed
Full support 6.1
Prefixed
Prefixed Implemented with the vendor prefix: webkit
WebView Android Full support 37
Notes
Full support 37
Notes
Notes Prior to WebView 66, each tab is limited to 6 audio contexts in WebView; attempting to create more will throw a DOMException. For details see Per-tab audio context limitation in Chrome.
Notes If latencyHint isn't valid, WebView throws a TypeError exception. See Non-standard exceptions in Chrome for details.
No support ≤37 — 44
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Chrome Android Full support 35
Notes
Full support 35
Notes
Notes Prior to Chrome 66, each tab is limited to 6 audio contexts in Chrome; attempting to create more will throw a DOMException. For details see Per-tab audio context limitation in Chrome.
Notes If latencyHint isn't valid, Chrome throws a TypeError exception. See Non-standard exceptions in Chrome for details.
No support 18 — 57
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Firefox Android Full support 26Opera Android Full support 22
Notes
Full support 22
Notes
Notes Prior to Opera Android 47, each tab is limited to 6 audio contexts in Opera; attempting to create more will throw a DOMException. For details see Per-tab audio context limitation in Chrome.
Notes If latencyHint isn't valid, Opera throws a TypeError exception. See Non-standard exceptions in Chrome for details.
No support 14 — 43
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Safari iOS Full support 6.1
Prefixed
Full support 6.1
Prefixed
Prefixed Implemented with the vendor prefix: webkit
Samsung Internet Android Full support 3.0
Notes
Full support 3.0
Notes
Notes Prior to Samsung Internet 9.0, each tab is limited to 6 audio contexts in Samsung Internet; attempting to create more will throw a DOMException. For details see Per-tab audio context limitation in Chrome.
Notes If latencyHint isn't valid, Samsung Internet throws a TypeError exception. See Non-standard exceptions in Chrome for details.
No support 1.0 — 7.0
Prefixed
Prefixed Implemented with the vendor prefix: webkit
baseLatency
Experimental
Chrome Full support 58Edge Full support 79Firefox Full support 70IE No support NoOpera Full support 45Safari No support NoWebView Android Full support 58Chrome Android Full support 58Firefox Android No support NoOpera Android Full support 43Safari iOS No support NoSamsung Internet Android Full support 7.0
closeChrome Full support 42Edge Full support 14Firefox Full support 40IE No support NoOpera Full support YesSafari Full support YesWebView Android Full support 43Chrome Android Full support 43Firefox Android Full support 40Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support 4.0
createMediaElementSourceChrome Full support 14Edge Full support 12Firefox Full support 25IE No support NoOpera Full support 15Safari Full support 6WebView Android Full support YesChrome Android Full support 18Firefox Android Full support 26Opera Android Full support 14Safari iOS Full support YesSamsung Internet Android Full support 1.0
createMediaStreamDestinationChrome Full support 14Edge Full support 79Firefox Full support 25IE No support NoOpera Full support 15Safari Full support 6WebView Android Full support YesChrome Android Full support 18Firefox Android Full support 26Opera Android Full support 14Safari iOS Full support YesSamsung Internet Android Full support 1.0
createMediaStreamSourceChrome Full support 14Edge Full support 12Firefox Full support 25IE No support NoOpera Full support 15Safari Full support 6WebView Android Full support YesChrome Android Full support 18Firefox Android Full support 26Opera Android Full support 14Safari iOS Full support YesSamsung Internet Android Full support 1.0
createMediaStreamTrackSourceChrome No support NoEdge No support NoFirefox Full support 68
Notes
Full support 68
Notes
Notes Firefox 68 implements the updated standard's definition of the "first" audio track; now the first track is the one whose ID comes first lexicographically.
IE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android Full support 68
Notes
Full support 68
Notes
Notes Firefox 68 implements the updated standard's definition of the "first" audio track; now the first track is the one whose ID comes first lexicographically.
Opera Android No support NoSafari iOS No support NoSamsung Internet Android No support No
getOutputTimestamp
Experimental
Chrome Full support 57Edge Full support 79Firefox Full support 70IE No support NoOpera Full support 44Safari No support NoWebView Android Full support 57Chrome Android Full support 57Firefox Android No support NoOpera Android Full support 43Safari iOS No support NoSamsung Internet Android Full support 7.0
outputLatencyChrome No support NoEdge No support NoFirefox Full support 70IE No support NoOpera No support NoSafari No support NoWebView Android No support NoChrome Android No support NoFirefox Android No support NoOpera Android No support NoSafari iOS No support NoSamsung Internet Android No support No
resumeChrome Full support 41Edge Full support 14Firefox Full support 40IE No support NoOpera Full support YesSafari Full support YesWebView Android Full support YesChrome Android Full support 41Firefox Android Full support YesOpera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support 4.0
suspendChrome Full support 43Edge Full support 14Firefox Full support 40IE No support NoOpera Full support YesSafari Full support YesWebView Android Full support 43Chrome Android Full support 43Firefox Android Full support 40Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support 4.0

Legend

Full support  
Full support
No support  
No support
Experimental. Expect behavior to change in the future.
Experimental. Expect behavior to change in the future.
See implementation notes.
See implementation notes.
Requires a vendor prefix or different name for use.
Requires a vendor prefix or different name for use.

See also