Most Morse code generators on the web do two things wrong: they render signals as plain periods ( . ) and hyphens ( - )—which completely misrepresents the physical duration of the marks—and they play audio by chaining setTimeout calls. If you have ever tried building a rhythm-based tool in the browser using setTimeout , you already know what happens. Within four or five words, main-thread jitter and browser timer throttling push the audio out of step with the UI. While building Morse U...