Morse Code Converter Free | Text to Morse Code Online

⚙️ Developer Tools Free Forever

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
Morse Code
Speed (WPM)
Tone (Hz)
About This Tool

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.

Step 1 Split into words Text is split on spaces. Each resulting word is encoded separately, then rejoined with a slash surrounded by spaces, the conventional way to mark word boundaries in written Morse.
Step 2 Encode each letter Every character in a word is looked up in the table. Characters with no entry are silently dropped rather than left as a broken symbol.
Step 3 Join with single spaces Individual letter codes inside a word are joined with a single space, which is what separates one letter’s dots and dashes from the next when read back.
Step 4 Reverse decode Morse to text splits on / for word boundaries, then on runs of whitespace for letter boundaries, looking each code up in the reversed table.
// the encode/decode core, unchanged from the tool source function textToMorse(text) { return text.toUpperCase().split(‘ ‘).map(function (word) { return word.split().map(function (ch) { return MORSE[ch] !== undefined ? MORSE[ch] : ; }).filter(function (c) { return c !== ; }).join(‘ ‘); }).join(‘ / ‘); }

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.

ElementDuration
Dot (dit)1 unit
Dash (dah)3 units
Gap within a letter1 unit of silence (the loop’s natural increment)
Gap between letters3 units of silence
Gap between words7 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.

Playback timing is scheduled ahead, not looped in real time. The tool does not use 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.

44-character International Morse table Web Audio oscillator playback Adjustable WPM and tone frequency Word boundary via forward slash

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.

Common Questions

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.

Privacy Overview

Cookies let this site remember your preferences and show us which tools people actually use. Full detail sits in our Privacy Policy.