Join a Practice Room
💡 First time? Try the "main" room to meet other operators
📅 Regular Schedule (UTC)
Current time: --:--:-- UTC
🔧 How It Works
Enter Your Callsign
Use your amateur radio callsign or a practice call
Join a Room
Click "Join Room" - your browser will request microphone access
Key Your CW
Use an external key connected to audio input, or keyboard (coming soon)
See Decoded Text
Watch real-time Morse decoding from all operators in the room
✨ Features
Low Latency Audio
WebRTC peer-to-peer for ~70-100ms latency
Real-time Decoding
Automatic Morse code to text conversion
Completely Free
No registration, no ads, no tracking
Global Access
Practice with operators from anywhere
Works Everywhere
Desktop, tablet, mobile - any modern browser
Private & Secure
End-to-end encrypted audio (SRTP)
🔌 Using Native CW Gear?
Connect your USB iambic paddle or straight key:
# Install dependencies
pip3 install pyaudio numpy pyserial
# Run the sender (routes CW to this platform)
python3 cw_usb_key_sender.py ROOM_ID iambic-b 25 /dev/ttyUSB0
# Example: Join "main" room at 25 WPM
python3 cw_usb_key_sender.py wss://cw-practice.pages.dev/ws iambic-b 25 /dev/ttyUSB0
🟢 Active Rooms Now
Loading active rooms...
❓ FAQ
What equipment do I need?
Just a modern web browser and microphone! You can key CW by feeding audio from an electronic keyer, or use our keyboard interface (coming soon). For best results, connect a USB iambic paddle with our native client.
How many operators can join?
Currently 2-8 operators per room works best (mesh topology). We're working on scaling to larger groups.
What's the latency like?
Typically 70-140ms depending on your location. This is about the same as HF radio propagation delay for moderate distances.
Do I need to register?
Nope! Just enter your callsign and join. We don't store any personal information.
Can I create private rooms?
Yes! Just enter any unique room name. Share it with your friends to practice together.
Is this open source?
Yes! Check out the GitHub repository.