Morse Code Converter: Text to Morse & Back
Convert text to International Morse code and back, instantly. Play the Morse code as audible beeps at your chosen speed, right in your browser.
Text and International Morse Code, converted and actually played back
This tool does two things most Morse converters skip: it plays the code as real audible tones using the Web Audio API, and it times those tones against the same PARIS standard telegraphers have used for over a century. Nothing you type is sent anywhere. Text to Morse and Morse to text both run through a fixed lookup table built directly into the script, and the audio is synthesized locally with an oscillator node, not a prerecorded sound file.
How the lookup table works
The tool defines one object mapping 44 characters, the 26 letters, 10 digits, and a set of punctuation marks, to their International Morse Code sequence of dots and dashes. A second object is built at load time by inverting that map, so REVERSE['.-'] resolves back to A. Encoding uppercases the input first, since the table only has uppercase keys; Morse code itself carries no case information.
/ for word boundaries, then on runs of whitespace for letter boundaries, looking each code up in the reversed table.
The PARIS timing standard, applied literally
Morse speed is measured in words per minute, but a word has no fixed length, so the industry standard is to time against the word PARIS, which contains exactly 50 dot units worth of dots, dashes, and spaces when sent correctly. That gives a clean formula: one dot unit in seconds equals 1.2 divided by the WPM setting. The tool computes this exact value, then derives every other duration from it.
| Element | Duration |
|---|---|
| Dot (dit) | 1 unit |
| Dash (dah) | 3 units |
| Gap within a letter | 1 unit of silence (the loop’s natural increment) |
| Gap between letters | 3 units of silence |
| Gap between words | 7 units of silence, triggered when a slash follows a space |
The oscillator itself runs a sine wave at a frequency you set with the tone control, defaulting to 600 Hz, a common value in real amateur radio practice because it sits in the most sensitive range of human hearing. Each tone ramps its gain up and back down over 5 milliseconds instead of switching on and off instantly, which avoids the sharp clicking artifact you get from a hard edged square envelope.
setTimeout for each beep. It calculates every oscillator’s start and stop time up front against the AudioContext’s own clock and schedules all of them at once. This is why playback stays precisely on tempo even if the browser tab is busy with something else, but it also means the stop button works by closing the AudioContext entirely rather than pausing it, so resuming requires playing from the start again.Two more things worth knowing
Live conversion
Typing in the text box triggers textToMorse on every input event and writes straight to the Morse field. There is no debounce, but since the operation is a handful of string splits and object lookups, it stays fast even on long input.
Swap direction
The swap button decodes whatever is currently in the Morse field into text, and separately re-encodes whatever was in the text field into Morse, effectively trading the two panels’ contents in one click.
Standards and learning resources
- ITU-R M.1677 is the current international recommendation defining the Morse code character set this tool implements.
- MDN: OscillatorNode documents the interface used to generate the sine wave tones.
- MDN: GainNode covers the envelope ramping used to avoid click artifacts at the start and end of each tone.
- The PARIS standard for WPM timing explains why that specific word is the reference for speed calculations.
Who still uses Morse
Studying for an amateur radio license exam, building intuition for CW (continuous wave) operating before getting on the air, decoding a puzzle or escape room clue, teaching kids a first taste of encoding systems, or just satisfying curiosity about what your name sounds like tapped out in dots and dashes.
FAQ: Morse Code Converter
Morse code is a method of encoding text as sequences of short and long signals, traditionally called dots and dashes, originally developed for telegraph communication in the 1830s and 1840s and still used today in amateur radio, aviation identification beacons, and some accessibility and signaling applications. Each letter, digit, and common punctuation mark has its own unique sequence, and International Morse Code (the version used by this tool) is the standardized variant recognized worldwide.
Morse code timing is based on a unit length, traditionally calibrated using the word PARIS as a timing reference since it contains a representative mix of dots, dashes, and spaces. A dash is three units long, the gap between dots and dashes within one letter is one unit, the gap between letters is three units, and the gap between words is seven units. Speed is measured in words per minute (WPM), and this tool calculates the unit length as 1.2 divided by the WPM.
This tool supports the full Latin alphabet (A-Z), digits (0-9), and common punctuation including period, comma, question mark, apostrophe, exclamation point, slash, parentheses, ampersand, colon, semicolon, equals sign, plus sign, hyphen, underscore, quotation marks, dollar sign, and the at sign, covering the International Morse Code standard’s full character set.
Characters that have no defined Morse code representation, such as most accented letters, emoji, or symbols outside the standard International Morse Code character set, are silently skipped during conversion rather than producing an error. If your text includes such characters, consider replacing them with their closest plain ASCII equivalent before converting.
Yes, converting words you already know and listening to the audio playback is a common and effective way to start building an ear for Morse code rhythms. Beginners often start around 5 to 10 WPM and gradually increase speed as recognition becomes automatic, professional telegraph operators and amateur radio Morse operators typically work at 20 WPM or faster.
Yes, though far less than in its telegraph-era heyday, Morse code remains actively used by amateur (ham) radio operators worldwide, some military and maritime signaling contexts, aviation navigation beacon identification, and occasionally in accessibility technology for users with certain motor or communication impairments. Commercial and most military telegraph use ended decades ago in favor of digital communication.
Once the page has loaded, yes, all conversion and audio generation happens locally in your browser using JavaScript and the Web Audio API, with no server round-trip required for any conversion or playback.
From the blog
Deep dives on the things these tools touch
Minification, UUID collisions, diffing API responses, and the other questions that come up around this toolset.