Morse Code Translator
Free online tool to convert text to Morse code or decode Morse signals—includes audio playback, adjustable WPM, and export options, all browser-based.
Our Morse code translator is a free utility for bidirectional encoding/decoding between plain text and international Morse code, featuring real-time previews, customizable audio synthesis, and versatile outputs. Tailored for radio operators, students, and hobbyists, it emulates authentic transmission sounds while running entirely client-side—enabling practice or creative applications without installations or data risks.
Common Use Cases for Morse Translation
- ✓Amateur Radio (Ham)
Encode messages for transmission or practice CW (continuous wave) operations efficiently.
- ✓Educational Purposes
Teach Morse code in classrooms or self-study with visual/audio aids for beginners.
- ✓Puzzles and Games
Create or solve cryptic challenges, escape rooms, or trivia involving code translation.
- ✓Emergency Communication
Prepare backup signaling for survival kits or off-grid scenarios where voice fails.
- ✓Creative Projects
Incorporate Morse into art, music, or apps for unique, retro-inspired effects.
- ✓Security and Ciphers
Layer with other encryptions for fun steganography or message obfuscation.
Why Choose Our Translator?
Bidirectional Conversion
Seamlessly encode text to Morse or decode Morse back to text with auto-detection
Audio Playback
Listen to generated Morse via Web Audio API; adjustable tone (300-1500 Hz) and WPM (5-50)
Custom Speed Control
Set words per minute for practice; supports international (ITU) and American Morse variants
Export Options
Copy as text, download audio WAV, or save Morse sequence for offline use
Real-Time Preview
Instant updates as you type; handles punctuation, numbers, and accented characters
Offline Operation
Fully client-side—no servers; works in browser without internet after load
How to Use the Morse Code Translator
- Enter Input: Type text (e.g., "HELLO") or Morse (e.g., ".... . .-.. .-.. ---") in the field
- Select Mode: Auto-detect or toggle text-to-Morse/decode; adjust WPM and tone
- Preview Output: See encoded Morse; play audio to hear dots/dashes sequence
- Refine Settings: Tune speed for practice; handle case-insensitivity automatically
- Export Results: Copy text, download WAV audio, or save for reference
Understanding Morse Code Translation
Morse maps characters to dot-dash patterns: A=.-, B=-...; encoding splits text into letters, joins with spaces, words with /. Decoding parses sequences using a lookup table. Audio generates tones (dot=short high, dash=long high) with silence gaps based on WPM—where 1 WPM = 12 words (50 chars) per minute.
Example: "SOS" → "... --- ..." (distress signal); audio: three short, three long, three short beeps.
- Decoding: Split by space, reverse map; handle ambiguities with context
- Audio Synthesis: Oscillator for 800Hz tone; dot=1 unit, dash=3, letter space=3, word=7
Uses object lookups for speed; Web Audio for playback without plugins.
Advanced Features & Capabilities
Variant Support
Switch between ITU international and American Morse for historical or regional accuracy.
Batch Processing
Translate multiple lines or files; generate audio for entire messages.
Prosigns and Abbreviations
Include radio shortcuts like BT=-...- (break) or SK=...-.- (end transmission).
Frequently Asked Questions
What is Morse code?
Morse code is a system of dots (.) and dashes (-) representing letters, numbers, and symbols, developed by Samuel Morse in 1837 for telegraphy. It's still used in aviation, radio, and hobbies.
How does the translator handle spaces and punctuation?
Words are separated by slashes (/), letters by spaces; supports standard punctuation like periods (.-.-.-) and commas (--..--). Prosigns (e.g., AR for end) are encoded directly.
Can I play audio for the Morse code?
Yes, generate and play tones in-browser; adjust frequency and speed to match your listening preference or practice needs.
What WPM speeds are supported?
From 5 WPM (slow for beginners) to 50 WPM (fast for experts); default 20 WPM. Element timing follows Paris standard (dot = 1 unit).
Does it support non-English characters?
Basic Latin alphabet and numbers; extended prosigns or custom mappings available via settings for international use.
Is the tool secure for sensitive messages?
Yes, all processing local; no data transmitted. Morse is obsolete for security but fun for casual encoding.
Privacy & Usage Considerations
This translator offers secure, offline Morse handling:
- Local Execution: No inputs sent; ideal for private or sensitive transmissions
- Practice Tips: Start slow (10 WPM); use headphones for clear audio in noisy environments
- Best Practices: Verify with official charts; combine with Text Case Converter for prep
- Limitations: Basic Latin only; for full Unicode, extend mappings
Integration & Code Examples
Implement Morse translation in JavaScript with mappings and audio:
JavaScript Example:
// Morse code mapping
const morseCode = {
'A': '.-', 'B': '-...', 'C': '-.-.', // ... full alphabet
' ': '/'
};
// Function to encode text to Morse
function textToMorse(text) {
return text.toUpperCase().split('').map(char =>
morseCode[char] || char
).join(' ');
}
// Function to decode Morse to text
function morseToText(morse) {
const words = morse.split(' / ');
return words.map(word =>
word.split(' ').map(code =>
Object.keys(morseCode).find(key => morseCode[key] === code) || code
).join('')
).join(' ');
}
// Example usage
console.log(textToMorse('HELLO')); // '.... . .-.. .-.. ---'
console.log(morseToText('.... . .-.. .-.. ---')); // 'HELLO'
// Simple audio (requires Web Audio API)
function playMorse(code, freq = 800, wpm = 20) {
const audioCtx = new (window.AudioContext || window.webkitAudioContext)();
const unit = 1200 / wpm; // ms per unit
code.split(' ').forEach((seq, i) => {
setTimeout(() => {
seq.split('').forEach((dotDash, j) => {
const duration = dotDash === '.' ? unit : 3 * unit;
const osc = audioCtx.createOscillator();
osc.connect(audioCtx.destination);
osc.frequency.value = freq;
osc.start(audioCtx.currentTime + j * unit + i * 7 * unit);
osc.stop(audioCtx.currentTime + duration / 1000 + j * unit + i * 7 * unit);
});
}, i * 7 * unit);
});
}
playMorse('.-'); // Play 'A'