Morse Code Learning App

Learn, practice, and master Morse code

Learn
Practice
Audio
CW Key
Flashcards
Progress
About

Morse Code Reference

Morse code is a method of transmitting text information as a series of on-off tones, lights, or clicks.

Practice Morse Code

Result will appear here

Practice Phrases Management

Morse Code Audio

Listen to Morse code sounds and practice decoding by ear

600 Hz
15 WPM
50%
Audio status: Ready

CW Key Interface

Connect your USB CW key or use touch/keyboard as a virtual key

CW Key not connected
15 WPM
Dot: 80ms, Dash: 240ms, Char space: 240ms

Press your CW key, Spacebar, or Touch here to test

(Touch and hold for dash, quick tap for dot)

CW output will appear here...

Morse Code Flashcards

Click on the card to reveal the Morse code

A

Practice This Character

Use your CW key (keyboard, touch, or mouse) to practice sending the displayed character

Press Spacebar, click, or touch here to practice

(Touch and hold for dash, quick tap for dot)

Your CW input will appear here...

Your Learning Progress

Track your Morse code learning journey

0
Letters Learned
0
Practice Sessions
0
Flashcards Viewed

Overall Progress

About Morse Code Learning App

Welcome to the Morse Code Learning App - a comprehensive, progressive web application designed to help you learn, practice, and master Morse code efficiently and enjoyably.

Features

  • Learn: Complete Morse code reference table with interactive character learning
  • Practice: Convert text to Morse and vice versa with audio playback
  • Audio Training: Customizable Morse code audio with adjustable speed, frequency, and volume
  • CW Key Interface: Virtual CW key with keyboard, touch, mouse, and Web Serial API support
  • Flashcards: Interactive flashcard system for memorization
  • Progress Tracking: Track your learning progress with statistics
  • Phrase Management: Save, import, export, and organize practice phrases
  • Offline Capable: Works without internet connection (PWA)
  • Responsive Design: Works on desktop, tablet, and mobile devices

Technical Details

This application is built using modern web technologies:

  • HTML5, CSS3, and Vanilla JavaScript
  • Web Audio API for Morse code sound generation
  • Web Serial API for hardware CW key support (experimental)
  • Progressive Web App (PWA) with service worker
  • LocalStorage for data persistence
  • Responsive CSS Grid and Flexbox layouts

Morse Code Timing

The app uses standard PARIS timing calculation:

  • Dot duration = 1 time unit
  • Dash duration = 3 time units
  • Intra-character space = 1 time unit
  • Character space = 3 time units
  • Word space = 7 time units
  • PARIS word = 50 time units (standard for WPM calculation)

Words Per Minute (WPM) calculation: Time unit = 1200 / WPM (in milliseconds)

Project Information

GitHub Repository: morsecodewebapp

Author: Roberto Luiz Souza Monteiro

License: Apache License 2.0

Version: 1.0.0

License

Copyright © 2025 Roberto Luiz Souza Monteiro

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at:

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Acknowledgments

Special thanks to:

  • Samuel F. B. Morse and Alfred Vail for inventing Morse code
  • The amateur radio community for preserving and promoting CW
  • All open-source contributors to web audio and serial APIs
  • Testers and users providing valuable feedback

Getting Help

For issues, feature requests, or contributions:

  1. Check the GitHub Issues page
  2. Ensure your browser supports Web Audio API and Web Serial API (for hardware key)
  3. For audio issues, check browser permissions and update audio drivers
  4. Clear browser cache if experiencing persistent issues

Made with ❤️ for the amateur radio and Morse code community

"CQ CQ CQ DE [Your Call Sign] K"