Morse Code
Invented by Samuel Morse in 1838, this code was created to encode alphabet letters as long and short electrical pulses sent across a telegraph wire. Type your message below to encode it as Morse, or flip the switch and use periods (.) and hyphens (-) with a space between each Morse letter to decode a Morse message.
<script type="text/javascript"><!-- [et_pb_line_break_holder] --> var alphabet = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","0",".",",","?","-","=",":",";","(",")","/",'"',"$","'","¶","_","@","!","+","~","#","/"];<!-- [et_pb_line_break_holder] --> var morseAlphabet = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--..",".----","..---","...--","....-",".....","-....","--...","---..","----.","-----",".-.-.-","--..--","..--..","-....-","-...-","---...","-.-.-.","-.--.","-..-.",".-..-.","...-..-",".----.",".-.-..","..--.-",".--.-.","---.","-.-.--",".-.-.",".-...","...-.-","-..-."];<!-- [et_pb_line_break_holder] --> var shouldEncode = true;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function isUpperCase(letter)<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> return (letter == letter.toUpperCase());<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function parseMorse()<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] --> var newStr = "";<!-- [et_pb_line_break_holder] --> var str = document.getElementById("someText").value;<!-- [et_pb_line_break_holder] --> var len;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> if(shouldEncode)<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> var letters = str.split("");<!-- [et_pb_line_break_holder] --> var letter;<!-- [et_pb_line_break_holder] --> len = letters.length;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> for (i = 0; i < len; i++)<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> letter = letters[i];<!-- [et_pb_line_break_holder] --> newStr += " " + convertToMorse(letter);<!-- [et_pb_line_break_holder] --> } <!-- [et_pb_line_break_holder] --> } else {<!-- [et_pb_line_break_holder] --> var words = str.split(" ");<!-- [et_pb_line_break_holder] --> var word;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> len = words.length;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> for (i = 0; i < len; i++)<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> word = words[i];<!-- [et_pb_line_break_holder] --> newStr += convertToEnglish(word);<!-- [et_pb_line_break_holder] --> } <!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] --> //console.log("newStr = " + newStr);<!-- [et_pb_line_break_holder] --> var encoded = document.getElementById("encoded");<!-- [et_pb_line_break_holder] --> encoded.innerHTML = newStr; <!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function convertToMorse(letter)<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> var capLetter = letter.toUpperCase();<!-- [et_pb_line_break_holder] --> var i = alphabet.indexOf(capLetter);<!-- [et_pb_line_break_holder] --> if(i>=0) return morseAlphabet[i];<!-- [et_pb_line_break_holder] --> return letter;<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function convertToEnglish(word)<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> var i = morseAlphabet.indexOf(word);<!-- [et_pb_line_break_holder] --> if(i>=0) return alphabet[i];<!-- [et_pb_line_break_holder] --> return word;<!-- [et_pb_line_break_holder] --> } <!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> function flipEncoding()<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> shouldEncode = !shouldEncode;<!-- [et_pb_line_break_holder] --> var entry = document.getElementById("entry");<!-- [et_pb_line_break_holder] --> if(shouldEncode)<!-- [et_pb_line_break_holder] --> {<!-- [et_pb_line_break_holder] --> entry.innerHTML = "Type some text: <input id='someText' type='text' name='someText' />"; <!-- [et_pb_line_break_holder] --> } else {<!-- [et_pb_line_break_holder] --> entry.innerHTML = "Type some Morse code : <input id='someText' type='text' name='someText' />";<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --> entry.addEventListener("input", parseMorse, true);<!-- [et_pb_line_break_holder] --> parseMorse();<!-- [et_pb_line_break_holder] --> }<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --> var entry = document.getElementById("someText");<!-- [et_pb_line_break_holder] --> entry.addEventListener("input", parseMorse, true);<!-- [et_pb_line_break_holder] --> myonoffswitch.addEventListener("change", flipEncoding);<!-- [et_pb_line_break_holder] --> <!-- [et_pb_line_break_holder] --> </script>

Background
Morse is a very versatile code that translates well into other media. In addition to telegraph wire pulses, Morse code can be transmitted by flashlight beam, as long and short audio tones, or by opening and closing a window shutter — any physical device that can generate long and short stimuli could be used to transmit Morse code.
Watch this fascinating video of American Admiral Jeremiah Denton Jr. blinking the word "TORTURE" in Morse code while he was a prisoner of war in Vietnam: