DEV Community

videocompress
videocompress

Posted on Edited on

Koch Morse From Zero in a Browser Tab: 100% on K and M, 88% When R Arrives, and What Farnsworth Spacing Really Changes

Originally published on DEV Community and tested with MorsePass.

Most "learn Morse code" advice either starts with a printed chart (which teaches you to count dits) or says "use the Koch method" without showing what a session looks like. So I sat down with a free Koch trainer, no account, and logged every number: which characters you start with, the speeds, the accuracy the trainer reports, and what it tells you to do next.

Three 50-character drills on the MorsePass Koch method trainer:

Run Level and set Speed (character/effective) Result What the trainer said next
1 Level 2: K M 20/12 WPM 100%, 50 of 50 "Level 3 unlocked."
2 Level 3: K M R 20/12 WPM 88%, 44 of 50 "Repeat this level to reach 90%." Focus next: "R: 6 of 16 missed"
3 Level 3: K M R 20/20 WPM (no Farnsworth) 100%, 50 of 50 "Level 4 unlocked."

How I got repeatable numbers: I captured the tone schedule the page builds with the Web Audio API and typed each five-letter group only after that group had finished playing, the way a human copies. In run 2 I deliberately typed K for five R's and skipped one R to see how the trainer handles the classic K/R confusion. Run 1 and run 3 are straight copies. (Disclosure: I build MorsePass.)

Step 1: Open the trainer and look at what "from zero" means

There's no sign-up step. The trainer opens on Level 2, which means your unlocked set is just K and M. Level 1 is K alone. Each level adds one character, in this order on MorsePass: K, M, R, S, U, A, P, T, L, O, and so on up to 40. Levels 1–5 are free; the padlocks from level 6 onward are the paid part (see the plan table).

Koch trainer ready state: Level 2, active character M, 60 s, 0 / 50, levels 1–5 open and 6+ locked

The defaults are what matter for a beginner:

  • Character speed 20 WPM: each letter is sent fast enough that you can't count its dits and dahs. You hear K as one rhythm, not "dah-dit-dah".
  • Effective speed 12 WPM: extra silence goes between letters and groups, so you have time to decide. That is Farnsworth spacing.
  • Target 90%: the bar for moving to the next character.
  • 650 Hz sidetone, 70% volume, HF static off.

A drill is 10 groups of 5 random characters from your unlocked set, so 50 characters.

Step 2: Run a Level 2 drill and copy group by group

Press Start 60 second drill and type what you hear. Spaces between groups are optional (the trainer says they're formatting only).

Mid-drill: NOW SENDING Group 5 of 10, 37 s left, copy progress 20 / 50, live accuracy 40%

One thing that confused me at first: at this point I had copied 20 of 20 characters correctly, yet Live accuracy said 40%. It counts correct characters against all 50 in the drill, not against what has been sent so far. It climbs to the real figure as you go, so don't panic at 40% in the middle.

At 20/12 WPM a group arrived roughly every 5.3 seconds. The last tone of the 50th character played 52.8 s after the first.

Step 3: Read the score and the character grid

When the drill ends, press Score and review copy.

Run 1 result: 100% accurate, 50 of 50 characters correct, Level 3 unlocked, Focus next: no character confusions

Run 1 (K and M only): 100%, 50 of 50, "Level 3 unlocked." The grid shows each sent character on top and your copy below, and "Focus next" reports no confusions.

Don't over-read one clean run. The trainer's own guide says to move on when "at least three separate sets stay near or above 90 percent". A two-letter set is easy; the next letter is where it gets real.

Step 4: Add R and watch the confusion show up

Click level 3. The set becomes K M R. K is -.- and R is .-., the same length with mirrored rhythm, which is why they're a famous beginner pair.

For this run I typed K instead of R five times and dropped one R near the end:

Run 2 result: 88% accurate, 44 of 50 correct, Repeat this level to reach 90%; red cells show R copied as K and one missing R; Focus next: R: 6 of 16 missed

  • 88%, 44 of 50: below the 90% target, so no unlock. The message is "Repeat this level to reach 90%."
  • The red cells show R sent, K copied five times and one R sent, nothing copied (the dash).
  • Focus next: "R: 6 of 16 missed". It counts the misses per sent character, so you can see it's an R problem, not a general one.

That's the most useful thing a Koch trainer can tell you. A score of 88% from one K/R mix-up needs a different fix than 88% from random late misses. The guide's advice: drill the two confusable rhythms against each other at the same character speed, then go back to mixed groups. Don't slow the letters down.

Step 5: See what Farnsworth spacing actually does

"Farnsworth" gets explained in a lot of different ways, so I measured it. I captured the Web Audio schedule for the first group of a 20/12 drill and a 20/20 drill:

Timeline of the first group: at 20/12 the gap between letters is 0.501 s and the group ends at 4.36 s; at 20/20 the gap is 0.185 s and the group ends at 3.22 s

20/12 WPM (default) 20/20 WPM
Dit / dah 55 ms / 175 ms 55 ms / 175 ms
Gap inside a letter 65 ms 65 ms
Gap between letters 0.501 s 0.185 s
Gap between groups 1.162 s 0.425 s
50 characters, first to last tone 52.8 s 34.1 s

(Tone times are measured between the 5 ms on/off ramps, which is why a 60 ms dit reads as 55 ms and the gaps read ~5 ms long.)

The letters themselves are identical. Only the silence changes. That matches the ARRL timing standard (Jon Bloom, KE3Z, "A Standard for Morse Timing Using the Farnsworth Technique"): for character speed c = 20 and overall speed s = 12, the added delay is (60c − 37.2s)/(s·c) = 3.14 s per word, which works out to 0.496 s between characters and 1.157 s between words. The browser scheduled 0.501 s and 1.162 s.

To try it, drag Effective speed up to match character speed:

Settings: Level 3/40, unlocked set K M R, character speed 20 WPM, effective speed 20 WPM

Run 3 (K M R at 20/20, clean copy): 100%, 50 of 50, "Level 4 unlocked." But the whole drill is done in about 34 seconds instead of 53. The "60 s" timer is the limit, not the length:

Bar chart: 50-character drill lasts 52.8 s at 20/12 versus 34.1 s at 20/20

Run 3: 100% accurate, 50 of 50 characters correct, Level 4 unlocked

So the order I'd suggest for a real beginner is:

  1. Keep character speed at 20 (or 18) from day one and never lower it.
  2. Start with effective speed around 12 so you have about half a second to decide on each letter.
  3. Raise effective speed only after three sets in a row at 90% or higher on the current level.
  4. Add the next character only when "Focus next" stops naming the same letter.

Step 6: What stays in your browser

During the three drills I logged every network request. The tones are generated on the page with Web Audio, so no audio file was downloaded (the only GET to morsepass.com during a drill was the touch icon). Scoring made no request to a MorsePass API. The only uploads were the usual analytics beacons (Microsoft Clarity and Google Analytics). On the free plan, progress is stored locally; the paid plans add cloud sync and levels 6–40.

Where to go after level 5

  • Once K M R S U feel automatic, copy real call signs at the same pitch with the callsign trainer.
  • Use the Morse code translator to hear any word or phrase at your current speed and export it as a WAV for offline listening.
  • The broader CW training path also has a straight key and paddle timing lab for sending.

If you're also drilling timed mental math for trading interviews, QuantSprint uses the same "short timed sets, then look at the first mistake" approach.

Top comments (0)