Morse Code Reader

Play Morse at your microphone, or upload a recording, and read what it says. You do not have to know the speed. That is worked out from the signal.

The audio never leaves your device. It is decoded in the page and nothing is uploaded or stored.

How to use it

  1. Press Start listening and allow the microphone when your browser asks.
  2. Play the Morse, from a speaker, a key, a torch held to the camera of another device, anything that goes loud and quiet in time.
  3. Press Stop and decode. The text, the Morse and the speed it read all appear.

How it reads a signal

It measures energy over short windows: a few milliseconds each, which gives the shape of the sound rather than the sound itself. That shape is a run of loud stretches and quiet ones, and everything else follows from their lengths. Because it works on energy and not on pitch, it never needs to be told what tone to listen for, and a 600 Hz sidetone, a 1 kHz beep and a buzzer all decode the same way.

The threshold between loud and quiet is taken from the recording itself, since nothing about a microphone's absolute level is knowable in advance. Then the tone lengths are sorted into two groups, dots and dashes sit in a three-to-one ratio, and the shorter group gives the dit, which gives the speed, which gives everything else.

One subtlety worth stating, because it is the difference between roughly right and right: the detector switches on partway up each tone and off partway down, so every tone measures slightly short and every gap slightly long, by the same amount. Reading both and averaging cancels the error exactly. Reading only the tones would report a speed a few per cent too fast.

What it will not do

It will not guess. If the sound has no keying in it, silence, or a tone held unbroken, it says so instead of producing a plausible-looking string. If the tones are there but the speed cannot be determined, it says that too. Both are cases where a decoder that always returns an answer is returning fiction.

It also decodes after you stop, not as you go. Reading Morse depends entirely on how long each sound lasts, and a live view built the easy way samples the microphone in gaps, which corrupts exactly the measurement everything else rests on. Decoding the recording in one piece is slower to watch and correct.

Frequently asked

Do I have to tell it the speed?

No, and you cannot. The speed is measured from the signal: the tones fall into two clusters in a three-to-one ratio, and the shorter one is the dit. That is also how a human operator does it, you find the rhythm before you find the letters.

Does the audio go anywhere?

No. The decoding happens in the page, on your device. Nothing is uploaded, nothing is stored, and the microphone is only ever opened after you press the button.

Why does it sometimes say it cannot pin the speed?

Because some transmissions genuinely cannot be read. A signal of nothing but dashes separated by letter gaps has exactly the same pattern of sounds and silences as one of nothing but dots separated by element gaps, "T T T" and "S" are the same recording at different speeds. Rather than pick one and present it as fact, it says so.

Why does it work better on a clean tone than through a room?

It reads the shape of the sound over time, so anything that changes that shape costs accuracy: room echo smears the edges of each element, and background noise raises the floor until the quiet parts stop being quiet. It asks your browser to switch off echo cancellation, noise suppression and automatic gain control for exactly this reason, automatic gain in particular exists to flatten loud and quiet passages, which is the whole signal here.

Can it read a torch or a lamp?

Only if you can get the light into it as sound. There is no camera input here. If you have a recording of a signal lamp, though, the same decoder handles it, it measures energy over time and does not care what produced it.

If you already have the dots and dashes written down, the decoder is the tool you want. To make a signal for this one to read, the audio page will play or download any message.