Custom Phone Vibrations with Morse Code: A Geek's Personalized Notification Hack

Map Morse code dots and dashes to phone vibrations so you can tell who's texting — just by feel.
This article covers a Hacker News side project that assigns custom Morse code vibration patterns to different contacts, letting users identify who's messaging them purely by touch. It explores why Morse rhythms translate well to haptic feedback, how Android's VibrationEffect and iOS's Core Haptics APIs handle custom timing sequences, and where the real engineering challenge lies — in tuning millisecond-level parameters. The piece also acknowledges real-world limits: inconsistent Android hardware and Morse code's learning curve make it best suited for geeks and accessibility-focused users rather than mainstream audiences.
A Fun Geeky Little Experiment
A project titled "Giving friends custom text buzzes based on Morse code" surfaced on Hacker News, sparking a small but engaged community discussion. The idea is simple yet clever: by mapping the rhythm of Morse code dots and dashes to phone vibrations, your device's buzz becomes a signal you can actually "read" — different friends and contacts each get their own unique vibration pattern.
In other words, when your phone vibrates in your pocket, you don't need to pull it out. The combination of short and long pulses alone tells you who just messaged you. It's a fascinating attempt to fuse an age-old communication encoding system with modern mobile devices.
Why Morse Code Works Well for Vibration Alerts
Morse code's core strength lies in its use of just two basic units — short signals (dots) and long signals (dashes) — along with pauses between them, to encode letters and numbers. This binary rhythm maps naturally onto a phone's linear motor (vibration motor).
Strong Pattern Recognition
Humans are remarkably good at remembering rhythmic patterns. Just as people can distinguish between different ringtones, the brain can — with a little practice — learn that "short-short-short" means the letter S, or "long-short" means N. Encoding a friend's initials as a vibration pattern effectively creates a tactile caller ID.
No Visual Attention Required
Compared to pop-up notifications or screen wake-ups, haptic alerts are far more discreet and practical in situations like meetings, driving, or working out. Morse code vibrations offer a way to receive information without interrupting the current task — a direction that the accessibility community has long championed.
Implementation Approach and Technical Details
From an engineering standpoint, projects like this typically rely on vibration APIs provided by the mobile OS. Both Android's VibrationEffect and iOS's haptic feedback interfaces allow developers to define custom vibration timing sequences.
Mapping Morse code to vibrations essentially means converting dots, dashes, and inter-character gaps into an array of millisecond-level on/off durations. For example:
- Dot = short vibration (e.g., 100ms)
- Dash = long vibration (e.g., 300ms)
- Inter-symbol gap = short pause
- Inter-letter gap = longer pause
The developer simply assigns a text string to each contact, and the app automatically translates it into a Morse sequence and sends it to the vibration motor. The real challenge isn't the encoding itself — it's tuning the timing parameters. Too fast and the patterns blur together; too slow and the whole thing becomes tediously long.
Android's VibrationEffect API, introduced in Android 8.0 (Oreo), supports custom vibration sequences via the createWaveform() method, which accepts an array of durations alternating between "off" and "on" in milliseconds. On the iOS side, Apple introduced the Taptic Engine starting with the iPhone 7 — a linear resonant actuator (LRA) that responds faster and more precisely than the older eccentric rotating mass (ERM) motors. This hardware is much better at rendering the contrast between short dots and longer dashes. Through the Core Haptics framework, developers can fine-tune the timing, intensity, and waveform of each haptic event, giving Morse rhythm reproduction a solid hardware foundation. The two platforms also differ in their permission models: Android requires declaring the VIBRATE permission, while iOS haptic APIs need no special permissions at all — making it lower-friction for small side projects.
The Line Between Toy and Practical Tool
Projects like this embody the classic Hacker News spirit of "building for the joy of it." The modest 20 upvotes and handful of comments show it's no viral hit — but it does address a niche that mainstream manufacturers have largely ignored: personalized, low-interruption haptic notifications.
Real-world deployment still faces practical constraints. While smartphone vibration motors have improved significantly in precision (Apple's Taptic Engine being a prime example), the Android ecosystem is fragmented, with wildly varying vibration hardware quality that undermines timing consistency. There's also the learning curve of Morse code itself — most users will probably just look at their screen.
That said, for certain audiences — Morse code enthusiasts, users with accessibility needs, or geeks who just love tinkering — tools like this hold genuine value. They remind us that tech innovation doesn't always have to be a grand narrative. Sometimes a tiny haptic encoding scheme is enough to create a genuinely unique user experience.
The Taptic Engine in iPhones is fundamentally a linear resonant actuator (LRA): electromagnetic force drives a weighted mass back and forth along a single axis at high frequency, rather than spinning an eccentric rotor like traditional motors. This allows response latency as low as a few milliseconds, enabling near-instant start and stop — so timing sequences like "100ms short buzz, 300ms long buzz" are reproduced with impressive accuracy on iPhones. The Android side is more mixed, using both LRA and ERM solutions: flagship devices (like the Pixel and Galaxy S series) have largely upgraded to LRA, while mid-range and budget phones still rely heavily on ERM motors, whose rotational inertia causes short vibrations to "blur" at the edges, directly undermining the clarity of Morse rhythm. This is precisely why cross-device consistency is one of the key engineering challenges for projects of this kind.
Conclusion
Embedding Morse code into phone vibrations is a lightweight experiment that bridges classic encoding theory with modern interactive devices. It doesn't aim for mass adoption — but it opens up an imaginative space for haptic interaction. For developers who are curious, this is a low-barrier side project with a quick and satisfying payoff: you get hands-on practice with mobile APIs while having fun with the basics of signal encoding.
Related articles

Random Pruning of the DPO Computation Graph: 1.4x Training Speedup and Lower Peak Memory
DPO training too slow and memory-hungry? This paper proposes a random pruning framework for the DPO computation graph, sampling independently across position, sequence, and branch dimensions; branch pruning achieves a 1.426x step-time speedup and cuts training time by about 30%, with in-depth attribution of memory and time gains.

Why Does JEPA Underperform MLM in Longitudinal EHR Representation Learning?
New study compares JEPA and MLM for longitudinal EHR representation learning on MIMIC-IV: three JEPA variants train stably without collapse but underperform MLM; target size, not heterogeneity, drives prediction error.

Transfer Learning + Visible Light Communication: A New Approach to Energy-Efficient Indoor Positioning
A study proposes a transfer learning-based visible light communication indoor positioning method, achieving 47% accuracy improvement on the BOSCH factory dataset, 67.5% model efficiency under high noise, and introducing the ME composite metric for energy-efficient positioning in energy-constrained industrial IoT scenarios.