The encoder uppercases the input and looks every character up in the ITU/International Morse table for A–Z and 0–9, joining letters with a single space and using ' / ' as the word separator. The decoder reverses that: split on ' / ' for words, then on space for letters, then look up each dot/dash sequence in the inverse table. Anything not in the table — punctuation, accented letters, emoji — is rendered as '?' so you can see exactly where the lookup failed instead of silently dropping characters.
Audio playback uses the Web Audio API: a fresh AudioContext per play, a 600 Hz sine oscillator gated by a gain node, dot length 80 ms, dash 240 ms (3× dot), 80 ms inter-element gap, 240 ms inter-letter gap and 560 ms inter-word gap — close to a 15 WPM cadence. There's no Farnsworth spacing setting yet, and prosigns (AR, SK, BT) and punctuation aren't in the lookup, so this is best treated as a learner/SOS-style encoder rather than a contesting CW keyer.
The ITU/International Morse alphabet for A–Z and digits 0–9. A single space separates letters and ' / ' separates words, matching the convention used by amateur-radio practice software.
A 600 Hz sine tone with a dot length of 80 ms, dash 240 ms (3× dot), inter-element gap 80 ms, inter-letter gap 240 ms and inter-word gap 560 ms — roughly 15 words per minute.
A '?' means a token wasn't found in the table. The decoder expects dots and dashes only, single space between letters and ' / ' between words — extra spaces or stray characters break the lookup.
Not yet — only letters A–Z and digits 0–9 are mapped. Period, comma, question mark and other ITU punctuation codes are out of scope, so they currently encode as '?'.
Explore the full suite of Security tools and 290+ other free utilities at Chunky Munster.