Morse code trainer and decoder
Learn Morse with the Koch method and Farnsworth spacing, send text as sound or a flashing light, and decode CW from the microphone or an audio file in the browser.
Added
How to use it
Trainer — the Koch method: start with two characters (K and M) at full character speed, copy a drill, and add one character each time you score 90% or better. Drills are five-letter groups (weighted towards the newest character), words, or callsigns. Type what you hear and press Check for a score based on the edit distance.
Speed — character speed sets the dot length: 1.2 / WPM seconds (the word PARIS is 50 units). The overall speed adds Farnsworth spacing: characters stay fast but the gaps between them grow, using the ARRL formula (extra time ta = (60c − 37.2s)/(sc), spread 3/19 to each character gap and 7/19 to each word gap).
Send — plays text as a tone with soft edges and flashes a lamp in time; prosigns are written
<AR>, <SK>, <KN>. Download WAV saves the audio.
Decoder — listens to the microphone (or decodes an audio file) and prints the text as it goes:
-
a Goertzel filter measures the tone in 5 ms blocks; with the tone left blank it finds the strongest one between 350 and 1,100 Hz;
-
the on/off threshold sits halfway between the signal and noise levels, measured over the last few seconds, with hysteresis;
-
speed is learnt from the first few marks (dits against dahs), then tracked; the character and word gaps adapt to the sender, so Farnsworth-spaced code decodes too.
Machine-sent code decodes best; hand-sent code with uneven spacing will produce some errors. Audio stays in the browser.
Presenting
The sender full screen: a large lamp that flashes the text from the Send tab, with the character being sent below it — for signalling across a room or a classroom demonstration. Press ⛶ Present (beside Share link) or F to open it; Esc or F closes it and T switches between dark and light. It goes full screen where the browser allows, otherwise it fills the window, and keeps the screen awake. A link that opens straight into presentation mode starts sending after the first click (browsers only allow sound after a gesture).
Sharing
Share link copies a URL with the text (text), speeds (wpm, fwpm), and tone (tone). For
example ?text=CQ%20CQ%20DE%20W1AW&wpm=25&fwpm=15#send.
Related: the ham radio toolkit has Q-codes, prosigns, and CW abbreviations; the audio scope shows the tone’s spectrum.
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.