Morse Code Translator
β‘ Runs locallyπ No uploadsπ Free, no sign-up
Morse code is one of the earliest digital encodings: with just two signals β the dot and the dash β it represents every Latin letter, digit, and common punctuation mark. The international standard defines strict timing: a dash lasts three dots, the gap inside a letter is one dot, between letters three dots, and between words seven dots. This tool ships the complete ITU international Morse table and converts character by character in your browser: letters are separated by spaces, words by the separator you choose (/ or | or double space). Decoding splits on those separators and looks each group back up. No network involved.
When is it useful? Ham radio operators use it daily β convert a callsign or common abbreviations to Morse, hit play, and practice copying by ear, which beats memorizing a paper chart. Film and game fans decode Easter eggs or post SOS (Β·Β·Β· βββ Β·Β·Β·) to puzzle their friends. And it is the most intuitive demo of encoding itself for kids: two symbols carrying arbitrary messages is binary thinking made tangible, especially with the audio playback on.
A few edge cases to know. First, standard Morse has no Chinese or Japanese encodings β unsupported characters are skipped during encoding and listed under the result so nothing fails silently; if you must send Chinese, convert to pinyin first and agree on the scheme with the receiver. Second, encoding is case-insensitive: βHelloβ and βHELLOβ produce identical output. Third, decoding only accepts dots, dashes, spaces, and the word separator; anything else is ignored with a warning. Fourth, any unrecognized group renders as β?β and gets listed β usually a miscounted dot or a missing letter space. Fifth, playback speed is measured in WPM (words per minute, calibrated on the standard word βPARISβ); beginners should start at 10β15 WPM.
Privacy is a non-issue: conversion is a local lookup table, and the audio is synthesized on the fly by your browser's WebAudio API as a 700 Hz sine wave. Nothing leaves your device, and the microphone is never touched.
How to use
- Pick a direction: text to Morse, or Morse to text
- Paste or type your content (separate letters with spaces when decoding)
- The result updates live β copy it, play the audio, or drag the slider to change speed
FAQ
Can Morse code represent Chinese?
No. Standard international Morse only defines Latin letters, digits, and some punctuation β there is no Chinese encoding. The common workaround is converting to pinyin first, but that is approximate: both sides must agree on the scheme (tones or not, how words are separated) or the message cannot be restored reliably. This tool skips Chinese characters during encoding and lists them, so nothing fails silently.
What is the exact dot-to-dash timing?
The ITU standard: a dash = 3 dots; the gap inside a letter = 1 dot; between letters = 3 dots; between words = 7 dots. This tool synthesizes audio at exactly these ratios β the speed slider (WPM) only changes the base dot length, so the rhythm stays correct at any speed.
What does β?β in the decoded output mean?
That dot-dash group is not in the standard table. The usual causes: a miscounted dot or dash during copying, a deleted letter space merging two groups, or a mismatched word separator (content encoded with β/β decoded with β|β). The suspicious groups are listed under the result β check them one by one against the table.
Which word separator should I choose?
They are display-only; just stay consistent between encoding and decoding. β/β is the default and the most common in ham radio practice. β|β fits text that itself contains a slash (slash is βΒ·Β·βΒ· in Morse, so β/β as a word separator would be ambiguous). βDouble spaceβ suits inputs that reject special characters.
Does playback need the internet? Where does the sound come from?
No. Your browser's WebAudio API synthesizes a 700 Hz sine wave locally and keys it on and off per the dot-dash timing β no server, no microphone. On iPhone Safari you must tap play once first due to autoplay policy; after that it works normally.