Recording Quality Check Guide
Reference for the DeskTest.net Recording Quality Check: what each number means, the ACX-style targets it grades against, why dBFS is not the same as loudness, and how to fix a failing measurement.
Open the Recording Quality Check ->
What does this check?
The Recording Quality Check answers one question: is this microphone, in this room, at this gain, clean enough to record? It does that in three steps, entirely in the browser:
- Setup and noise floor. It asks for the mic with echo cancellation, automatic gain control (AGC), and noise suppression all turned off, then records about 3 seconds of silence to measure the room's noise floor - how loud the "quiet" is.
- Speech. It records about 5 seconds of you talking normally, at the distance you would really record from, and measures the peak level, the average speech level, and how many samples hit digital full scale (clipping).
- Grade. It compares each number to a published spec (the ACX audiobook targets, which double as sensible general-podcast targets) and gives each a Pass, Check, or Fail with a specific fix.
How is this different from the Mic Test?
The Mic Test answers "does the mic work?" - permission, signal, playback. It happily passes a mic that is technically working but recording in a noisy room at a bad level. This tool answers the next question: "are the numbers good enough to publish?" It leaves the browser's audio processing off so the measurements reflect your real signal, and it grades against a spec instead of just checking for any signal at all.
dBFS is not loudness (SPL)
Full scale is 0 dBFS. Everything you record is below it, so the numbers are negative. A peak of -3 dBFS is 3 dB below the ceiling; a noise floor of -60 dB RMS is very quiet relative to that ceiling.
The targets it grades against
These are the ACX audiobook submission targets, widely reused for spoken-word podcasts:
| Measurement | Target | What it protects |
|---|---|---|
| Peak level | -6 to -3 dBFS, no clipping | Headroom - loud enough to use the range, with room before distortion. |
| Noise floor | at or below -60 dB RMS | Quiet background - hiss and hum stay below the voice. |
| Speech level (RMS) | -23 to -18 dB RMS | Consistent loudness - matches how loud published spoken word sits. |
The tool marks a number Pass inside the band, Check when it is close but outside, and Fail when it is well outside or clipping. The overall verdict is the worst of the three.
Reading the three numbers
Peak level (headroom)
The single loudest sample in your speech capture, in dBFS. Too close to 0 (or clipping) means no headroom - a louder word will distort. Too far below -6 means you are recording quietly and will have to amplify later, which also lifts the noise. The sweet spot is a loudest peak between -6 and -3 dBFS. Any sample at or over full scale is counted as clipping and fails outright.
Noise floor
The RMS (average energy) of the silence capture, in dB RMS. This is the sound of your room and gear doing nothing: fans, AC, computer whine, mains hum, traffic. At or below -60 dB RMS is clean enough that listeners will not notice it under your voice. Above -50 dB RMS it becomes audible in pauses.
Speech level (loudness)
The RMS of the whole speech capture, in dB RMS - your average loudness, not the peaks. ACX asks for -23 to -18 dB RMS. Sitting in that band means your recording is already close to publish loudness before any mastering.
Why processing must be off (and Safari)
Browsers can apply echo cancellation, automatic gain control, and noise suppression to a mic stream. Those are great for a video call and ruinous for a measurement: AGC silently rides your gain so peak and RMS become meaningless, and noise suppression erases the very noise floor we are trying to measure. So the tool requests all three off.
track.getSettings() after the mic opens; if it cannot confirm processing is off, it marks the floor Check, says the number is not trustworthy, and steers you to Chrome or Edge on desktop, which honour the request. It will never show a forced-clean floor as a genuine Pass.Fixing each failing number
Clipping / peak too hot
Lower the input gain on your interface, mixer, or OS sound panel until the loudest words peak around -3 to -6 dBFS. Turn off any "mic boost" or "+20 dB" option. If there is no gain control, back off from the mic a couple of inches.
Peak too quiet
Move closer to the mic (a hand-span is typical for spoken word), raise the input gain, and confirm the intended mic is the selected input - not a distant built-in laptop mic.
Noise floor too high
Kill the sources: fans, AC, air purifiers, a nearby computer or projector. Close windows and doors. Record in a smaller, softer space (soft furnishings, curtains, even a closet) to cut reflections and hiss. A dynamic mic held close to the mouth rejects far-off room noise far better than a condenser.
Speech level off
If too quiet, speak up slightly or move closer and raise the gain so your average sits near -20 dB RMS. If too loud, ease the gain down or move back. Aim for -23 to -18 dB RMS.
Floor marked "not trustworthy"
Re-run in Chrome or Edge on desktop. Safari and many mobile browsers force noise suppression on, which hides your real floor.
Behind the scenes
getUserMedia({audio:{echoCancellation:false, autoGainControl:false, noiseSuppression:false, channelCount:1}}) runs inside the Run-button click so the browser counts it as a user gesture. Immediately after, track.getSettings() reports which of those processors the browser actually applied; anything it will not confirm as off downgrades the floor result.
Each capture routes the MediaStream through a MediaStreamSource into a ScriptProcessorNode, whose onaudioprocess callback sees every sample in contiguous blocks. For each block the tool tracks the maximum absolute sample (peak), sums the squares (for RMS), and counts samples at or over 0.99 (clipping). Because it reads every sample rather than sampling an FFT window, the peak and clip counts are exact rather than estimated. The processor's output buffer is left silent, so nothing is routed back to your speakers - no echo.
Peak is 20 * log10(maxAbsSample); RMS is 20 * log10(sqrt(meanOfSquares)). Nothing is written to a file, saved, or uploaded; this page makes no network requests. On completion, reset, or leaving the page the tool stops every track and closes the AudioContext.
Related
- Recording Quality Check - the tool itself
- Mic Test Guide - "does the mic work?", the step before this
- Speaker Test Guide - the equivalent for audio output
- About DeskTest.net
- DeskTest.net home