Feed it telephone dial tones, from an audio file or the microphone, and it reads the digits back. Full 16-key grid (0-9, *, #, A-D). Runs entirely in your browser; audio never leaves your machine.
The tick is the detection floor. A digit needs one bar from each group clearly above its neighbours at the same time.
Every ~26 ms the decoder runs a Goertzel filter at the eight DTMF frequencies: rows 697 770 852 941, columns 1209 1336 1477 1633 Hz. A digit is accepted only when one row and one column clearly dominate their groups, the two levels are within 12 dB of each other (the "twist" rule from telephony specs), the pair carries most of the frame's energy, and all of that holds for two consecutive frames. Repeated digits need a short gap between presses, exactly like real dialing.
Files are decoded in one pass; the microphone path is the same math in real time (with browser noise suppression turned off, since it eats sine waves for breakfast). Nothing is uploaded anywhere; there is no server to upload to.
This tool exists because a CTF challenge was once fifty seconds of beeping and I wanted the flag in forty-nine. That story is in the CTF archive.