Split the string at the spaces, look each group up, and write a real space
wherever you see a slash. That is the whole method.
.... . .-.. .-.. --- / - .... . .-. . reads HELLO THERE: five groups, a slash,
five more groups.
The awkward part is that an ordinary Morse chart is sorted A to Z, which is the wrong index for this direction. You are not looking up a letter you already have. You have the dots and dashes and you want the letter, so you need the table sorted by pattern instead.
The other awkward part is spacing. .... . .-.. .--. is HELP. Run the same
signals together with the gaps stripped out, as ......-...--., and there are
3,165 different ways to split it that are all valid Morse. None of them is more
correct than the others. The gaps are not formatting; they are half the message.
Handed a string and want the answer now? MorseLab converts Morse back to text, decodes a live beep through the microphone and carries the chart and the prosigns, free and offline.
Sort the table by pattern, not by letter
Reading Morse means going from a shape to a character, so the index you want is one where the shapes are in order: by length first, then dots before dashes. The 26 letters fill the first four lengths, unevenly:
| Signals in the group | How many letters | Which ones |
|---|---|---|
| 1 | 2 | E, T |
| 2 | 4 | I, A, N, M |
| 3 | 8 | S, U, R, W, D, K, G, O |
| 4 | 12 | H, V, F, L, P, J, B, X, C, Y, Z, Q |
Two, four, eight, then twelve rather than sixteen. Four of the sixteen possible four-signal patterns carry no character at all in the international code, and knowing which four saves you time later.
One and two signals
| Code | Reads as | Code | Reads as |
|---|---|---|---|
. | E | .. | I |
- | T | .- | A |
-. | N | ||
-- | M |
Three signals
| Code | Reads as | Code | Reads as |
|---|---|---|---|
... | S | -.. | D |
..- | U | -.- | K |
.-. | R | --. | G |
.-- | W | --- | O |
Four signals
| Code | Reads as | Code | Reads as |
|---|---|---|---|
.... | H | -... | B |
...- | V | -..- | X |
..-. | F | -.-. | C |
.-.. | L | -.-- | Y |
.--. | P | --.. | Z |
.--- | J | --.- | Q |
The four empty ones are ..--, .-.-, ---. and ----. If your split lands
on any of those, the split is wrong, not the message. Go back one group and try
a different boundary.
Five signals is usually a number
Every digit is exactly five signals long, and the ten digits are ten of the fifteen characters that run to five signals.
| Code | Reads as | Code | Reads as |
|---|---|---|---|
.---- | 1 | -.... | 6 |
..--- | 2 | --... | 7 |
...-- | 3 | ---.. | 8 |
....- | 4 | ----. | 9 |
..... | 5 | ----- | 0 |
The shape is worth learning, because it lets you read a digit without the table
at all. For 1 to 5, count the dots at the front: .---- starts with one dot and
is 1, ...-- starts with three and is 3, ..... is all five dots and is 5. For
6 to 0 the pattern mirrors, so count the dashes at the front and add five:
-.... starts with one dash and is 6, ---.. starts with three and is 8,
----- is all five dashes and is 0. There is more on that in
Morse code numbers and punctuation.
Five more characters are five signals long, and three of them are also prosigns, which is the one place a lookup table cannot give you a single answer.
| Code | Reads as | Also reads as |
|---|---|---|
.-... | ampersand & | |
.-.-. | plus + | AR, end of message |
-...- | equals = | BT, break or new paragraph |
-..-. | slash / | |
-.--. | open bracket ( | KN, go ahead, named station only |
Six and seven signals are punctuation
If a group is six signals long, it is a punctuation mark, with one exception: the prosign SK. No letter and no digit is that long.
| Code | Reads as | Code | Reads as |
|---|---|---|---|
.-.-.- | full stop | -.-.-- | exclamation mark |
--..-- | comma | -.--.- | close bracket |
..--.. | question mark | ---... | colon |
.----. | apostrophe | -.-.-. | semicolon |
-....- | hyphen | ..--.- | underscore |
.-..-. | quotation mark | .--.-. | at sign |
One character in the standard runs to seven signals: ...-..- is the dollar
sign. Nothing else is longer.
That gives you a check on your own work. Every group in a correctly spaced message is between one and seven signals. A group of eight or more is either a spacing error or one of the prosigns below.
The groups that are not characters at all
Prosigns are procedure signals sent as one unbroken run, with no letter gaps inside them. A table lookup either fails on them or returns the wrong thing, so learn to spot them.
| Code | Signals | What it means |
|---|---|---|
.-.-. | 5 | AR, end of message |
-...- | 5 | BT, break, new paragraph |
-.--. | 5 | KN, go ahead, named station only |
...-.- | 6 | SK, end of contact |
........ | 8 | Error, disregard the last word |
...---... | 9 | SOS, distress |
SOS is the one everybody meets first. It is three dots, three dashes and three
dots sent as a single run, ...---..., with no gaps inside it. Written as three
separate letters, ... --- ..., it is a different signal, even though the beeps
are identical. It also does not stand for "Save Our Souls" or "Save Our Ship";
both were invented afterwards to explain a pattern that was chosen because it is
unmistakable and easy to send. SOS in Morse code has
the rest of it, and
prosigns, Q-codes and the NATO alphabet
covers the others.
A decode, group by group
Here is a message with the spacing intact:
.-. . .- -.. / - .... . / --. .- .--. ...
Take it one group at a time. Four groups, a slash, three groups, a slash, four groups.
.-. R
. E
.- A
-.. D
/ (word gap)
- T
.... H
. E
/ (word gap)
--. G
.- A
.--. P
... S
That reads READ THE GAPS.
Write the letters down as you go. A dot dropped while recopying a string changes the answer and looks like nothing.
A second one, with a number and a question mark
-.-. .- -. / -.-- --- ..- / .-. . .--. . .- - / - .... .- - ..--..
Work along it: -.-. C, .- A, -. N, word gap, -.-- Y, --- O, ..- U,
word gap, .-. R, . E, .--. P, . E, .- A, - T, word gap, - T,
.... H, .- A, - T, and then ..--.., which is six signals, so it is
punctuation: the question mark.
CAN YOU REPEAT THAT?
And one with a digit in it:
-.-. .- .-.. .-.. / -- . / .- - / ---.. .-.-.-
---.. is five signals, so look in the digit table: 8. The last group,
.-.-.-, is six signals, so it is punctuation: a full stop. The message is
CALL ME AT 8.
The digit and the full stop sit in the same word, one space apart like any two characters. Only a slash is a word gap.
Follow the branches instead of scanning
There is a faster way to read a group than searching a table, and it works because the code is a tree. Start at nothing, go one way on a dot and the other way on a dash, and each signal takes you one step further down.
Dot, dot, dot lands on S. One more dot lands on H. A dash instead lands on V. Once you know the first three levels by heart, the fourth level is just one step from a letter you already recognise:
| After three signals you are on | A dot takes you to | A dash takes you to |
|---|---|---|
S ... | H .... | V ...- |
U ..- | F ..-. | nothing |
R .-. | L .-.. | nothing |
W .-- | P .--. | J .--- |
D -.. | B -... | X -..- |
K -.- | C -.-. | Y -.-- |
G --. | Z --.. | Q --.- |
O --- | nothing | nothing |
Those four "nothing" cells are the same four empty patterns from earlier. The Morse code alphabet chart draws the tree out in full.
When the spacing has gone
This is the situation that brings most people to a search box: a run of dots and dashes with no gaps in it, pasted from somewhere that ate the spaces.
Without gaps, a string does not have one reading. It has many, and they are all
legal. Take five signals, .-...:
.-... & one group
.- ... A S
.-. .. R I
.-.. . L E
. -... E B
Those are five of the sixteen valid readings of that one short run. Push it out to the thirteen signals of HELP and there are 3,165. A machine cannot pick for you, because nothing in the string says which is right.
What you can do:
- Ask for it again with the spaces in. Always the best answer if the sender is reachable.
- Look for the source. If the string came from a picture, a tattoo or a bracelet, the original almost certainly had gaps that the copy lost. Reading the marks and the spaces off the picture yourself beats guessing at the text version, and Morse code from a picture covers how.
- Try the short, famous ones first. Most run-together strings people are
handed come from a small set.
...---...is SOS. If your run is nine signals and looks like three dots, three dashes and three dots, you are done. - Use word length as a constraint. If you know it is one English word of four letters, the search space collapses fast.
- Accept that it may be undecidable. A string with no gaps and no context is not a puzzle with a hidden answer. It is genuinely ambiguous.
Clean the string up before you blame the tool
A string that will not decode anywhere is usually not Morse that is wrong. It is Morse written with the wrong characters. Web pages prettify dots into typographic bullets and hyphens into long dashes because they look neater, and the result decodes nowhere while looking perfectly fine.
| What you were given | What it means | What to do |
|---|---|---|
A middle dot · or a bullet | Dot | Replace it with a full stop . |
| An en dash, em dash or minus sign | Dash | Replace it with a hyphen - |
An underscore _ standing in for a dash | Dash, if nothing else in the string is a hyphen | Replace it with a hyphen |
| A vertical bar or a backslash between groups | Word gap, in some tools | Replace it with a slash |
| Two or three spaces between groups | Word gap, in some tools | Replace it with a slash |
| The words "dot" and "dash" spelled out | Signals | Replace each word |
| A line break in the middle | Nothing | Join the lines with a single space |
If you are unsure, retype the whole string with a full stop and a hyphen from your own keyboard. It removes the whole class of problem. The Morse code translator guide goes into why these substitutions happen at all.
Four things a decode cannot give you back
Case. Morse has one pattern per letter and no way to mark a capital. HELLO and hello are the same string, so every decode comes out in one case and there is nothing to recover.
Accents and other scripts. The international code covers the 26 Latin letters, the ten digits and the standard punctuation. If the original was Spanish, Arabic or Japanese, whoever encoded it had to romanise it first, and what they dropped is gone.
Speed and tone. A written string carries no timing at all. How fast it was sent and at what pitch are not in the dots and dashes. Morse code timing and WPM covers what the timings would have been.
Whether it was a message at all. Morse is a public code, not a cipher. A string on a piece of jewellery is often a name or a date, and sometimes it is decorative and decodes to nothing.
I built MorseLab partly because this is the direction people get stuck on. You paste a string and it reads back as text, and it decodes a live beep through the microphone when the message arrives as sound. Its camera scan reads printed words rather than printed dots and dashes, because nothing reads those gaps reliably. It carries the chart, the prosigns and the Q-codes for groups that do not resolve on their own, and it runs offline with no account, in 16 languages.
Strings you are most likely to be handed
Spaces between letters, slashes between words. Cover the right-hand column and read each line before you check yourself against it.
.- .-. . / -.-- --- ..- / --- -.- ARE YOU OK
.-- .... --- / .- .-. . / -.-- --- ..- WHO ARE YOU
... . -. -.. / .- --. .- .. -. SEND AGAIN
--- -. / -- -.-- / .-- .- -.-- ON MY WAY
.-- .- .. - / ..-. --- .-. / -- . WAIT FOR ME
The short phrases people send most (SOS, HELLO, HELP, YES, NO, OK, THANK YOU, I LOVE YOU) are listed with their codes in common words in Morse code, and the opposite direction is worked through in English to Morse code.
Common mistakes
Treating the slash as decoration. A space separates letters and a slash separates words. Swap them and you get the right letters in the wrong words, which reads as gibberish and looks like a broken tool.
Decoding a string whose spaces have collapsed. If the gaps are gone, the answer is a guess dressed up as a translation. Get the original.
Splitting on a pattern that does not exist. Landing on ..--, .-.-,
---. or ---- means you drew a boundary in the wrong place. Those four
patterns have no character.
Reading ...---... as three letters. It is one prosign. So is
........, the eight-dot error signal, which a table will happily report as a
string of E and I.
Blaming the decoder for typographic characters. Bullets and en dashes look like Morse and are not. Retype with a full stop and a hyphen first.
Assuming a decode is a translation. Morse carries letters, not language. A decoded string is still in whatever language it was written in, with its accents stripped out.
Thinking that reading strings teaches you the code. Decoding on paper builds the table in your head, which is quick and useful. Copying by ear is a separate skill that takes weeks of short daily sessions, and nobody learns it in a day. How to learn Morse code sets out what it takes.
Questions people ask
How do I translate Morse code to English?
Split the string at the spaces, look each group up in a table sorted by pattern, and put a real space wherever there is a slash. One space is a letter gap; a slash is a word gap. A tool does the same thing instantly, and as long as the spacing survived every group has one answer, apart from the few that are a punctuation mark and a prosign at once.
What do the spaces and slashes mean in Morse code?
A space marks the end of one letter and the start of the next. A slash marks the end of one word. In sound they are different lengths: three units of silence between letters, seven between words. Missing either one changes the message.
Can you decode Morse code with no spaces?
Not reliably. A run of signals with the gaps stripped out has many valid
readings, and nothing in the string picks one. A five-signal run like .-...
splits sixteen ways; the thirteen signals of HELP split 3,165 ways. Get the
original with its spacing rather than trusting any single reading.
Why will my Morse code string not decode?
Almost always the characters. Text copied from a web page often uses typographic bullets and long dashes instead of a full stop and a hyphen, and a decoder has no entry for those. Retype the string with plain keyboard characters and try again.
What does ... --- ... mean?
Read as three separate letters it is S, O, S. The distress signal is the same
nine beeps sent as one unbroken run, ...---..., with no letter gaps inside it.
The pattern was picked because it is unmistakable and easy to send, not because
it abbreviates anything.
How do I know if a group is a letter, a number or a punctuation mark?
Count the signals. One to four signals is always a letter. Five is a digit, or one of five other characters. Six is punctuation, or the prosign SK. Seven is the dollar sign. Anything longer than seven is a prosign or a spacing mistake.
Can I decode Morse code from a photo or a sound instead of text?
Yes, and they are different jobs. Text recognition is trained on words, so it reads a photo of printed text well and a photo of dots and dashes badly: three dots come back as one ellipsis and the group is gone. Transcribe the marks yourself, then decode as usual, which reading Morse from a picture sets out. A beep has to be measured before it can be decoded, because the software has to work out how long your dot is; see the Morse code decoder.
Does decoding Morse need an internet connection?
No. The whole code is a table of 26 letters, ten digits and the punctuation marks, which fits on any phone. Anything that asks for a connection to convert dots and dashes into letters is doing it for its own reasons, not yours.
Download it: MorseLab for iPhone and Android. Free, and the link picks the right store for you.
Keep reading
- English to Morse code — the same tables read in the other direction, letter by letter.
- Morse Code Translator — how the code works, and why the spacing rules exist.
- Morse Code Decoder — decoding a live beep rather than a written string.
- The Morse Code Alphabet Chart — every letter, number and punctuation mark in one place.
- Prosigns, Q-Codes and the NATO Alphabet — the groups that are not characters.



