About this hearing test

A small, dependency-free tool that plays tones through the Web Audio API and asks you a simple question at each step. No account, no upload, and nothing you answer is ever recorded anywhere.

Why it exists

High-frequency hearing loss is one of the most common and least-discussed effects of getting older, and most people have never actually heard where their own top end currently sits. A step-by-step tone ladder makes that concrete in about a minute, and the “mosquito tone” phenomenon — a pitch many teenagers can hear that most adults can’t — is a genuinely fun, low-stakes way into the topic.

The honest catch, explained in full on the main page, is that a browser-based tone test cannot separate your ears from your speakers, your headphones, your volume setting and the room you're sitting in. This page exists to say that plainly rather than let a fun tool imply more precision than it has.

How the tone playback is built

Every tone is a fresh OscillatorNode set to a sine wave at the target frequency, run through a GainNode that ramps from silence up to the chosen volume over about 25 milliseconds and back down to silence over about 35 milliseconds before the oscillator stops and both nodes are disconnected. That ramp is what keeps every tone free of the click or pop a sudden on/off would otherwise produce.

The AudioContext itself is created — and resumed, if a browser has started it suspended — synchronously inside the click handler for the first Play button you press. Browsers require a real user gesture before they will let audio play at all; building the context any earlier, or resuming it inside a promise callback after the gesture has already ended, is a common way for a Web Audio tool to end up silently doing nothing. This tool creates exactly one AudioContext per page visit and reuses it for every subsequent tone, guided or free-play.

The volume slider is deliberately capped well under full digital scale even at its maximum setting, because a pure tone at a given gain value tends to read as louder and sharper to the ear than music or speech at the same value — all of the energy sits at one frequency instead of being spread out.

How the ladder and the age-band mapping were checked

The step ladder and the frequency-to-age-band mapping are pure functions with no dependency on the DOM or the Web Audio API, so they can be — and were — exercised directly under Node.js before shipping:

  • The ten ladder steps (8, 10, 12, 14, 15, 16, 17, 18, 19 and 20 kHz) were checked to be strictly ascending and to fall entirely within the nominal human hearing range of 20 Hz to 20,000 Hz.
  • 17,000 Hz was checked to resolve to the youngest age band, and 12,000 Hz to a band in the middle of the scale — confirming the bands land where the visible copy on the main page says they do.
  • The case where nothing at all was audible — not even the lowest, 8 kHz step — was checked to resolve to a defined floor band rather than throwing, returning undefined, or silently defaulting to the youngest band.
  • The mapping was checked for monotonicity across a run of increasing sample frequencies: a higher confirmed frequency never resolves to an older age band than a lower one did.
  • Frequency clamping (20–20,000 Hz) and the kHz/Hz display formatting were each checked against known inputs, including malformed values like NaN.

You can inspect the same logic yourself in your browser’s console on any page of this tool: HearingTest.ageBandForFrequency(17000) and HearingTest.LADDER_HZ are both exposed for exactly that purpose.

Scope and honesty about limits

This is a browser toy for rough comparison and general-audience education about presbycusis, built with the same care as every other tool on this site — but the domain it touches (hearing) makes the limits worth restating plainly, not just once on the main page:

  • It is not a medical device and not an audiometric test. It cannot diagnose hearing loss, tinnitus, or any other condition.
  • It cannot distinguish your ears from your hardware. A tone your speaker never reproduces and a tone your ears never detect look identical to this tool.
  • It has no volume calibration. The same slider position produces a different real-world sound pressure level on every device, so results are not comparable between people, or even reliably between two sessions on different hardware.
  • The age bands are a popular-science approximation, not a validated clinical scale, and individual variation in presbycusis is large enough that they should be read as illustrative rather than predictive.

If you have a real concern about your hearing, please see a professional audiologist — this page, and the tool it describes, is not a substitute for that.