I build browser tools, and I learned Morse the way most developers learn a new protocol: by getting the timing model wrong first, then by listening until the model became a reflex. That order matters. A chart will teach you what Morse looks like. It will not teach you what Morse sounds like at speed, and speed is where the whole skill lives.
This is a developer minded guide to learning Morse by sound. It covers the signal itself, a practice system that does not build a counting habit, and a self check loop you can use on your own recordings. It is not a chart dump, and it is not a promise of fluency in a weekend.
The short answers first
If you only have thirty seconds, here is the core of the article.
What is the fastest reliable way to learn Morse by ear? Learn a small set of characters at full character speed, add one character at a time only after you copy the current set at about 90 percent accuracy, and keep the gaps wide at first. That is the Koch method, with Farnsworth spacing as a bridge.
Why does chart learning fail at speed? Because a chart trains a lookup: hear a pattern, convert it to dots and dashes, find the letter. At around 10 to 13 words per minute that lookup runs out of time. A sound learned as one rhythm does not need that lookup.
What is Morse, in one line for a developer? Morse is a timed on off signal. A short tone is a dit, a tone three times as long is a dah, and the silences between elements, letters, and words are part of the message, not empty space.
Can I check my own practice audio? Yes, if the recording is clean, steady, and short. Listen first, decode second, and compare sound and text letter by letter. A decoder is a test harness for your ear, not a replacement for it.
Now the depth behind those answers.
Think of Morse as a protocol, not as pictures
Developers are used to encodings where a symbol maps to a value. Morse looks like that on paper: A maps to a dot and a dash. In practice, it behaves more like a serial protocol with strict timing. The receiver does not get a picture of dots and dashes. It gets a tone switching on and off, and it has to segment that stream using time alone.
That is why two recordings can contain the same tones and mean different things. A is di-dah, one short tone, a short gap, one long tone, written as .- . R is dot dash dot, written as .-., not the same pattern. The difference between A and a pair of separate letters is not the tones. It is the gap. A dot, a three unit gap, and a dash is E followed by T, not A.
If you take one idea from this article, take that one: in Morse, silence carries information.
A brief history, only as much as you need
Samuel Morse and Alfred Vail developed the early telegraph code in the 1830s and 1840s, and on 24 May 1844 Morse sent the first public message over the Washington to Baltimore line, "What hath God wrought". Early operators first read indentations on paper tape, then realised they could recognise the clicks directly by sound. That shift, from reading marks to hearing rhythms, is the whole history of Morse learning in miniature.
The version most people mean today is International Morse Code. Friedrich Clemens Gerke revised the early code in 1848, and the system was standardised internationally in Paris in 1865. The modern character set and timing are set out in ITU-R M.1677-1, from the International Telecommunication Union, the ITU.
On radio, Morse is usually called CW, short for continuous wave: a steady radio carrier switched on and off to make the tones you hear. A QSO is simply a radio contact between two stations. You do not need to be a radio operator to learn the listening skill.
One famous sequence deserves a careful note. SOS is sent as a continuous run of three dots, three dashes, and three dots, written as ... --- ..., with no letter gaps inside it. It was chosen because the pattern is unmistakable and easy to send under stress, not because the letters stand for a phrase. "Save our ship" and "save our souls" are later backronyms. Learning SOS does not make a browser tool an emergency device. For a real emergency, use proper emergency channels, not a decoder.
The timing model, stated exactly
Everything in Morse timing is measured in units. One unit is the length of a dit. The ratios, from ITU-R M.1677-1, are:
- Dit: 1 unit, tone on
- Dah: 3 units, tone on
- Gap inside a character: 1 unit, tone off
- Gap between characters: 3 units, tone off
- Gap between words: 7 units or more, tone off
Speed is measured in words per minute, WPM, using the standard word PARIS as the reference. PARIS, including the word gap after it, is exactly 50 units. That gives a simple formula for the length of one unit:
- Unit length in milliseconds = 1200 divided by WPM
Work it through once: at 20 WPM, one unit is 60 milliseconds, a dah is 180 milliseconds, and a word gap is 420 milliseconds. At 12 WPM, one unit is 100 milliseconds. At 20 WPM, a whole character can pass in a fraction of a second, with no time to count its parts, look them up, and write the answer before the next character arrives. Any method that depends on counting will hit a ceiling, usually around 10 to 13 WPM.
So, what speed should you practise at? Character speed is how fast each letter itself sounds. Effective speed is how fast the whole stream feels, including the gaps. Keep character speed high and control effective speed with gaps. That is the whole idea behind the two methods below. Pick one practice tone, commonly in the 600 to 700 hertz range, and stay with it for a while, so pitch is not another variable.
Koch and Farnsworth, without the mythology
The Koch method: two letters, full speed, then one more
The Koch method was developed in the 1930s by German psychologist Ludwig Koch. Its rules are deliberately strict:
- Start with just two characters, traditionally K and M.
- Send them at full character speed from the first session, commonly around 20 WPM.
- Copy random groups made only from those characters.
- Add one new character only when you copy the current set at about 90 percent accuracy.
- Repeat, one character at a time, through the letters, then numbers, then the punctuation you actually meet.
Why does this work? Because every character is learned as a fast, whole sound from the start. There is no slow version to unlearn later. The first sessions feel noisy and unfair, then a character clicks and stops being a pattern. That click is the method working.
Farnsworth timing: fast letters, generous gaps
Farnsworth timing is named after amateur radio operator Donald R. Farnsworth, known as W6TTB. It solves a different problem from Koch. Koch controls which characters you meet. Farnsworth controls how much thinking time you get between them.
In Farnsworth timing, each character is sent at full speed, often 18 to 20 WPM, but the gaps between characters and words are stretched, so the effective speed feels much slower, perhaps 5 to 10 WPM at first. The letter itself sounds correct. Your brain just gets more time to recognise it.
As recognition improves, you shrink the gaps. Character speed and effective speed meet at your target speed. That closing of the gaps is not optional polish. If the gaps stay wide forever, you learn to depend on them, and closing them later feels like starting again. Plan the shrink from the start, a little at a time, as accuracy rises.
Put together, a practical system looks like this: learn characters the Koch way, at full character speed, with Farnsworth gaps to keep early sessions bearable, then tighten the gaps as each character becomes familiar. You are separating two jobs that beginners often fuse into one painful job: learning what a letter sounds like, and learning to keep up with a stream.
Head copy, and the plateau that is not about talent
At first, writing every letter down is normal and useful. It gives you a record to check, and it shows you which letters you confuse. But writing has a speed limit, and at some point the act of writing starts to compete with the act of listening.
Head copy is the next step: understanding Morse as you hear it, without writing every character first. It does not mean never writing anything down. In a real contact, you still write down details that must be exact, such as a callsign or a number. It means ordinary words arrive as meaning, not as a stream of letters you assemble.
Start small, with familiar material: listen for a short, familiar word as a whole, and let the next word come, without spelling the first word out in your head. If you miss a word, let it go, because chasing a missed word is the fastest way to lose the next three words as well. Once you are steadier, try copying slightly behind: hold one letter in short term memory while the next one plays, and write the previous letter while you listen.
Now the plateau. Many learners who started by counting dots and dashes stall around 10 to 13 WPM. They often assume they lack talent. Usually the method is the problem, not the learner. Counting is a translation step, and translation has a speed limit. Head copy removes that step, but it cannot be rushed into existence. It grows out of characters that are already automatic. If your characters are not automatic yet, head copy practice will feel like guessing, because it is guessing. Go back to random character drills, tighten the gaps a little, and return to head copy with familiar words.
A 15 minute daily routine for developers
Short, daily practice beats a long weekly session, because recognition is built by repetition spread over days, not by exhaustion in one sitting. Here is a routine that fits the system above. Think of it as a test suite for your ear, not as homework.
Minutes 1 to 5: character drill, the unit tests
Warm up with random groups from your current Koch set, at full character speed, with generous gaps. Write the answers down, then check after the drill, not during it. If accuracy is below about 90 percent, stay with this set. Do not add a new character today.
Minutes 6 to 10: gap tightening, the integration test
Use the same set, but shrink the gaps a little, and copy short words or simple groups, written down. If accuracy collapses when the gaps close, open them again a little, and close them more slowly over the next few days.
Minutes 11 to 15: head copy, the acceptance test
Listen to two or three short, familiar words or one simple sentence without writing anything. Notice whether any word arrived as a whole. End on that, even if it was only one word, and do not end a session on a character you keep missing.
Practise in a quiet place, with headphones if that helps, and stop when concentration fades, because tired listening teaches tired habits. How long this takes varies a lot by person, and any article that promises a fixed number of days is selling, not teaching. A realistic guide is that the alphabet can start to feel familiar within a few weeks of daily short sessions, and comfortable copying at a modest speed usually takes a few months. The useful measure is not days passed. It is whether accuracy on random letters is rising and whether gaps are shrinking.
Here is a short demo of a browser Morse translator in action, including text to Morse in real time, playback controls, and Farnsworth spacing.
The self check loop: how to test your own audio
This is the part most chart pages and most tool pages skip. A tool page gives you a decoder. A chart page gives you a lookup. Neither teaches you how to check whether a decode is trustworthy. As a developer, you already know the pattern: run a small test, read the failure, fix one thing, run it again.
A Morse audio decoder, in plain terms, does four jobs in order: it finds the tone, it builds an envelope, a running picture of loudness at that pitch, it measures lengths, and it groups the dits and dahs into letters by lookup. A common technique for finding the tone is the Goertzel algorithm, a focused way of asking, for one frequency at a time, how much energy is present at that frequency. It is cheaper than a full Fourier transform when you only care about one tone, which is exactly the Morse case. If the first three steps were clean, the lookup is easy. If they were not, no lookup can save the result. That chain is also a debugging checklist.
Use this loop on a short recording, five to fifteen seconds, not on a long file with one bad patch hidden inside it.
Step 1: listen first, decode second. Play the clip and note where it sounds rushed, uneven, or noisy.
Step 2: cut it short. Decode only a section with one or two short words. If that section decodes cleanly, your problem is probably elsewhere in the long clip, or the speed changed partway through.
Step 3: compare sound and text, letter by letter. Play slowly and follow the decoded text.
Step 4: fix one thing at a time. Change the recording, the volume, the speed, or the cut, but not all four at once.
The two errors you will see most both come from spacing.
- One letter splits into two. You expect A, di-dah, and you get E followed by T. The gap inside the letter was too long, so the decoder reasonably reported two letters. Fix it on the sending side: tighten the gap inside letters, and keep it clearly shorter than the gap between letters.
- Two letters join into one. The gap between letters was too short, so the decoder grouped two letters as one longer letter. Fix it by making the letter gap clearly longer than the intra letter gap, and the word gap longer still.
A third pattern looks like a decoder bug but is not. If the output is mostly right but one word in the middle is wrong, check whether the speed changed at that point. A sender who speeds up for a familiar word or slows down for a hard one will confuse any decoder that has settled on one unit length.
Common mistakes, stated bluntly
- Learning from the chart alone. Keep the chart as a reference to check after listening, not as the teacher during listening.
- Slowing the characters when it gets hard. Add spacing instead. Spacing can be shortened at any time. A slow sound habit has to be unlearned.
- Saying "dot" and "dash" out loud while listening. Say "dit" and "dah" instead, so A becomes "di-dah". It trains rhythm, not shapes.
- Writing every letter forever. If no session ever attempts head copy, head copy never develops.
- Marathon sessions. Two hours once a week teaches less than fifteen minutes a day done properly.
- Trusting a decoder on a noisy, long, uneven clip. At some point uneven becomes ambiguous, even to a skilled human listener.
Honest limits, because this article is not a sales page
Morse learned by sound is a real, useful skill for amateur radio, puzzles, escape room design, classroom signal work, and plain curiosity. It is not a professional signals tool, it is not a substitute for learning to copy by ear, and it should never be used to decode traffic you are not meant to hear or to make decisions in an emergency. A browser decoder is a learning and checking tool, not a rescue device. Measurement needs a clean signal, and a clean signal needs steady timing, one tone, and low noise.
Frequently asked questions
Should I learn Morse by sight or by ear?
By ear, if you want to use it. Reading dots and dashes on paper is a separate, smaller skill. It helps with puzzles and with checking a character, but it does not transfer to hearing Morse at speed. Listen first, check second.
What speed should I start at?
Keep character speed around 18 to 20 WPM from the start, and control difficulty with gaps, not by slowing the characters. If that feels too fast, stretch the gaps until the effective speed is comfortable, then shrink the gaps as accuracy rises.
What is the difference between Koch and Farnsworth?
Koch controls which characters you meet: two at first, one more at a time, at full speed, after about 90 percent accuracy. Farnsworth controls the gaps: full speed characters, stretched gaps, effective speed slower. Most learners combine them, then shrink the gaps.
Why do I plateau around 10 to 13 WPM?
Because counting dots and dashes is a translation step, and translation runs out of time at that speed. The fix is not more counting. It is characters learned as whole sounds, plus head copy practice on familiar words, plus gaps that shrink gradually.
Why does my recording decode wrong?
Usually spacing, not letters. A gap inside a letter that is too long splits one letter into two. A gap between letters that is too short joins two letters into one. A speed change in the middle of a clip, background noise, or a second sound will also break a decode. Cut a short, clean section and check that first.
Is SOS three letters?
No, in the strict sense. SOS is sent as one continuous run of three dots, three dashes, and three dots, with no letter gaps inside it. People call it SOS because three dots form S and three dashes form O in International Morse Code, but the distress signal itself was chosen as a pattern, not as an abbreviation.
Do I need a ham licence to learn Morse by listening?
No, listening and practising by sound do not require a licence in themselves. Transmitting on amateur radio bands is a separate matter, with its own rules and licensing, and this article does not cover it. If you want to go on air, check the rules for your country first.
What to do next
Start tonight, but start small. Pick two characters, K and M. Listen to them at full character speed, with wide gaps, for five minutes. Write what you hear, check after, not during. If you are below 90 percent, stay there tomorrow. That is not slow progress. That is the method.
Then build the loop that makes the rest of the article useful. Practise fifteen minutes a day. Tighten the gaps a little at a time. Try head copy on one familiar word, and let a missed word go. Record a short practice run, listen to it first, and check it letter by letter. When a letter splits or joins, you will know exactly which gap to fix, because you now know what the gaps mean.
Morse rewards patience in a way few modern skills do. There is no way to fake the listening part, and that is also why it sticks once it clicks. The first time a short word arrives in your head without counting, without a chart, and without writing it down, you will understand why experienced operators describe Morse as a language you hear, not a code you decode.
I am Ahmad, founder of Mir Labs, a small lab making free, useful browser tools. I built a free browser morse code translator and audio decoder, and I write the guides by hand, from research and from practising by sound. Morse is where Mir Labs starts. More small projects will follow, in the same style: simple, free to try, and explained in plain words.
Try the routine above for one week and notice one thing: are your gaps shrinking, or are you just getting faster at counting? That answer tells you whether the method is working.
Sources
These sources were read to verify the timing, methods, history, and decoding points above. They are listed for fact checking only.
- ITU-R M.1677-1 timing ratios, as stated in the Morse timing and translator sources below, https://morsecodegenerator.org/morse-code-translator
- How to Learn Morse Code by Ear, Koch and Farnsworth methods, https://morsecodetranslator.space/learn-morse-code-by-ear.html
- CW Academy, Learn Morse Code for Ham Radio, Koch and Farnsworth practice, https://onlinemorsecode.com/cw-academy/
- Learn CW using the Koch Training Method, plateau and reflex copying, http://hfradio.org/koch_1.html
- Morse Code Speed, WPM and the PARIS standard, http://dev.to/morsezone/morse-code-speed-what-wpm-really-measures-and-how-to-get-faster-1bbg
- Decoding Morse Code from a Microphone in the Browser, Goertzel and envelopes, https://dev.to/simplemorse/decoding-morse-code-from-a-microphone-in-the-browser-goertzel-envelopes-and-a-little-clustering-1gfn
- SOS signal, history and continuous sequence, https://en.wikipedia.org/wiki/SOS_signal
- American Morse Code, Morse and Vail history and the 1844 message, https://en.wikipedia.org/wiki/American_Morse_code
Top comments (0)