Tap Party
Morse code chat with your friends. Open a room, share the link, and tap a big pad. A short tap is a dot, a long press is a dash. Friends hear your taps as tones, feel them as buzzes, and get the words read out.
No accounts and no server. Your browsers talk to each other directly.
Join a friend's room
New to Morse?
Learn the letters first. It starts with E, which is one dot.
Room
Connecting…
Invite friends
Room link: link
Tap pad
Short tap for a dot, hold for a dash. With VoiceOver or TalkBack: double-tap for a dot, double-tap and hold for a dash. With a keyboard: focus the pad and press Space or Enter, short or long. A pause ends the letter.
Your message
Letter so far: none
Message: empty
Messages
No messages yet.
Done for now?
Learn Morse
Letters come in the order Google's Morse trainer uses, starting with the easiest: E, T, A, I, M, S. Get a letter right twice and a new one unlocks. After a few letters you practice short words.
Now
Loading…
Your turn
Letter so far: none
All letters
Press a letter to hear it.
Hear any words
Start over
Braille view
Decoded messages as Unicode braille: uncontracted letters, numbers with the number sign, and basic punctuation. A braille display shows them as cells.
Your message
⠀
Messages
No messages yet.
Credits
Every library in Tap Party comes from a repo that 2three1y has starred on GitHub. 7 starred repos went in.
Starred repos used
-
trystero
- Repo: dmotz/trystero
- Author: Dan Motzenbecker
- License: MIT, full MIT text for trystero
- Used for: Rooms with no server. Browsers find each other through public Nostr relays, then send taps and messages straight to each other over WebRTC.
- Changes: None to the code. Source map comments were removed because the maps are not included.
- Notice: Copyright (c) 2021 Dan Motzenbecker. MIT License.
-
morse-learn
- Repo: googlecreativelab/morse-learn
- Author: Google Inc. (made by Tania Finlayson and Use All Five with Google Creative Lab)
- License: Apache-2.0, full Apache-2.0 text for morse-learn
- Used for: Learn mode: the Morse letter table, the order letters are taught in (E, T, A, I, M, S…), the rule that a letter counts as learned after 2 right answers, and the practice word list.
- Changes: Pieces of scripts/morse-dictionary.js, scripts/words.js, scripts/game-state.js and scripts/config.js were combined into one ES module. The reverse lookup table is now built from englishToMorse, because the original had a typo for the letter V. The file says so at the top.
- Notice: Copyright 2018 Google Inc. Licensed under the Apache License, Version 2.0. This is not an officially supported Google product. The morse-learn repo has no NOTICE file; its copyright notice and licence are kept in the file and in licenses/morse-learn.txt.
-
web-haptics
- Repo: lochie/web-haptics
- Author: Lochie Axon
- License: MIT, full MIT text for web-haptics
- Used for: Haptics. On Android it uses navigator.vibrate. On iPhone, which has no navigator.vibrate, it clicks a hidden iOS switch control so the Taptic Engine ticks.
- Changes: None.
- Notice: Copyright (c) 2025 Lochie Axon. MIT License.
-
braille
- Repo: Nonemoticoner/braille
- Author: Nonemoticoner
- License: MIT, full MIT text for braille
- Used for: Braille view: turns decoded text into Unicode braille cells.
- Changes: module.exports was changed to an ES module export. app/braille-text.js adds the number sign and the Unified English Braille punctuation cells before calling it.
- Notice: Copyright (c) 2015 Nonemoticoner. MIT License.
-
tabbable
- Repo: focus-trap/tabbable
- Author: David Clark and the focus-trap contributors
- License: MIT, full MIT text for tabbable
- Used for: Finds the buttons and fields inside a dialog, so Tab and Shift+Tab stay inside it.
- Changes: None to the code. The source map comment was removed.
- Notice: Copyright (c) 2015 David Clark. MIT License.
-
a11y-dialog
- Repo: KittyGiraudel/a11y-dialog
- Author: Kitty Giraudel
- License: MIT, full MIT text for a11y-dialog
- Used for: The Settings dialog and the Leave room dialog: focus moves in and back out, Escape closes, and the rest of the page is hidden from screen readers while it is open.
- Changes: The published build bundles a package called focusable-selectors, which is not starred. That part was removed and the focus trap now uses tabbable instead. The file says so at the top.
- Notice: Copyright (c) 2025 Kitty Giraudel. MIT License.
-
dart-bip340
- Repo: nbd-wtf/dart-bip340
- Author: fiatjaf
- License: MIT, full MIT text for dart-bip340
- Used for: Nostr relays only accept signed events. trystero normally signs them with @noble/secp256k1, which is not starred, so Tap Party signs with a JavaScript port of this repo's BIP-340 Schnorr code instead.
- Changes: Ported from Dart to JavaScript. The curve maths that the Dart code takes from pointycastle is written from scratch. It passes the official BIP-340 signing test vectors.
- Notice: Copyright 2021 fiatjaf. MIT License.
Looked at, not used
- hainguyents13/mechvibes: Its sound packs come from many people and none of them states its own licence, so they are not safe to reuse. Every tone and earcon in Tap Party is made with WebAudio oscillators instead, with no sound files at all.
- paulmillr/noble-secp256k1: trystero's Nostr strategy depends on it, but it is not starred, so it is replaced by the dart-bip340 port above.
- KittyGiraudel/focusable-selectors: Bundled inside a11y-dialog's published build, but not starred, so it was swapped for tabbable.
Used only for testing
- dequelabs/axe-core (MPL-2.0): Ran an automated accessibility check during testing. It is not part of the site.
Tap Party itself
Tap Party is MIT licensed. Tap Party licence, NOTICE file, source code on GitHub.