Upload an audio or video file with Morse code or turn on your microphone — the decoder finds the tone, works out the speed and shows the text. Latin and Cyrillic letters share their Morse codes, so you get both readings. The sound is processed in your browser and goes nowhere.
Sound is processed in your browser: nothing is uploaded or stored
We look for the loudest steady frequency between 250 and 2500 Hz. If there are several signals, you can pick another on the spectrogram.
Filter
Step 2
620 ± 50 Hz
We keep a narrow band around the tone; everything else, from voices to neighbouring stations, is cut off.
Envelope
Step 3
▁▇▇▇▁▇▁▁▇▇▇
We follow the loudness inside the band and mark where the tone sounds and where it doesn't.
Dot or dash
Step 4
60 ms · 180 ms
Signal lengths split into two groups: short ones are dots, long ones are dashes. The absolute speed doesn't matter.
Gaps
Step 5
1 · 3 · 7
Gaps split into three groups: inside a letter, between letters and between words. With no word gaps, into two.
Speed
Step 6
WPM = 1200 / 60 = 20
Words per minute is 1200 divided by the dot length in milliseconds. A live operator's speed drifts, so we recalculate as we go.
04
Frequently asked questions
Drop an audio or video file onto the page, or press Microphone and hold your phone near the sound. The decoder finds the tone and the speed by itself and shows the text in two readings, Latin and Cyrillic. If the result looks odd, open the settings: you can set the tone, filter width and speed by hand, and pick another tone by clicking the spectrogram.
WAV, MP3, OGG and M4A, plus MP4, MOV and WebM video — the sound track is taken from the video. Files up to 20 MB and 10 minutes long. The browser itself reads the file, so the formats depend a little on it: WebM, for example, doesn't open everywhere in Safari. If your browser can't read the sound, save the recording as WAV or MP3.
Russian and Latin Morse use the same signals: ·− is both A and А, and −·−− is both Y and Ы. The sound doesn't tell which alphabet the sender meant, so the decoder shows both readings and puts first the one with more real words from its dictionary. If you already know the alphabet, switch it to Latin or Cyrillic and get a single reading.
Clean recordings decode almost without errors. Off-air recordings suffer from noise and neighbouring stations: click the right tone on the spectrogram and narrow the filter in the settings. Uncertain characters are underlined with dots — hover over one to see what else it could be. When confidence is low, the decoder says so instead of passing a guess off as the answer.
No. Sound from the microphone is analysed on the fly in your browser and thrown away at once: only the loudness at the tone frequency and the letters found are kept in memory. Nothing is saved on your device or on a server, and nothing is sent anywhere. The browser gives access only after you allow it, and the Stop button turns it off.
Press Sample: there are recordings at different speeds, with noise, with stretched Farnsworth gaps and an off-air one with two stations. You can make your own too: type a text on the main Morse code page, download the WAV and drop the file here. That way you see how the decoder finds the tone, the speed and the gaps between letters.