Audio to Morse Code: Decode a Recording or Speak Your Message
Drop an audio file that contains Morse tones and this tool returns the dots and dashes, the decoded English text, and a confidence score. Or tap the microphone and speak — your words are transcribed and converted into Morse code, the same job running in reverse. Uploads accept MP3, WAV, OGG, M4A and AAC up to 10 MB and are analyzed inside your browser. No account, no install, no signup.
How to Decode a Morse Code Audio File
Upload the file, press Analyze Audio, and read the decoded text. In detail:
- Add the file. Drag it onto the upload panel or click to browse. A preview player appears so you can confirm you loaded the right recording.
- Press Analyze Audio. The progress bar tracks the pass through the file. Longer recordings take longer; a 30-second clip is typically done in a second or two.
- Check the counters. Dots, Dashes, Characters and Confidence appear above the waveform. These are your first sanity check — see the confidence section below.
- Read both output panels. The left panel shows the raw Morse with dots in green, dashes in amber and separators in orange. The right panel shows the decoded text. Use Wrap if a long sequence runs off the edge.
- Export or replay. Copy the Morse, download it as a TXT file, export the audio, or play the decoded message back with the built-in player. Clear resets everything for the next file.

How to Turn Speech Into Morse Code With the Microphone
The microphone runs the opposite conversion: it listens to speech, not to Morse tones. Say a word, and the tool transcribes it and returns the Morse for it.
- Choose your language in the Recognition Language dropdown. Over 90 languages and regional variants are supported, from English (United States) and Español (México) to हिन्दी, اردو, 日本語 and Русский.
- Tap the microphone and allow the browser’s permission prompt. The button turns red while it is listening.
- Speak normally. The transcription appears, and the Morse for it builds in the output panel.
- Tap again to stop, then copy, download, or play the result back as sound, light or vibration.
International Morse only defines A-Z, 0-9 and a small set of punctuation, so speech in a non-Latin script is transliterated into Latin characters before it is converted — Hindi, Urdu, Greek, Japanese and Cyrillic input all become their closest romanized spelling. That is an approximation, not a standard, so read the transcription before trusting the Morse.
Microphone input relies on your browser’s built-in speech recognition. It works in Chrome, Edge and Safari, and is unavailable in Firefox. Unlike file analysis, speech recognition is handled by the browser’s own service and may process your audio on the vendor’s servers.
If you have written Morse rather than recorded Morse, use the Morse code translator instead. If your Morse is in a photo or screenshot, use image to Morse code.
What the Confidence Score Actually Measures
The confidence percentage reflects how cleanly the detected element durations separate into two groups — short and long. When every dot in a recording is around 60 ms and every dash around 180 ms, the two clusters are far apart and confidence is high. When dot and dash lengths overlap because the sender’s fist was uneven or the recording is noisy, the clusters blur and confidence falls.
Read it like this:
| Confidence | What it means | What to do |
|---|---|---|
| 85-100% | Element timing is clean and consistent throughout. | Trust the decoded text. |
| 60-84% | Mostly clean with some ambiguous elements, usually near the start or end. | Check the first and last few characters by eye against the waveform. |
| 30-59% | Dot and dash durations partly overlap. Individual letters are likely wrong. | Trim silence, re-run, and read the suggestions panel. |
| Below 30% | No stable timing pattern was found. | The audio may not contain Morse, or the tone is buried in noise. |
A high confidence score with nonsense text almost always means one thing: the timing was consistent but your word spacing was not, so letters merged. Fix the spacing in the source recording, not the settings.
Morse Timing at Every Speed the Player Supports
Morse code has no fixed duration. Everything is defined relative to one unit, the dit, and the standard formula for dit length is 1200 / WPM milliseconds. A dash is 3 units, the gap inside a character is 1 unit, the gap between characters is 3 units, and the gap between words is 7 units.
That gives you the exact millisecond values across the tool’s 5-60 WPM slider range:
| Speed (WPM) | Dot (1 unit) | Dash (3 units) | Letter gap (3 units) | Word gap (7 units) |
|---|---|---|---|---|
| 5 | 240 ms | 720 ms | 720 ms | 1,680 ms |
| 10 | 120 ms | 360 ms | 360 ms | 840 ms |
| 15 | 80 ms | 240 ms | 240 ms | 560 ms |
| 20 | 60 ms | 180 ms | 180 ms | 420 ms |
| 25 | 48 ms | 144 ms | 144 ms | 336 ms |
| 30 | 40 ms | 120 ms | 120 ms | 280 ms |
| 40 | 30 ms | 90 ms | 90 ms | 210 ms |
| 60 | 20 ms | 60 ms | 60 ms | 140 ms |
Two practical consequences. First, at 60 WPM a dot lasts 20 ms — at a 44.1 kHz sample rate that is still about 880 samples, so sample rate is never the limit; the limit is how cleanly the tone starts and stops. Second, the letter gap and the dash are the same length. That is why a recording with sloppy spacing produces the wrong letters even when every individual element was detected correctly. Full detail is in our Morse code timing rules guide, and the compressed-spacing variant is covered under Farnsworth timing.
Reading the Waveform Panel
The waveform is not decoration — it is how you check the decoder’s work when confidence is low. Morse audio has a distinctive shape: flat-topped blocks of tone separated by flat silence, with the blocks falling into two obvious lengths.
- Blocks of clearly two different widths — normal, well-formed Morse. Decoding should be accurate.
- Blocks that all look the same width — either the sender never sent a dash, or dashes are being clipped. Check the dot and dash counters; if Dashes reads 0, something is clipping.
- Ragged tops with dips inside a block — an amplitude dropout inside a dash. This is what splits one dash into two dots and is common in heavily compressed MP3s. Re-encode from the original at a higher bitrate, or use the WAV.
- No flat silence between blocks — the noise floor is close to the tone level. The decoder cannot find element boundaries. Nothing in the settings will fix this; the recording needs to be cleaner.
Common Decoding Failures and What Causes Them
Every wrong result on this page has one of about five causes. This table maps what you see to what went wrong.
| What you see | Cause | Fix |
|---|---|---|
Output is a long run of E and T |
Every element was read as its own character — the gaps are being measured as letter gaps. | The sender’s spacing is too wide for their speed. Re-record with consistent 1-unit gaps inside characters. |
| Letters correct, no word breaks | Word gaps shorter than 7 units, typical of hand-keyed audio. | Read the raw Morse panel and insert word breaks manually. |
| Dashes counted as pairs of dots | Amplitude dip inside a dash, usually from lossy compression or a keying click. | Use the original WAV or a 192 kbps+ MP3. |
| Zero dots and zero dashes | No tone above the noise floor, or the file contains speech rather than Morse tones. | Confirm you can hear distinct beeps in the preview player. For spoken words, use the microphone instead. |
| First or last character wrong | Recording starts or ends mid-element. | Trim so there is at least 0.5 s of silence at each end, then re-run. |
| File will not load | Over the 10 MB limit or an unsupported container. | Trim the clip or convert to MP3/WAV. |
| Microphone button does nothing | Permission was denied, or the browser has no speech recognition (Firefox). | Allow mic access in the address bar, or switch to Chrome, Edge or Safari. |
What This Tool Cannot Do
Being clear about the limits saves you time:
- No live Morse decoding from the mic. The microphone listens for speech, not for beeps. To decode Morse tones, record them first and upload the file.
- One signal at a time. Two operators sending on overlapping frequencies in the same clip will not separate cleanly.
- Tone-based Morse only. It reads beeps. It does not read flashing lights in a video — for visual signaling, see the Morse code light translator.
- 10 MB ceiling. Long recordings must be split.
- Speed changes mid-file reduce accuracy, because the dot/dash threshold is derived from the whole recording.
Playing the Decoded Message Back
Once a message is decoded or dictated, the player re-sends it so you can compare against the original by ear. Four output modes are available:
- Sound — a generated tone at the speed set on the WPM slider (5-60, default 20).
- Light — screen flashes matching the element timing, useful for practicing visual reception.
- Vibrate — haptic output on phones that support the vibration API, which is how most people practice on a commute.
- Share — passes the decoded message to your device’s share sheet.
Playing back at a higher WPM than the source is the fastest way to build receiving speed once you can copy at your current pace. Structured drills are on the practice Morse code online page.
Who Uses Audio Morse Decoding
Amateur radio operators record weak CW signals off the air and decode them afterward when copying live was not possible. Students working through the Morse code alphabet use it to check their copy against the machine’s, and dictate practice words with the microphone to see them in Morse instantly. Puzzle and ARG players decode audio hidden in games and videos. Maritime and aviation history researchers work through archival recordings, where the SOS distress sequence is the pattern most often being looked for.
More Morse Code Tools
Frequently Asked Questions
Upload the recording to a decoder that measures tone durations. The decoder separates short tones (dots) from long tones (dashes) using the 1200/WPM timing rule, groups them by the silence between them, and matches each group to a letter. Clean recordings with consistent spacing decode most accurately.
Yes, but for the opposite direction. The microphone transcribes what you say and converts those words into Morse code. It does not listen for Morse tones, so to decode a Morse signal you need to record it and upload the file.
Yes. Over 90 languages and regional variants are available in the Recognition Language dropdown. Because International Morse only covers A-Z, 0-9 and some punctuation, speech in scripts such as Devanagari, Arabic, Cyrillic, Greek or Japanese is transliterated into Latin letters first, so the result is a romanized approximation rather than a standard encoding.
MP3, WAV, OGG, M4A and AAC, up to 10 MB per file. WAV gives the most reliable results because it has no compression artifacts that can split a dash into two dots.
High confidence means the dot and dash durations were consistent, not that the spacing was correct. If word gaps in the recording are shorter than seven units, letters merge into the wrong words. Read the raw Morse panel and re-insert the word breaks.
Anything from roughly 5 to 60 words per minute. At 5 WPM a dot lasts 240 ms; at 60 WPM it lasts 20 ms. Accuracy depends far more on recording cleanliness than on speed.
No. File analysis runs in your browser, so the recording stays on your device, and there is no account or signup. Microphone input is different: it uses your browser’s built-in speech recognition, which may send the audio to the browser vendor’s service for transcription.
E is a single dot and T is a single dash, so a string of them means every element was treated as a separate character. The gaps in your recording are being read as letter gaps. This is a spacing problem in the source audio, not a settings problem.
Only if the Morse tone is clearly separated from the other audio. Overlapping instruments raise the noise floor and blur the element boundaries. Isolate the tone in an audio editor first if you can.
Yes, with no usage limit, no account and no watermark on exported files.