Back to Audio
DTMF audio decoder — phone touch-tone WAV/MP3 → 0-9 / * / # / A-D

DTMF audio decoder — phone touch-tone WAV/MP3 → 0-9 / * / # / A-D

Decode **DTMF (Dual-Tone Multi-Frequency)** phone touch-tones from WAV / MP3 / OGG audio. The decoder runs the **Goertzel algorithm** on the 8 canonical frequencies (697 / 770 / 852 / 941 Hz × 1209 / 1336 / 1477 / 1633 Hz) and maps detected pairs to the 16 keypad symbols (0-9, *, #, A-D). Each detected tone reports start time, duration, and confidence. Useful for analysing IVR recordings, retro phone-system research, CTF, and phreaking education. Everything runs in your browser via the Web Audio API — your audio never leaves your device.

audiodeveloper

How to use

Drop a WAV / MP3 / OGG / FLAC / WebM file and the tool runs **Goertzel filters** on 20 ms windows for the 8 standard DTMF frequencies (697 / 770 / 852 / 941 Hz × 1209 / 1336 / 1477 / 1633 Hz), classifies tone presence via twist ratio + band energy, and emits one of 16 keypad symbols (0-9, *, #, A-D) per detected tone with start time, duration, and confidence. A built-in **sample** synthesises `12345` as 100 ms tone + 60 ms silence for sanity-checking. Useful for analysing IVR recordings, CTF puzzles, phreaking studies.

In depth

DTMF decoding recovers plaintext digits — including historically sensitive ones

DTMF tones encode the numbers and symbols on a telephone keypad. IVR systems still use them to collect input: press 1 for sales, enter your PIN, confirm your account number. When a phone call recording contains DTMF sequences, decoding them recovers exactly what the caller keyed in during that call — which may include phone extensions, PINs, credit card numbers, or access codes.

The AT&T touch-tone system was designed in an era before widespread call recording awareness. The fact that DTMF is transmitted as audible tones in the voice band means any recording of the call captures the keypresses. This tool is primarily useful for IVR analysis, CTF puzzles, and amateur radio education — but the same mechanics apply to real call recordings.

Sending telephone recordings to cloud analysis services

Call recordings are among the more sensitive types of audio data. They contain voices, conversation content, and potentially keyed-in codes. Uploading a recording to a cloud service for DTMF analysis delivers the full audio to that service's infrastructure. If the decoded digit sequences include PINs or account numbers, those values are now part of the service's processing logs.

Even without malicious intent on the service's part, there is a structural problem: the data you wanted to analyse was in a recording that now exists on someone else's servers. Terms of service typically grant usage rights over uploaded content. For recordings from interactions with financial institutions or support lines, the content is almost certainly outside any consent framing that covers third-party cloud analysis.

Goertzel filters run against AudioContext.decodeAudioData — locally

The tool decodes audio with `AudioContext.decodeAudioData` and runs Goertzel filters on 20 ms windows for the 8 DTMF frequencies. Goertzel computes the DFT magnitude at a single frequency in O(N) per bin — about 10× faster than FFT for a fixed set of 8 bins. Tone detection requires both the twist condition (winner magnitude ≥ 4× runner-up in both row and column groups) and the energy condition (8-band sum ≥ 10% of total signal energy). Both must hold; confidence is reported as 0–1.

All computation happens inside browser memory. Open DevTools Network and drop a file: no audio-related requests appear after the initial load. The Goertzel implementation and the detection thresholds are in the GitHub source.

Using this tool responsibly on real call recordings

IVR analysis, CTF challenges, and phreaking education are the intended use cases. When applied to actual call recordings, be mindful of what the decoded digit sequences represent. Phone numbers, PINs, extension codes, and partial card numbers may all appear. The decoded output is as sensitive as the original tones — handle the results accordingly.

This tool doesn't transmit the decoded results anywhere, but downstream handling matters: copy-pasting a decoded sequence into another service, saving it in plaintext, or sharing a screenshot of the results each carries its own risk. The browser-local design keeps the extraction step private; what you do with the recovered digits from there is a separate question.

FAQ

Is my input uploaded?
No — `AudioContext.decodeAudioData` decodes locally and Goertzel runs in JavaScript. No external API.
What's DTMF?
**Dual-Tone Multi-Frequency** — the touch-tone system used since 1963. Each button mixes one **row** tone (697 / 770 / 852 / 941 Hz) with one **column** tone (1209 / 1336 / 1477 / 1633 Hz). Button `5` = 770 + 1336 Hz. Standardised by AT&T and ITU-T Q.23 / Q.24. Still active in IVRs, fax handshakes, legacy phones.
Why Goertzel and not FFT?
FFT computes all N bins (O(N log N)); we only care about 8 fixed frequencies, and **Goertzel** computes one bin at a time in O(N) — about 10× faster than FFT for this fixed-bins case.
Keypad mapping?
`1 2 3 A` (697 Hz), `4 5 6 B` (770 Hz), `7 8 9 C` (852 Hz), `* 0 # D` (941 Hz); columns are 1209 / 1336 / 1477 / 1633 Hz respectively. **A B C D** are used in military / business radio, not consumer phones, but the decoder reports them for completeness.
Detection thresholds?
**(1) Twist** — winner magnitude must be ≥ 4× the runner-up in both row and column. **(2) Energy ratio** — the 8-band magnitude sum must be ≥ 10% of total signal energy. Both must hold; confidence is 0-1.
Why 40 ms minimum tone?
ITU-T Q.24 defines 40 ms as the minimum DTMF tone length. Telco-recommended duration is 65 ms tone + 65 ms silence, but we accept the ITU lower bound to cover IVRs that send shorter pulses.
Audio format support?
Anything `AudioContext.decodeAudioData` can read — WAV / MP3 / OGG Vorbis / FLAC / WebM Opus / AAC. Max 30 MB per file (covers 10–60 s IVR recordings).
Real-world noisy audio?
Works down to SNR ≈ 15 dB. Aggressive AGC, simultaneous music, or sub-8 kbps codecs may break detection. Standard telephony quality (8 kHz, 64 kbps) decodes reliably.
How is this different from morse-decode-audio?
Morse uses a single-frequency on/off envelope, decoded by amplitude thresholding. DTMF uses two simultaneous frequencies, decoded by per-band magnitude (Goertzel). Different algorithms → separate tools, both alongside `audio-tone-detect`.

How to verify nothing is uploaded

This tool never sends your input outside your browser. The pages below explain how it works, how to audit it, and how the site is run.

Related tools

DTMF audio encoder — 0-9 / * / # / A-D → phone touch-tone WAV/MP3

DTMF audio encoder — 0-9 / * / # / A-D → phone touch-tone WAV/MP3

Synthesise **DTMF (Dual-Tone Multi-Frequency)** phone touch-tones from any keypad sequence and download them as **WAV** (16-bit PCM) or **MP3** (lamejs). Each of the 16 keypad symbols (0-9, *, #, A-D) is generated by summing one **row** tone (697 / 770 / 852 / 941 Hz) and one **column** tone (1209 / 1336 / 1477 / 1633 Hz). Configurable **tone length, gap, volume, and sample rate** (8 / 22.05 / 44.1 / 48 kHz). Preview in the browser before download. The symmetric counterpart of **dtmf-decode-audio** — useful for IVR test audio, CTF challenge crafting, retro phone-system research, and phreaking education. Everything runs in your browser; your text never leaves the device.

audiodeveloper
Morse audio decoder (WAV/MP3 → dot/dash → text)

Morse audio decoder (WAV/MP3 → dot/dash → text)

Upload a **WAV / MP3 / OGG** file containing a Morse-code signal and the tool decodes it: **envelope detection → automatic Otsu threshold → on/off run-length segmentation → dot/dash classification → Morse string → text**, with a **WPM (words-per-minute) estimate** thrown in. Useful for CW (continuous wave) practice tracks, amateur-radio drills, CTF / survival / education SOS challenges. Runs entirely in your browser via the Web Audio API — your audio is never uploaded.

audiodeveloper
Audio tone detector — fundamental pitch → note name + cents offset

Audio tone detector — fundamental pitch → note name + cents offset

Drop an audio file and the tool runs **autocorrelation-based pitch detection** in your browser to extract the fundamental frequency. Each frame is converted to a **note name (e.g. A4, F#4)** and the **cents offset** from concert pitch. Works as a software tuner for guitar / bass / vocals / flutes / whistles. The per-frame pitch track is graphed and exportable as CSV — great for vocal intonation practice or fine-tuning synth oscillators. autocorrelation excels at short isolated tones (50 ms +) but mis-fires on chords and choirs. Symmetric counterpart to `tone-generate` (frequency → tone); this tool inverts that flow (audio → note). Different from `audio-spectrum` (full frequency distribution); here we only report the fundamental. Audio is never uploaded.

audio
Audio spectrum analyzer — visualize frequency content

Audio spectrum analyzer — visualize frequency content

Drop an audio file (MP3 / WAV / M4A / FLAC / OGG / Opus) to run an in-browser FFT analysis and visualize its frequency content. A Mode toggle switches between the average spectrum (frequency vs. amplitude over the whole file) and a spectrogram (time × frequency × amplitude). Pick the FFT size (512 / 1024 / 2048 / 4096) and the frequency axis (linear / log). Useful for checking the low end before mastering, locating noise bands, inspecting an instrument's harmonic structure, or sanity-checking the S/N ratio of a lecture recording. Download the canvas as PNG, or export the average spectrum as CSV. Everything runs in your browser — no upload.

audioextract