Audio latency test
Measure your audio round-trip latency using your speakers and microphone.
Microphone access needed
This tool plays a short tone and listens through your microphone to measure round-trip latency. Audio stays on your device.
5 rounds by default · Configurable before starting
This audio latency test measures the real loop: a Web Audio oscillator plays a short tone through your speakers, the microphone picks it up, and an analyser watches the time-domain buffer until the amplitude crosses your threshold. The gap, timed with performance.now, is the round trip through the output stack, the air, the input stack and the browser. It runs several rounds and averages them. Alongside that it prints the two figures the browser reports itself, AudioContext.outputLatency and baseLatency, so you can see how much of the total the browser admits to. If microphone access is refused there is a manual tap mode instead.
Key facts about Audio latency test
| What is measured | speaker output plus air travel plus microphone input plus browser processing, end to end |
|---|---|
| Test tone | an OscillatorNode, square by default, also sine or sawtooth |
| Tone frequency | 500, 1000, 2000 or 4000 Hz — 1000 Hz is the default |
| Tone length | about 30 ms in automatic mode, with an exponential gain ramp to near silence |
| Detection | getByteTimeDomainData scanned for a sample whose amplitude exceeds the threshold |
| Analyser settings | fftSize 2048 with smoothingTimeConstant 0.3, so the attack is not smeared |
| Timing source | performance.now() taken immediately before the beep and again on detection |
| Rounds | 3, 5, 10 or 15 per run, averaged; 5 is the default |
| Presets | Sensitive 0.30 volume and 0.05 threshold, Balanced 0.50 and 0.15, Loud room 0.80 and 0.30, Max volume 1.00 and 0.20 |
| Browser figures | AudioContext.outputLatency and baseLatency, both in milliseconds, plus sample rate |
| False-start guard | the first five analyser checks after the beep are ignored so the tone's own onset cannot trigger early |
| Manual fallback | a beep after a random 1.5 to 4 second delay that you tap — human reaction time is included |
What happens to your file
The microphone is opened with getUserMedia and connected to an AnalyserNode inside a local AudioContext. Only the amplitude values in the analyser buffer are read, and only to find the moment the tone arrives; nothing is recorded, saved or transmitted. The tone itself is synthesised in your browser rather than fetched, so the test needs no network at all once the page has loaded. Results live in memory for the session and are lost on reload. When you leave, the stream is stopped and the AudioContext is closed, which releases the microphone and clears the recording indicator.
About this tool
- 1
Use speakers, not headphones
The measurement depends on the microphone hearing the tone through the air. With headphones on, nothing reaches the microphone and every round times out. Built-in laptop speakers and the built-in microphone work fine.
- 2
Allow the microphone
Accept the browser prompt. If you decline, the tool switches to the manual tap mode, which measures your reaction time plus the latency rather than the latency alone.
- 3
Pick a preset for your room
Balanced suits a normal quiet desk. Sensitive lowers both volume and threshold for a very quiet room. Loud room raises both so background noise does not trigger detection early. Max volume is for speakers that are simply quiet.
- 4
Set the number of rounds
Five rounds is enough for a stable average on most systems. Use ten or fifteen when results scatter, which usually means the threshold is close to the room's noise floor.
- 5
Sit still and stay quiet
Any sound above the threshold can be mistaken for the tone. Do not type, move the mouse on a hard desk, or talk while the rounds are running.
- 6
Read the average, not one round
Individual rounds vary with buffer alignment. The average across the run is the figure to record, and the spread between rounds tells you how stable the audio stack is.
- 7
Compare against the browser's own numbers
outputLatency is the browser's estimate of its output path alone, and baseLatency is only its internal buffer. The difference between those and your measured round trip is everything the browser cannot see: the OS mixer, the driver, the DAC, the speaker and the microphone path.
| Browser support | any browser with Web Audio and getUserMedia — Chrome, Edge, Firefox, Safari, Opera |
|---|---|
| outputLatency | reported by Chromium and Firefox; Safari commonly returns nothing and the field shows Not supported |
| baseLatency | the AudioContext buffer only; it is always far smaller than the true round trip |
| Secure context | microphone access requires HTTPS, which this page uses |
| Autoplay policy | the AudioContext starts suspended and is resumed on your click, so the test cannot begin on its own |
| Air travel | roughly 0.3 ms per 10 cm between speaker and microphone, which is negligible at desk distance |
| Headphones | the loop cannot close acoustically — use speakers, or the manual mode |
| Account or install | none — no signup, no ASIO driver, no loopback cable |
- Place the microphone within about 30 cm of the speaker. Distance adds roughly 0.3 ms per 10 cm, which is small, but a distant microphone also needs a much higher volume to trigger detection.
- A Bluetooth speaker or headset adds 100 to 300 ms of codec and transmission delay, and it will dominate the result; test wired hardware if you want to know what the computer is doing.
- If every round times out, raise the volume first and lower the threshold second — a threshold set below the room noise floor causes the opposite failure, with impossibly fast results.
- Results under about 10 ms almost always mean the threshold is triggering on noise rather than the tone; raise it and run again.
- The square wave is the default because its sharp onset is the easiest edge to detect. Switch to sine only if the square tone is unpleasantly harsh, and expect slightly noisier detection.
- Windows exclusive-mode and low-latency driver settings change this number measurably; run the test before and after to see whether a change actually helped.
- Browsers differ: the same machine can report noticeably different round trips in Chrome and Firefox because their audio output paths differ.
- Manual mode includes your own reaction time, typically 200 to 300 ms, so treat it as a rough comparison between setups rather than a latency figure.
- Automatic loopback rounds with averaging
- Adjustable tone type, frequency, volume and detection threshold
- Four room presets from Sensitive to Loud room
- Live waveform with the threshold drawn on it
- AudioContext outputLatency, baseLatency and sample rate readout
- Manual tap fallback when the microphone is unavailable
- Session history of previous runs
- Checking whether a new audio interface or driver mode actually reduced latency.
- Finding out how much delay a Bluetooth speaker adds compared to a wired one.
- Diagnosing lip-sync complaints in video calls by separating audio delay from video delay.
- Comparing browsers on the same machine before choosing one for a browser-based DAW or a rhythm game.
- Establishing a baseline before changing buffer sizes in a music production setup.
- Confirming that a laptop's built-in audio path is not the cause of a monitoring delay.
Related tools
View allPart of Hardware testers that run in your browser
Works well with this5
More hardware testers10
More in Gaming11
Related categories2
Updated