Morse Code Decoder
Drop in a recording or hold the microphone to the sound. The decoder finds the tone, works out the speed and writes down the text.
Expert settings
Nothing leaves your device. The file is decoded in your browser and the microphone feeds directly into it - there is no upload and no server involved. Give it around ten seconds of signal; below that there is not enough to measure the timing from.
Decoder or translator: which one you need
Two different jobs, and most sites offer only the second one under both names.
- This decoder reads sound. Beeps from a file, a video played next to your phone, a radio, or someone tapping a key. It works out the tone frequency in hertz, the sending speed in words per minute and the text, and none of that is written down anywhere beforehand.
- The Morse code translator reads written dots and dashes. If you already have
... --- ...as text, paste it there and it comes back as plain text instantly. It also converts text into Morse code, plays it as audio beeps and flashes it as light.
So: heard it, use this page. Read it somewhere, use the translator. If what you have is a blinking light rather than a sound, the light decoder reads that through the camera, and a photo of dots and dashes goes into the image decoder.
What the decoder actually does
Four steps, and each one can go wrong on its own.
- Find the tone. Morse on the air, what radio amateurs call CW, is a single steady pitch, usually between 400 and 900 Hz. The decoder scans that range and keeps the tone frequency that carries the most energy across the whole recording.
- Measure that tone over time. Every five milliseconds it asks one question: how strong is this one frequency right now? That gives a curve which rises for every mark and falls in every gap. The picture above the expert settings is exactly that curve.
- Decide where the tone is on. The threshold is not fixed. It is placed between the quiet and the loud part of the recording, so a faint tape and a loud one are read the same way.
- Read the timing. The shortest marks are dots, three times that is a dash, and the gaps of one, three and seven units separate symbols, letters and words. From the length of one unit the decoder also states the sending speed in WPM: 60 milliseconds per unit is 20 words per minute, 120 milliseconds is 10.
The measurement in step two uses the Goertzel algorithm. It costs two multiplications per sample for a single frequency, where a full spectrum would cost far more and then throw almost all of it away. For a signal that consists of exactly one tone, that is the right tool.
Where it fails, and why
Machine-generated Morse decodes almost perfectly. Everything else depends on how the signal was made.
- Uneven hand sending. If the gap between two letters is shorter than the dash next to it, no decoder on earth can tell where one letter ended. A human operator uses the language to guess; this one does not guess.
- Two signals at once. The decoder locks onto one pitch. If another station sits within a few dozen hertz, both end up in the same measurement and the result is nonsense. The expert settings let you name the pitch yourself and shut the other one out.
- Fading and heavy noise. A signal that comes and goes takes the threshold with it. Short recordings of a strong passage work better than long ones full of holes.
- A recording of only dashes. This one is not a flaw but a real ambiguity: a string of dashes with letter gaps looks exactly like a string of dots at a third of the speed. Without more to go on, the decoder reads dots.
Getting a clean reading
- Feed it ten to twenty seconds. Long enough to see dots, dashes and word gaps; short enough that the speed does not drift.
- Hold the phone close to the speaker rather than turning the volume up. Room echo smears the edges of every mark.
- Watch the signal picture. If it shows a solid block instead of separate bars, the tone was found in the wrong place. Enter the pitch by hand in the expert settings.
- Only touch the threshold if the picture looks right and the text does not. Raise it when noise is being read as tone, lower it when quiet marks are being dropped.
The microphone path uses the raw signal: echo cancellation, noise suppression and automatic gain are all switched off. Those three are built for speech, and every one of them treats a steady tone as something to remove.
Frequently asked questions
-
Is my recording uploaded anywhere?
No. The file is read and decoded in your browser, and the microphone signal never leaves the page. There is no server that could receive it.
-
Which audio formats work?
Whatever your browser can play: mp3, wav, m4a, ogg and others. The file is handed to the browser first, so if it plays, it decodes.
-
Why does the text come out garbled?
Usually the sending, not the decoding. Uneven gaps between letters are the most common cause, a second signal on a nearby pitch the second most common. Look at the signal picture: clean bars with clear gaps mean the decoder had something to work with.
-
Can it decode Morse code in real time?
Yes, that is what the microphone mode is for. It keeps looking at the last twenty seconds of sound and rewrites the text as more arrives, so you see the message build up while it is still being sent rather than after it has stopped.
-
Is this Morse code decoder free?
Yes, with no account and no limit. It runs in your browser, so there is no server cost tied to how much you decode.
-
Are punctuation marks supported?
Yes. The decoder uses the full international table: 26 letters, 10 digits and 18 punctuation marks, plus prosigns such as SOS, which come back as one run rather than three letters.
-
What sending speed can it handle?
Measured on clean audio, 5 to 80 WPM with the reported speed exact to the whole number. There is nothing to set: the decoder works the speed out of the signal itself and shows it next to the tone frequency. In practice the limit is never the algorithm but the sending, because uneven gaps confuse the timing long before the speed does.
-
Can it decode Morse without gaps between the letters?
No, and neither can a person. The gaps are what separate one character from the next. Count the possibilities for
...---...without them and there are 236 valid readings: SOS, but also V7, 3B, SMB and more than two hundred longer ones. A gapless run only works for a signal everyone already knows, which is exactly why prosigns are sent that way and ordinary text is not. -
Can it decode a light signal or a video?
Not with this tool - it listens for a tone. For a blinking light there is a separate one: the light decoder reads the camera live. A recorded video file is not supported yet by either.