How to test your speakers or headphones — 6 steps
The test generates a clean sine tone via the Web Audio API and sends it through a stereo panner so each channel can be isolated independently. It is the same audio engine your browser uses for video calls, just driven manually — if the tone plays correctly here, your audio output is healthy at the OS and browser layer.
- 1
Open this page in Chrome, Edge, Firefox, or Safari. Works in any modern browser on desktop or mobile. No extension, no plugin, no download required. Output device picker requires a Chromium browser; the rest works everywhere.
- 2
Set the volume slider to about 30%. Start quiet. A pure 440 Hz sine wave is more fatiguing than music, and headphones at high volume can cause hearing damage faster than you expect. Raise the slider only once you've confirmed the tone is at a comfortable level.
- 3
Click Both channels. The tone plays for about 1.6 seconds. You should hear it equally in both ears or both speakers. If you hear nothing at all, jump to the troubleshooting list below — it is almost always an output device selection problem at the OS level.
- 4
Click Left only, then Right only. Each button plays the tone exclusively in one channel. The card on the screen labelled L or R highlights to show which channel is supposed to be active. If the visual says L but you hear sound on the right, your channels are wired backwards — flip the cable, swap the earcups, or check your DAW or audio interface routing.
- 5
Run the frequency sweep. The sweep ramps from 200 Hz up to 2 kHz over 4 seconds. A healthy driver moves smoothly through the range with no clicks, distortion, or drop-outs. A buzzing rattle midway through usually means a damaged voice coil or a loose driver housing — common on cheap earbuds and old laptop speakers.
- 6
Use the output picker to test a specific device. If you have headphones, external speakers, and a Bluetooth headset connected at the same time, the dropdown lets you route the tone to one specific device without switching your system default. The picker is Chromium-only; on Safari and Firefox use your OS sound settings to change the default output and reload.
If you can't hear anything — fixes by browser and OS
The test plays but you hear silence, or one channel is dead, or the tone sounds wrong? Work through this list top-down. Each item isolates a distinct root cause and only takes a few seconds to check.
1. Wrong OS output device selected
By far the most common cause. The OS routes browser audio to whatever the current default output is — and that often is not the device you expect.
- Windows 11/10: Settings → System → Sound → Output → pick the right device. Or click the speaker icon in the system tray, then the chevron next to the volume slider, and pick from the list.
- macOS Sonoma / Ventura: System Settings → Sound → Output → click the correct device. Or click the speaker icon in the menu bar (or hold Option and click the volume key) and pick directly.
- Ubuntu / Linux: open Sound from the top-right menu, then the Output Devices tab, and select the right device.
2. Tab muted at the browser level
Chrome and Edge let you mute a specific tab independently of system volume — and you can trigger it by accident with a right-click. Look at the tab strip: a muted tab shows a small speaker icon with a slash. Right-click the tab and click Unmute site. The same applies to Firefox and Safari, which also show a tab-level mute toggle.
3. Site-level sound permission blocked in Chrome
Chrome lets users block specific sites from playing sound at all, and a previous visit may have triggered that block.
- Chrome / Edge: go to
chrome://settings/content/sound, check the Blocked list, and remove this site if it's there. Reload the page. - Per-tab override: click the lock icon in the address bar → Sound → Allow.
4. Volume is at zero somewhere
Three independent volume levels are stacked: the OS master volume, the per-application volume (Windows Volume Mixer or macOS app volume controls), and the slider on this page. All three multiply together, so if any of them is at zero you hear nothing. On Windows, right-click the speaker icon → Open Volume Mixer and confirm the browser's row is up. On macOS, the per-app slider lives only inside apps that opt in — usually fine in browsers.
5. Another app holds the audio output in exclusive mode
On Windows, USB DACs and many DAWs (Reaper, Ableton, FL Studio) can request exclusive control of an output device, which blocks every other app from playing through it. Quit those apps and try again. On macOS exclusive holds are less common but pro audio apps and Logic can occasionally cause it.
6. Bluetooth headset dropped to HFP profile
Bluetooth audio runs on either the A2DP profile (high-quality stereo, no mic) or HFP/HSP (mono, with mic, sounds like an old phone call). When any app opens a microphone in parallel with audio output, the OS often downgrades the link to HFP — and the speaker test then sounds tinny and mono even if the tones play in both channels. If you have another tab or app using the mic, close it, then disconnect and reconnect the Bluetooth device.
7. USB headset needs a reconnect
USB audio devices occasionally lose their state when the host computer sleeps or hibernates. Unplug the USB cable, wait 5 seconds, plug it back in. On Windows, look in Device Manager → Sound, video and game controllers for any yellow warning icons after replug. On macOS, open Audio MIDI Setup (Applications → Utilities) and confirm the device shows a non-zero output channel count.
8. Browser process stuck — restart it
Long-running browser sessions occasionally end up with a stuck audio worker. Close every tab, quit the browser entirely, relaunch, and visit this page again. If the problem persists past a browser restart, restart the computer — a stale OS audio daemon is the remaining suspect, and a reboot resets it.
Stereo and channel check — what a one-dead-channel sounds like
Stereo audio is two independent mono channels — Left and Right — played simultaneously. A working pair of speakers or headphones reproduces both. A broken one usually fails in one of three specific ways, and being able to recognize the symptom saves you from chasing the wrong fix.
Symptom: One channel completely silent
Press Left only and Right only in turn. If one button produces no sound at all, the failure is on that side — driver, cable, or connector. Try a different cable first (most headphone failures are cable failures), then a different source device to rule out a TRRS / TRS jack contact issue.
Symptom: Tones are reversed
Press Left only and you hear the tone in your right ear, and vice versa. The L and R cables are physically swapped at the connector, or your DAW / audio interface has its outputs swapped, or your speakers are physically placed on the wrong sides. Stereo imaging depends on correct L/R routing — a swap makes everything sound subtly off without being obviously broken.
Symptom: Both channels play but Both channels is one-sided
Each side works individually, but when both are supposed to play together the sound is heavily weighted to one ear. The cause is almost always a balance slider gone off-centre at the OS level. Windows: Settings → System → Sound → click your device → Properties → Levels → Balance. macOS: System Settings → Sound → Output → check the balance slider.
Symptom: Sweep rattles or buzzes
Frequency sweeps reveal driver damage that music masks. A pure sine tone exposes any rattle from a loose voice coil, a torn cone surround, or a particle stuck against the driver. If the sweep is clean on one ear but rattles in the other, that driver is mechanically damaged and the headphones need service.
What the speaker test actually plays
The tool uses the browser's Web Audio API to synthesise a pure sine wave with an OscillatorNode, shape its loudness with a GainNode, and route it through a StereoPannerNode for L/R isolation. The Both channels test plays a centred 440 Hz tone — concert A, the standard reference pitch. The Left and Right tests pan that same tone fully to one side. The sweep uses an exponential frequency ramp from 200 Hz up to 2 kHz, which covers most of the vocal range and reveals driver damage.
When the output picker is used on a Chromium browser, the audio flows into a MediaStreamDestinationNode and out through an HTMLAudioElement whose setSinkId() method targets the device you picked. On Safari and Firefox the picker is hidden because those browsers haven't shipped setSinkId yet — the audio plays through whichever device your OS has set as default.
Test your speakers before a meeting
The most common reason someone joins a call and immediately says "I can't hear you" is the OS routing audio to the wrong output — a Bluetooth headset that was paired yesterday, an HDMI monitor speaker, an external USB DAC. Run this test 60 seconds before joining and you eliminate that whole class of problem before your team sees it happen.
If you want to verify your mic and webcam in the same pass — they usually fail together because the OS reset the default device — use one of the platform-specific testers below. Same audio engine, plus a webcam preview and the settings path for each app.
- Mic and camera test for ZoomConfirm mic, camera, and audio before joining or hosting a Zoom call.
- Mic and camera test for Google MeetVerify audio and video before a Google Meet session.
- Mic and camera test for Microsoft TeamsCheck mic, camera, and speakers before a Teams meeting.
- Full webcam and mic testTest camera and microphone together with a live preview.
- Microphone testLive audio level meter for input devices and headsets.
Privacy
The speaker test is one-way — it only outputs audio. There is no getUserMedia microphone request, no MediaRecorder, no upload, and no telemetry on the audio. Everything happens entirely inside the browser tab. You can open the Network panel of your browser's devtools while running the test and see that zero requests go out.
The only exception is the optional "show device names" button under the output picker. To reveal the labels of your output devices (some browsers gate that behind a permission grant), the tool briefly requests microphone permission and immediately stops the stream — no audio is ever captured. If you skip that button the picker still works, but devices show as generic IDs rather than their actual names.