What the spacing is actually doing
Morse has five durations, not two. A dit is one unit, a dah is three, the gap between elements inside a letter is one, the gap between letters is three, and the gap between words is seven. Written down as text, only the first two survive — the rest have to be inferred from spaces, which is why every written form of morse needs a stated convention. The one used here, and the one used almost everywhere online, is a single space between letters and a slash between words. Three or more consecutive spaces are also read as a word break on input, because that is how a lot of pasted morse arrives.
The unit count shown with the result is the real timing measure. WPM is defined against the word PARIS, which together with its trailing word gap comes to exactly 50 units, so a dit lasts 1.2 divided by WPM seconds. At 15 WPM that is 80 ms for a dit and 240 ms for a dah. The audio playback uses those exact figures at 700 Hz, which sits in the range most people find easiest to pick out of noise.
Prosigns and why SOS is written the way it is
A prosign is two or more letters sent with no gap between them, so the receiver hears one long symbol rather than two letters. SOS is the famous one: sent properly it is nine elements run together, not S O S with letter gaps, and it was chosen for being unmistakable rather than as an abbreviation of anything. The convention for writing prosigns is angle brackets or an overbar, and this tool takes angle brackets: <SOS> encodes as one unbroken run, while plain SOS encodes as three separate letters with gaps. Both come out of the same nine elements; the difference is entirely in the spacing.
The other prosigns you will meet on the air are <AR> for end of message, <SK> for end of contact, <BT> as a paragraph break, and <KN> for go ahead, named station only. All four encode here. Decoding them is only partly possible, and the reason is worth stating rather than papering over: three of those runs are bit-for-bit identical to punctuation marks. AR is the same signal as +, BT the same as =, KN the same as an opening parenthesis. Nothing in the transmission distinguishes them — only context does — so the decoder returns the punctuation, which is the more common reading. SK has no punctuation twin and does come back as <SK>.
What the table covers
| Group | Covered | Notes |
|---|---|---|
| A-Z | Yes | Case is folded; morse has no capitals |
| 0-9 | Yes | Five elements each, no abbreviated forms |
| . , ? ' ! / ( ) & : ; = + - _ " $ @ | Yes | @ was added in 2004, the newest character in the code |
| Accented letters | No | Regional tables exist for é, ä, ñ and others but are not interoperable |
| Non-Latin scripts | No | Cyrillic, Greek, Japanese and Korean all have separate national tables |
Text is not a transmission
This is worth being blunt about: a string of dots and dashes is not morse, it is a transcription of morse. The information that separates a competent fist from an unreadable one lives entirely in the timing — the 1:3 ratio between dit and dah, the 1:3:7 ratio between the three gap lengths, and the consistency of both across a whole message. A sender who stretches letter gaps into word gaps is unreadable at any speed. Copying dots and dashes out of this page tells you nothing about that, and neither does reading them aloud.
If you are learning to receive, the usual advice holds and it contradicts what the speed slider tempts you towards: learn characters at full speed with the gaps stretched, rather than learning slow characters you will later have to unlearn. That is the Farnsworth method, and it exists because people who learn at 5 WPM tend to plateau hard at around 10. Play the audio here at a speed you can already copy and use the WPM field to see what the timing actually is, rather than to practise slowly.
Questions people ask
Why does my decoded text come out as replacement characters?
Almost always spacing. If letters run together with no gaps, the decoder sees one long group that matches nothing in the table. If a gap has crept into the middle of a letter, it sees two fragments instead of one character. Check that there is exactly one space between letters and a slash or a wide gap between words. Prosigns are a legitimate case of this too — a nine-element SOS run is not a table entry, though the common prosigns are recognised where they are unambiguous. AR, BT and KN are not: those runs are identical to +, = and ( and come back as the punctuation.
Nothing plays when I press the button.
Browsers block audio until the page has had a user interaction, so the very first press sometimes only unlocks the audio context and the second one plays. On phones, the hardware mute switch silences Web Audio as well as media, which catches people out because other tabs may still appear to work. Failing that, some privacy extensions block the Web Audio API entirely because it can be used for fingerprinting.
Is the timing accurate enough to key a transmitter from?
The scheduling is accurate — element boundaries are placed on the Web Audio clock rather than with timers, so the ratios hold. What it is not is a keying source. There is output latency between the schedule and the speaker, browsers throttle background tabs, and there is no sidetone offset or envelope shaping, so the tone starts and stops with a hard edge that would sound like key clicks on the air. Treat it as a listening aid.
Can I convert a language other than English?
Only the parts of it that fit the International Morse table, which means unaccented Latin letters, digits and the punctuation listed in the guide. Accented characters are skipped rather than approximated, and you are told which ones were dropped. National tables do exist — Cyrillic, Greek, Japanese kana and Korean jamo all have assignments — but they overlap with the international letters, so a stream of dots and dashes cannot be attributed to one of them without knowing in advance which table was used.