Morse Code Audio Decoder

Upload a WAV or MP3 file, or record live from your microphone. FFT-based tone detection converts Morse beeps into text — all processing happens in your browser.

Drop audio file here or click to browse

Supports WAV, MP3, OGG, M4A — max 10 MB

.WAV .MP3 .OGG .M4A
file.wav
💡 Best results: Use clean recordings with a clear Morse tone (300–1200 Hz). The decoder uses FFT analysis to auto-detect the dominant tone frequency. Works best at 5–25 WPM with minimal background noise.
⚙ Decoder Settings
5
Detected tone:
— Hz
Analyzing audio… 0%
① Load audio ② FFT analysis ③ Detect tone ④ Noise gate ⑤ Extract signals ⑥ Decode symbols

Signal Timeline

Detected Morse Code
Decoded Text
Under the hood

How the Audio Decoder Works

Six signal-processing stages turn raw audio into readable text — entirely inside your browser, with zero server uploads.

  1. Load Audio

    Your file is decoded by the Web Audio API on your device. Nothing is sent to a server, and the audio is discarded the moment you reset or close the tab. The decoder accepts WAV, MP3, OGG and M4A up to 10 MB, but uncompressed WAV gives the best accuracy because lossy codecs blur the sharp on/off edges that define a Morse symbol.

  2. FFT Tone Detection

    A Fast Fourier Transform converts each short window of audio into a frequency spectrum. The decoder scans your selected band — usually 600–1000 Hz, the standard CW sidetone — and locks onto the peak. The result is a per-frame amplitude curve that tracks the Morse key going down and up.

  3. Adaptive Noise Gate

    The quietest frames are sampled to estimate the noise floor. Anything below the gate threshold is treated as silence. The four strength presets — Light, Medium, Strong, Aggressive — let you trade sensitivity for noise rejection so the same engine works for clean practice tones and noisy SDR captures.

  4. Signal Extraction

    Every on/off transition is stamped with a millisecond timestamp. Continuous on-periods become candidate dots and dashes; gaps become intra-letter, inter-letter or word boundaries. All ratios follow the ITU timing standard (1 : 3 : 7).

  5. WPM Estimation

    K-means clustering separates short bursts (dots) from long bursts (dashes). The median dot length defines the timing unit, which yields words-per-minute. This handles non-integer speeds and the natural swing of hand-sent Morse — something fixed-ratio decoders fail at.

  6. Decode to Text

    Each dot-dash sequence is matched against the ITU-R M.1677-1 table to produce a letter, digit or punctuation mark. Anything that fails to match becomes a ?, and the timeline panel highlights exactly where decoding broke down so you can fine-tune the settings.

Best practices

Getting Good Audio for the Best Results

Recording quality affects accuracy more than any decoder setting. Spend two minutes on the source and you can decode reliably at 20+ WPM — even on a basic laptop microphone.

Recording distance

Hold the mic 15–30 cm from the source. Closer than 10 cm clips and distorts; further than 50 cm picks up echo and HVAC noise. For radios, the headphone jack is almost always cleaner than a mic on the speaker.

Go wired when you can

Patch your radio's audio-out into your line-in and capture 44.1 kHz / 16-bit WAV in Audacity. Direct cabling eliminates room noise entirely and pushes accuracy past 95 % even at 20 WPM.

Trim leading silence

Use Audacity's Effect → Truncate Silence to clear long pauses before the first character. Long silence at the start confuses the noise-floor estimator. Aim to start within 1–2 seconds of the first dot.

Tame room acoustics

Hard floors and bare walls produce echo that smears Morse edges. A small carpeted room — or a towel-lined cardboard box around the speaker — kills most of it. Crank the noise gate to Strong if echo is unavoidable.

Watch your levels

Aim for peaks around −6 dBFS. Anything red-lining clips the tone and breaks the FFT peak detection. Anything below −30 dBFS leaves the signal buried in the noise floor.

The free toolkit

Audacity (Win/Mac/Linux) for capture, trim, noise reduction and WAV export. GQRX and SDR# pipe demodulated audio straight to file for SDR users — no microphone needed.

Pro tip: If you can see a clear, evenly-spaced dot/dash pattern on Audacity's waveform, the decoder will almost certainly read it correctly. If it looks like fuzz, no amount of tweaking the sensitivity slider will save the decode — fix the source instead.
Who uses it

Common Uses for the Morse Audio Decoder

From ham radio practice to escape rooms — here is how operators, learners, gamers and researchers put this tool to work.

Ham Radio Operators

CW operators record their own keying and run it through the decoder as a self-check. If the decoded text matches what you intended to send, your timing is solid; if not, the signal timeline shows exactly which dashes are short, which letter-spaces are crowded, and where the rhythm broke. It also chews through received CW recordings — DX contacts, beacons, contest captures.

Morse Code Learners

Build a copy-and-check loop: generate a practice clip with the Morse translator, copy it on paper, then upload the same audio here for character-by-character feedback. Start at 5 WPM and step up by 2 WPM only when you score 90 %+. This mirrors the proven Koch and Farnsworth methods used by serious CW operators worldwide.

Puzzle & Game Players

Morse audio shows up constantly in escape rooms, ARGs, and military-themed games like Call of Duty, Battlefield and indie thrillers. If the clue is too fast for your ear, capture the system audio and drop the file in here for an instant transcript — beats freezing the playback every two seconds.

Researchers & Historians

Public archives now hold digitised WWII intercepts, maritime distress traffic and early commercial broadcasts. This decoder can transcribe high-quality WAV exports of those archives without a manual ear-copy session. For old, degraded recordings, switch to Aggressive noise gating and dial WPM down to match the period sending speed.

Background

From Ear to Algorithm: A Short History of Morse Decoding

For Morse code's first hundred years, every message was decoded by a human ear. Telegraph operators and radio intercept specialists trained for months to copy Morse at 20 words per minute or more, recognising letters as rhythmic shapes rather than counting individual dots and dashes. During WWII the Allied signals-intelligence services trained thousands of operators — many of them women recruited for linguistic aptitude and manual dexterity — to copy enemy traffic in real time, often under combat conditions and through deliberate jamming.

The first software decoders appeared in the 1980s alongside personal computers and early sound cards, but were limited to fixed speeds and clean sine-wave tones. Modern tools like this one apply the same Fast Fourier Transform mathematics that powers digital radio, MP3 compression and medical imaging — turned loose on the problem of pulling a Morse signal out of a noisy real-world recording.

Today, SDR hobbyists routinely use desktop tools such as fldigi, CW Skimmer and MRP40 for live on-air decoding. This browser-based decoder brings the same capability to anyone with a recording and a web browser — no installation, no licence key, no upload.

Help

Frequently Asked Questions

Quick answers to the questions we get most often. Click any question to expand the answer.

What audio formats does the decoder support?

WAV, MP3, OGG and M4A files up to 10 MB. WAV gives the best accuracy because it stores audio without lossy compression — MP3 and M4A can smear the sharp edges of Morse tones, especially at slow speeds or low bitrates. If an MP3 decodes poorly, open it in Audacity and re-export as 44.1 kHz / 16-bit WAV before uploading.

Does it work with real ham radio recordings?

Yes. Capture your SDR or transceiver audio with Audacity, export as WAV, and upload here. Use the 600–1000 Hz range and set the expected WPM near the actual sending speed — or pick Auto-detect if you don't know it. GQRX and SDR# both export demodulated CW audio directly.

Why is my decode coming out garbled or showing question marks?

Three issues account for almost all decoding failures:

  • Wrong WPM: try Auto-detect, or step through values until the timeline shows clean dot/dash separation.
  • Wrong frequency band: if your tone is below 600 Hz or above 1000 Hz, switch to the wide 300–1400 Hz range.
  • Too much noise: raise the Noise Gate to Strong or Aggressive.

Question marks specifically mean the decoder found signals it could not match to a Morse character — almost always a WPM mismatch rather than a fundamental audio problem.

What WPM range does the decoder support?

Reliably from 5 WPM (beginner pace) up to 25 WPM (contest-speed CW). Beyond 25 WPM individual dots drop under 48 ms and the FFT window may miss them. Auto-detect uses K-means clustering and handles non-integer hand-sent speeds between 5 and 20 WPM particularly well.

Can I decode Morse from a YouTube video?

Yes, indirectly. Use system-audio capture — OBS Studio or Audacity's WASAPI loopback on Windows; BlackHole or Soundflower on macOS — to record the playback, then upload the file. Alternatively use the Record Live tab and play the video on speakers, though direct capture is more accurate.

Does it work on mobile phones?

Yes — both file upload and live recording work on iOS Safari and Android Chrome with no app install. For mic recordings, hold the phone 15–20 cm from the source and avoid Bluetooth headsets (their noise processing distorts CW tones). Use the device's built-in microphone for cleanest results.

Is my audio uploaded to a server?

No. Everything runs in your browser via the Web Audio API and JavaScript. The file is loaded into memory, analysed, and the result rendered on screen. Nothing is transmitted, stored in cookies, or cached — closing the tab discards the audio entirely.

Can I decode a two-station QSO recording?

The decoder is designed for a single CW signal. In a two-station QSO the operators may use slightly different tones, and the silence between transmissions confuses the word-spacing analysis. Trim the recording to one station's transmission in Audacity for a clean decode.

What is the maximum file size?

10 MB. A 10 MB mono WAV at 44.1 kHz is roughly 60 seconds of audio — enough for most practice clips and on-air contacts. Trim longer recordings in Audacity before uploading; large files also take longer to process because all analysis runs locally.

Still stuck? Try the image decoder for printed Morse, or head back to the translator to encode text into audio.