Skip to content
All tools
EncodingRuns locallyNo account

Morse code translator

Translate Morse code to text and back, tolerating any dot/dash characters and any word separator. Also decodes Morse recovered from audio.

Open in ctfpal

Morse is a variable-length code: E is one dot, Q is four symbols. That variability is why it needs explicit separators, and why most failed Morse decodes are separator problems rather than translation problems.

It also has no case, no punctuation beyond a handful of prosigns, and no braces - so a Morse-encoded flag always arrives as bare uppercase letters and digits that you must reassemble into the expected format yourself. Expect to add the braces and underscores back by hand, and do not conclude the decode failed because the result does not look like a flag yet.

The separator is the whole difficulty

  • One space between letters, three (or /, or |) between words. Challenges use all of these.
  • Dots and dashes may arrive as ./-, ·/, 0/1, or even a/b. Substitute before decoding.
  • Morse with no separators at all is ambiguous by construction and usually means you are meant to recover timing from somewhere else - an audio file, a blinking light in a GIF, a column of a spreadsheet.

Worked example

Slash-separated Morse

Input

.--. .. -.-. --- / -.-. - ..-.

Result

PICO CTF

Morse has no case and no braces, so a Morse flag always needs reformatting after decoding.

Load this example in the workspace

Common questions

Why does my Morse decode to gibberish?
Almost always the letter separator. If letters run together the decoder cannot know where one ends, and a single missing space shifts everything after it. Check that letters are separated by exactly one space and words by three or a slash.

Related tools