A Morse code decoder turns a beep back into letters by measuring two things: how long the sound is on, and how long it is off. There is no dictionary in it and nothing to guess. A dot is 1 unit, a dash is 3, and the silences are 1, 3 or 7 units long, so the whole job is timing a switch.
That is why decoding looks easy and often is not. The beeps are the obvious
half. The silences are the other half, and a machine has to measure them through
room noise, echo, a fading signal and a human hand that does not keep perfect
time. Get one silence wrong and .... . stops being HE and becomes the digit 5.
Nothing in that is secret. Every bad decode traces back to a mismeasured duration or to noise crossing the threshold, and both leave a signature you can read straight off the screen.
Want to point your phone at a beep and read it? MorseLab decodes live Morse audio through the microphone, free and offline.
What a decoder is actually measuring
Morse is one steady tone switched on and off. The pitch carries no information — a high beep and a low beep say the same thing — so a decoder throws the pitch away and keeps the pattern.
Everything left is measured in units, where one unit is the length of a dot.
| Element | Units | The decision the decoder has to make |
|---|---|---|
| Dot | 1 | Was that mark short or long? |
| Dash | 3 | Same question, other answer |
| Silence inside a character | 1 | The letter is not finished |
| Silence between characters | 3 | The letter is finished, print it |
| Silence between words | 7 | The word is finished, print a space |
Two sounds and three silences. Nothing else exists in the signal.
The absolute lengths come from one piece of arithmetic: dot length in seconds = 1.2 ÷ WPM. At 20 words per minute the dot is 60 ms, the dash is 180 ms, the gap between letters is 180 ms and the gap between words is 420 ms. At 5 WPM every one of those numbers is four times bigger. The timing and WPM post works through the ratio in full.
Notice that a dash and a letter gap are both 3 units. One is sound, the other silence. A decoder that measures marks well and gaps badly produces the right dots and dashes in the wrong groups, which reads as nonsense.
The three steps inside an audio decoder
Whatever the software, the shape is the same.
One: find the tone. The decoder listens in a narrow band around the pitch of the beep and ignores everything else. That is what makes Morse survive noise: a single steady tone is easy to pick out of a mess, which is also why it gets through on a radio path where speech would not.
Two: turn it into on and off. The energy in that band is compared against a threshold. Above it the tone is on, below it off. The output at this stage is not letters but a list: on for 180 ms, off for 60 ms, on for 60 ms, and so on.
Three: sort the durations into buckets. The decoder estimates how long your dot is, then sorts every mark into dot or dash and every silence into element gap, letter gap or word gap. Only then does it look anything up. That last step is the only one that can be clever. The rest is measurement.
Where a decoder puts its fences
A decoder does not know your speed in advance. It estimates the dot length from the first marks it hears, then draws fences halfway between the values it expects: 2 units for the boundary between a dot and a dash, 2 units again for the boundary between a gap inside a character and a gap between characters, and 5 units for the boundary between a letter gap and a word gap.
Halfway between 1 and 3 is 2. Halfway between 3 and 7 is 5. From those you can compute the fences for any speed.
| Speed | Dot | Dot or dash fence | Letter gap fence | Word gap fence |
|---|---|---|---|---|
| 5 WPM | 240 ms | 480 ms | 480 ms | 1,200 ms |
| 12 WPM | 100 ms | 200 ms | 200 ms | 500 ms |
| 20 WPM | 60 ms | 120 ms | 120 ms | 300 ms |
| 25 WPM | 48 ms | 96 ms | 96 ms | 240 ms |
Now look at what happens when the estimate is stale. Say a decoder locked onto 12 WPM from your first few characters, so its dot-or-dash fence sits at 200 ms. Then you speed up to 20 WPM. Your dashes are now 180 ms, which is under that fence, so every dash prints as a dot and the output collapses into E, I, S and H.
Go the other way and the same thing happens in reverse. A decoder locked to 20 WPM has its fence at 120 ms. Send at 5 WPM and your 240 ms dots sail over it, so everything prints as a dash: T, M and O, forever.
A page of nothing but E, I, S and H means you are sending faster than the decoder thinks. A page of T, M and O means you are sending slower. Neither is a mystery once you know where the fence is.
The gaps are where the errors come from
The code is not self-separating. The same run of beeps can be several different messages, and only the silences say which. Five dots is the classic demonstration:
..... 5
.... . H E
... .. S I
.. ... I S
. .... E H
. . . . . E E E E E
Six readings, identical sound, different silences. A decoder that mismeasures one gap in that run does not produce a slightly wrong answer. It produces a different word.
The same trap works with dashes mixed in:
-.-. C
-. -. N N
-.- . K E
- . - . T E T E
The information is in the ratio between sound and silence, so squeezing the silence destroys it. If you want a decoder to read you, the gaps matter more than the beeps do.
What breaks a decode, and what it looks like
Every failure mode leaves a signature. Once you can read the signature you can fix the cause instead of blaming the software.
| What went wrong | What appears on screen | Why |
|---|---|---|
| Dashes sent too short | I instead of A | .- measured as .. |
| Gaps inside a letter stretched | N I instead of B | -... split into -. and .. |
| Gaps between letters squeezed | 5 instead of H E | .... . merged into ..... |
| Word gaps too short | One long run-on word | The 5-unit fence never gets crossed |
| A cough, a click, a chair scraping | A stray E or T in the middle of a word | One short blip is a whole character |
| Room echo behind the speaker | T instead of E, M instead of I | Reverb stretches a mark past the fence |
| Signal fading mid-character | S instead of H | An element is lost entirely |
| Speed changed mid-message | A clean start then garbage | The dot estimate is stale |
A note on two of them.
Stray E and T are the tell of a noisy room. E is one dot and T is one dash, the two shortest characters in the code, so any brief noise that crosses the threshold becomes one of them. If a decode is peppered with E and T you did not send, the problem is around the microphone, not at the sender.
Hand-sent Morse is harder than machine-sent Morse. An operator's timing wanders: dashes come out at two and a half units, a gap before a familiar letter shortens, a tired hand slows down. Ears cope easily, because you hear the rhythm of the whole character and you know what words look like. A decoder measuring one interval at a time has neither advantage.
How to give a decoder something it can read
Most bad decodes are input problems, and most input problems take ten seconds to fix.
- Get the microphone close to the sound. Distance adds room noise and echo in equal measure, and echo is the one that turns dots into dashes.
- Kill the other noise. A fan, a television, traffic through an open window. The decoder cannot tell your beep from anything else in the same band.
- Keep the volume steady and not too loud. A clipping, distorted tone smears the edges of each mark, and the edges are what is being measured.
- Hold one speed. Changing speed mid-message invalidates the estimate the decoder is working from.
- Start with something you know. Send a run of V
...- ...- ...-and check the reading before you trust the rest. An even, repeated rhythm is the easiest thing for a decoder to lock onto. - Exaggerate the gaps rather than the marks. A word gap that is too long costs you nothing; one that is too short merges two words permanently.
- Prefer a direct sound path. Phone to phone across a table beats a speaker at the far end of a hall, and a blinking torch is not something an audio decoder can read at all.
When the decoder is wrong and you are right
A decoder reads what was sent. A person reads what was meant, which is a different and better job.
Three kinds of problem a machine cannot resolve on its own:
Prosigns that share a pattern with punctuation. Some strings are two valid things at once, and only context picks the winner.
| Same dots and dashes | Reads as | Also reads as |
|---|---|---|
-...- | the = sign | BT, the prosign for a break |
.-.-. | the + sign | AR, the prosign for end of message |
-.--. | an opening bracket | KN, go ahead, named station only |
There is more on those in prosigns, Q-codes and the NATO alphabet.
Prosigns sent with no letter gaps at all. SOS is the famous one. It is a
prosign, sent as one unbroken run of three dots, three dashes and three dots:
...---.... Sent as three separate letters with 3-unit gaps, ... --- ..., it
is a different signal, and a loose gap fence will confuse them. It also does not
stand for "Save Our Souls" or "Save Our Ship": both are backronyms invented
after the fact, and the pattern was chosen because it is unmistakable and easy
to send. SOS in Morse code has the full story.
A missed element inside an ordinary word. If the decoder prints THE CAT SAT
ON THE MAT with one letter mangled, you will fix it without thinking. The
machine has no idea a word is missing a vowel. Errors are also signalled on the
air with eight dots, ........, meaning disregard the last word: a run that
matches no character in the table, so most decoders print nothing for it.
Treat a live decode as a first draft: right about most of the message, confidently wrong about a few characters, and only you can tell which is which.
Decoding a written string by hand
If someone sends you dots and dashes as text, you do not need software at all. Split the string at the spaces, look each group up, and put a real space where you see a slash.
Take this:
.... . .- .-. / - .... .. ...
Group by group:
.... H
. E
.- A
.-. R
/ (word gap)
- T
.... H
.. I
... S
That reads HEAR THIS. The alphabet chart is the lookup table, and the numbers and punctuation post covers the rest of the characters.
Hand decoding needs two rules to stay reliable. Never guess at a group with
missing spaces: -.-...- could be -.-. ..- for CU or -.- ...- for KV, and
there is no way to choose. And write the letters as you go rather than copying the dots
and dashes out again, which is where transcription errors come from.
One to try:
-.. --- - ... / .- -. -.. / -.. .- ... .... . ...
It reads DOTS AND DASHES.
A decoder is a checker, not a teacher
This is worth being blunt about, because it is the thing people get wrong after they find a decoder that works.
Software that reads Morse for you is an excellent test instrument. Send a word, look at what it printed, and you have an honest opinion about your timing from something that is not being polite. There is more on using it that way in Morse code practice.
What it will not do is make you able to copy by ear. That is a separate skill built by listening, and it takes weeks of short daily sessions for most people. You can memorise the whole chart in a day, which is a real and useful thing, but memorising the chart and copying at speed are not the same achievement and nobody should promise you a number of days. Two ideas do speed it up, and they are constantly presented as rivals when they are not: Koch decides which characters you learn and when the next one is added, always at full speed, while Farnsworth stretches the silence between characters and leaves the characters themselves untouched. They change different variables, so they combine: Koch vs Farnsworth goes through it properly, and how to learn Morse code puts both into a plan.
I built MorseLab partly because this pair of jobs belongs in one place. Hold the phone near a beep and it decodes the live audio and prints the letters as they arrive; type a message and it plays it back as a tone, a flashlight blink, a screen flash or a vibration, so you can feed a decoder something you already know the answer to. It also carries the chart, prosigns and Q-codes for the moments a reading does not make sense, and Koch-method lessons for the listening skill the decoder cannot give you. It runs offline, with no account, in 16 languages.
Common mistakes
Blaming the software for a room. Stray E and T scattered through a decode means noise crossed the threshold. Move closer, turn the fan off, try again.
Sending at a speed you cannot hold. A decoder tracks a steady sender easily and a wandering one badly. Slow and even beats fast and ragged every time.
Squeezing the gaps. Half the message is silence. Rushing the space between letters is the fastest way to turn a clean message into a single unreadable word.
Expecting a decoder to read a hand key perfectly. It will not, and that is not a defect. Human timing wanders, and the machine has no context to repair it with.
Pasting Morse with typographic dots and dashes. Bullets and en dashes look correct and decode nowhere. Retype the string with a real full stop and a real hyphen before you decide a tool is broken. The translator guide covers that in detail.
Treating the decode as the message. It is a draft. Read it as a person, fix the obvious, and ask for a repeat of anything that matters.
Questions people ask
How do I decode Morse code from audio?
Play or record the beeps and let software measure them. It picks the tone out of the background, times every mark and silence, estimates your dot length, and sorts the results into dots, dashes, letter gaps and word gaps. You can do the same by ear once you learn the rhythms — see reading Morse by sound.
Can my phone decode Morse code through the microphone?
Yes. A phone microphone and a modest amount of processing are enough, and it needs no connection because the whole code is one small lookup table. Hold the phone reasonably close to the source and keep other noise down.
Why does my decoder print random letters?
Almost always noise or a speed mismatch. Lots of stray E and T means the microphone is picking up something other than your tone. All E, I, S and H means you are sending faster than the decoder's estimate; all T, M and O means you are sending slower.
Can a decoder read hand-sent Morse?
Sometimes, and rarely as well as it reads a machine. A human hand produces dashes that are not exactly three units and gaps that vary with fatigue. A practised operator's sending decodes well; a beginner on a straight key often does not.
What speed should I send for a decoder to read it?
Any speed you can hold without drifting. Consistency matters far more than the number. Somewhere between 5 and 15 words per minute is comfortable to send by hand and easy for software to track, which puts your dot between 240 ms and 80 ms.
Can you decode Morse code without knowing the spacing?
No. The gaps are half the information. Five dots in a row are the digit 5, or H followed by E, or S followed by I, or three other readings, and only the silences separate them. A string with the spaces stripped out cannot be decoded, only guessed at.
Does a Morse code decoder need the internet?
No. Decoding is measurement plus a table of 26 letters, 10 digits and 16 punctuation marks, all of which fits on the device. A decoder should work in a basement, on a boat or on a plane. The features that actually matter are worth comparing before you settle on one.
Can a decoder tell SOS from S O S?
Only if its gap measurement is good. The prosign ...---... is sent unbroken,
with no letter gaps inside it, while ... --- ... is three separate letters
with 3-unit gaps between them. The beeps are identical; the silences are not.
Do I need a radio to try this?
No. Any tone source works — a second phone, a computer, a buzzer. A radio only enters the picture when you want to send and receive over distance, which is a separate step covered in Morse code for ham radio.
Get it: MorseLab — free on iPhone and Android. The link opens your own app store.
Keep reading
- Morse Code Translator — the other direction, from text to dots and dashes.
- Morse Code Timing and WPM — the 1:3:7 ratio and the arithmetic behind every fence in this post.
- How to Read Morse Code by Sound — decoding with your own ears instead of a microphone.
- Prosigns, Q-Codes and the NATO Alphabet — the strings a decoder reports as punctuation.
- Morse Code: The Complete Guide — where everything else in the series fits.



