Tools Guides
text Free No signup

Morse Code Decoder

Decode Morse code by typing dots and dashes or tapping the interactive tap button.

Loading tool…

About this tool

Paste or type Morse code using dots (.) and dashes (-) separated by spaces between letters and slashes (/) between words, and the decoded text appears instantly as you type. For a hands-on experience use the tap button: short clicks produce dots and long holds (300 ms+) produce dashes — just like a real telegraph key. The decoder labels each Morse group with its decoded character above it so you can spot mistakes at a glance. A built-in reference card shows the full ITU Morse alphabet including common punctuation.

How to use

  1. 1 Type or paste Morse code into the input box using dots (.), dashes (-), spaces between letters, and / between words.
  2. 2 The decoded text updates live above each group of dots and dashes.
  3. 3 Alternatively, click the 'Tap' button with short taps for dots and long holds (≥300 ms) for dashes to input Morse interactively.
  4. 4 Consult the reference card at the bottom for the full Morse alphabet and punctuation table.

Reading Morse the other way: from dots and dashes back to text

Encoding text into Morse is the easy direction — every letter has exactly one pattern. Decoding is harder, because the receiver has to figure out where one character ends and the next begins purely from the gaps. This tool takes the marks you give it — dots (.), dashes (-), spaces, and the word separator / — and turns them back into plain text, character by character. It is built for the receiving side of Morse: copying a signal you heard, transcribing a recording, or checking a code you wrote by hand.

The three levels of spacing the decoder relies on

Because dots and dashes are written with the same two symbols for every letter, the spacing is the grammar. This tool reads three distinct separators, and getting them right is the whole game:

SeparatorYou typeMeaning
Symbol gap(nothing)Dots and dashes touching form one letter: ... is S
Letter gapone or more spacesEnds a letter, starts the next: ... --- is two letters
Word gap/ (slashes, spaces optional)Ends a word, inserts a space in the output

Internally the decoder splits your input on / to find words, splits each word on whitespace to find letters, then looks each dot-dash token up in the International Morse table. Any token it cannot find is rendered as a literal ? so you can see exactly where decoding failed rather than silently dropping it.

A worked example

Type .... . .-.. .-.. --- / .-- --- .-. .-..-. -.. into the box. The decoder splits on the / into two words. In the first, the five space-separated tokens ...., ., .-.., .-.., --- map to H, E, L, L, O. The second word .-- --- .-. .-..-. -.. becomes W, O, R… then .-..-. resolves to a double-quote and -.. to D — so a stray symbol shows up immediately as the wrong character. The annotated view stacks each decoded letter above its dot-dash token, making it obvious which group produced which character, and the large decoded text line shows the final string you can copy.

Tapping it out instead of typing

The tool also has a tap pad that turns timing into symbols the way a real telegraph key does. A quick press registers a dot; holding the button for 300 ms or more registers a dash. Then it watches the silence: about one second of no tapping ends the current letter and decodes it, and a further pause inserts a word break (/). This is a hands-on way to feel why spacing matters — tap . then pause too long and you have sent E followed by a new letter, not the start of a longer code.

Why decoding is genuinely ambiguous

The deep problem in Morse reception is that without clear gaps, a stream is ambiguous. The sequence ...-.- could be SV, UR, or several other readings depending on where you place the letter breaks. A human operator resolves this with rhythm and context; this tool resolves it strictly from the spaces you provide. That is the single most important thing to understand: the decoder is only as good as your gaps. If you run letters together with no spaces, it will try to match the entire run as one impossibly long token and return ?.

Common mistakes and how to avoid them

  • No spaces between letters. Writing ...---... as one block asks the tool to find a single nine-element character. (That specific run happens to be mapped to the SOS prosign, but .... jammed against . will not split into H and E.) Put a space between every letter.
  • Mixing up the word separator. Use / for word breaks. Multiple spaces alone are all treated as a single letter gap, so two words will merge.
  • Wrong dash character. Type a plain hyphen -, not an en-dash or em-dash pasted from a document. Only the ASCII dot and hyphen are recognised.
  • Expecting it to guess letter breaks. It will not infer where one character ends; that is information only the gaps carry.

Practical uses

Decode a signal you copied by ear during ham-radio practice, transcribe Morse from an old film or audio clip, check homework or a puzzle answer, or verify that a code you encoded round-trips back to the right text. A built-in reference card lists the full alphabet, digits, and punctuation so you can look up any character while you work. Everything runs locally in your browser — the marks you paste are decoded on your own device and never sent anywhere.

Frequently Asked Questions

{# Alpine.js — self-hosted. (The previous jsdelivr CDN tag had a stale SRI integrity hash, so the browser refused to run it and window.Alpine was never defined — silently breaking every FAQ accordion and Alpine tool.) #}