A real-time Morse code (CW) decoder powered by a neural network model.
Launch DeepCW: https://cw.e04.workers.dev/
- Real-time Morse code decoding using deep learning
- Robust decoding for weak signals, QSB, and noisy conditions
- Multi-channel decoding for handling multiple CW signals
- Audio pass-through with deep-learning-based noise reduction
- Cross-platform support for Windows, macOS, Android, and iOS
multi.mp4
DeepCW's CW decoding model and reference implementation are available as a separate repository:
https://github.com/e04/deepcw-engine
It includes the model, metadata, and Python/Node.js examples for decoding Morse code from WAV audio.
- Results are from balanced mode.
- SNR is measured over a 2500 Hz bandwidth.
- Error rate is reported as CER (Character Error Rate), defined as the percentage of inserted, deleted, or substituted characters relative to the reference text.
It achieves 0.00% error from 0 to -4 dB SNR at all tested speeds, and remains nearly error-free at -6 dB.
Even under weak-signal conditions, performance degrades gracefully: errors stay below 1.5% at -8 dB and below 8% at -10 dB across the full speed range.
Audio sample:
sample_db_cw_spectrum.mp4
To provide context for DeepCW’s performance, we compared it with several established CW decoding tools: CW Skimmer, fldigi, and ggmorse.
These projects have made valuable contributions to the amateur-radio and Morse-code software ecosystem. The comparison below is not intended as a general ranking of these applications; it reflects only the specific test clips, settings, and evaluation method used in this README.
All tested software was the latest available version as of June 3, 2026.
To evaluate performance under real-world conditions, we compared DeepCW with other decoders using publicly available short CW QSO videos from YouTube.
Source: https://www.youtube.com/shorts/UBlxpe5gvv0
| Decoder | Transcription |
|---|---|
| Reference | AI5DD AI5DD 56N CO BK BK GA UR 55N 55N OK OK 73 AE0Q DE AI5DD 44 EE R 44 EE EE |
| DeepCW | AI5DD AI5DD 56N CO BK BK GA UR 55N55N OK OK 73AE0QDE AI5DD 44EE44EE E |
| CW Skimmer | UI5DDM EU AI5DD 56N CO BK BK GA UR 55N 55N TTTK MTKE 73 AE0Q DE AI5D D44EE JI44EE EE |
| fldigi | I 5DD EI5DD 56N CO HK GA * 55N 55N OK OK 73 AE0Q DE A I 5DD 44EE N |
| ggmorse | AI5DD AI5DD 56N CO XM TEEE BKGA755N55N OK OK 73AE0E TTTTTTKDEAIEAI5DD44EE R 44EE EE |
Source: https://www.youtube.com/shorts/9AhkEDs2Sko
| Decoder | Transcription |
|---|---|
| Reference | D DE JO2QOT JO2QOT 5NN CA 5NN 100 TU JO2QOT TU K6XX |
| DeepCW | D DE J02Q O T J02QOT 5NN CA 5 NN 100 TU J02QOT TU K6XX |
| CW Skimmer | 5NN 100 TU EMJO2Q0T 5NN CA EE JO2Q0T TU K6XX |
| fldigi | *EEHSSNJF J02QOT 5NN CA E*S ÅÅ O J02QOT T K6XX |
| ggmorse | U JO2QOT 5NN CA SEGE ?O2QOT TU K6XX |
Source: https://www.youtube.com/shorts/9jgZ94TzRys
| Decoder | Transcription |
|---|---|
| Reference | ? WD4DAN WD4DAN GE ES FB UR 57N 57N CO BK BK TU GE UR 56N 56N GA GA 73 BK BK TU GA 73 DE W0ABE TU EE / |
| DeepCW | ? WD4DAN WD4DAN GE ESFB UR 57N 57N CO BK 4KTUG E UR 56N 56N GA GA 73BK BKTUGA 73DE W0ABE TUEE EE /1 |
| CW Skimmer | ? WD4DAN GE ES FB UR 57N 57N CO BKE BK TU GA 73 DE W0ABE TU EE NWD4DANWR 54TUGEEUR 56NE 56NE GAEG AE73BKR EE |
| fldigi | *O* DANTD4DAN 9E T S FB TR *7N E7N ;0 A TUGE * N66N GA RA73TU GA :3DE W0ABE UUEE ET " |
| ggmorse | WD4DAN E WD4DAN GE E SFB EEUR E57N 57N CO ? E ?TUGE ?56NEEE TEEEE TE IEEEE TESN GA GA 73? E?TUGA 73DE W0ABE TUEE /E2S?TTTT |
DeepCW includes a real-time, deep-learning-based noise reduction feature designed specifically for CW signals.
In addition to decoding Morse code, DeepCW can pass the audio through a neural noise reduction model, making noisy CW signals easier to monitor by ear.
Also see: https://github.com/e04/HamNoise
Audio samples:











