-
Notifications
You must be signed in to change notification settings - Fork 646
FAQ
NOOP is a local-first companion app for WHOOP straps — no account, no cloud, no subscription. This page answers the questions we hear most.
No. NOOP is an independent, unofficial, non-commercial interoperability project. It is not affiliated with, endorsed by, or connected to WHOOP, Inc. "WHOOP" is used only nominatively to identify the hardware NOOP talks to — your own device and your own data.
NOOP performs no DRM circumvention and contains no WHOOP proprietary code, firmware, or assets. It simply reads data from a strap you own, on a machine you control, for the sole purpose of interoperability.
No. NOOP is not a medical device. All computed outputs — heart rate, HRV, recovery, strain, sleep, SpO₂, respiratory rate, and skin temperature — are approximations, not clinically validated readings. Do not use them to diagnose, treat, or make health decisions. Consult a qualified healthcare professional if you have health concerns.
No. NOOP never logs into a WHOOP account and never hits a WHOOP server. It talks only to the strap over Bluetooth and stores everything on your own device in SQLite. There is no cloud, no sync, and no need for any account.
No. NOOP is free, forever. Every feature is unlocked from day one. There is no paywall, no upsell, and the app never asks for payment. (Optional, one-off crypto donations are available if you want to support development, but they're entirely voluntary.)
No. Everything NOOP reads from your strap and imports from your files stays on your device in a local SQLite database. The only feature that ever uses the network is the optional AI Coach, and only if:
- You explicitly enable it and provide your own API key (OpenAI or Anthropic).
- You ask it a question.
- It sends only a short text summary of your recent metrics plus your question — never raw biometric streams or identifiers.
If you never enable the AI Coach, NOOP makes zero network connections.
In a single SQLite database on your machine:
-
macOS:
~/Library/Application Support/OpenWhoop/whoop.sqlite(inside the app's sandbox container) - Android: in the app's private storage directory
The file is not encrypted by NOOP itself, but on macOS FileVault (full-disk encryption) protects it when the machine is powered off. The Android app declares no INTERNET permission, so nothing can upload data without you knowing.
- macOS 13+ — the reference implementation. Download the pre-built app or build from source.
- Android 8.0+ — a full, native Kotlin app. Grab the APK from Releases and sideload it.
- iOS — an experimental, build-from-source community port (PR #42). There is no download: iOS has no anonymous distribution path (the App Store and TestFlight both require a real Apple Developer identity), so it must be built in Xcode if you want to run it.
iOS: There is no anonymous path to the App Store or TestFlight. Both require a real Apple Developer identity, which is fundamentally at odds with staying anonymous. iOS is build-it-yourself in Xcode.
Android: Google Play would require linking the app to a developer account with a real identity and payment method. The APK is free to sideload instead.
Notarization requires a paid Apple Developer ID tied to a real identity — incompatible with staying anonymous. NOOP is sandboxed and ad-hoc code-signed, the full source is here to inspect, and you can build it yourself to avoid the Gatekeeper prompt entirely.
To open it: after dragging the app to Applications, either:
- Run
xattr -dr com.apple.quarantine /Applications/NOOP.appin Terminal, or - In System Settings → Privacy & Security, find NOOP at the bottom and click Open Anyway.
Not on the same device, at the same time. A WHOOP strap holds an encrypted Bluetooth bond with only one device at a time. If your phone's WHOOP app has the bond, NOOP cannot pair. You must close the official app (fully quit it, or turn that phone's Bluetooth off) before pairing with NOOP.
Once bonded to NOOP, the strap breaks its bond with the official app — you may need to re-pair afterward.
The most common reason is that the strap is still bonded to another device (usually your phone's official WHOOP app). If you see "Encryption is insufficient" or "bond refused" in the strap log:
- Close the official WHOOP app on your phone (fully quit it).
- Turn off your phone's Bluetooth, or move it far away.
- Put the strap in pairing mode — on WHOOP 5.0 / MG, tap the band repeatedly (firm taps on the sensor) until the LEDs flash blue.
- In NOOP, go to Live → choose your strap version → Scan & Connect.
If it still fails, the strap is likely still bonded elsewhere. Free it from everything else, charge it, and try again.
WHOOP straps don't appear in system Bluetooth settings. They advertise on a custom profile that only NOOP (and the official WHOOP app) can find. That's by design — nothing to pair in System Settings.
Live heart rate streams into the Live screen (a large, smoothed BPM display) when the strap is bonded. A rolling graph of recent R-R intervals is listed below it.
For historical heart rate, see the Health screen (a live HR sparkline if the strap is connected, plus biometric tiles) or the Explore screen (tap Heart Rate and pick a date range).
No — syncing is automatic. When the strap bonds and connects, it automatically offloads its last ~14 days of history over the first few minutes. After that, new data streams in live.
The Data Sources screen shows the strap's status. Look for:
- Bonded · syncing — actively pulling history.
- History synced N ago — last sync completed N minutes/hours/days ago.
If the strap seems stalled, open Live, confirm it's still connected (green dot), and wait 30 seconds.
Live heart rate requires the strap to be bonded to your phone. If you see HR streaming fine but buzzes / alarms / double-tap don't work, the strap isn't truly bonded — it's only broadcasting the standard Bluetooth heart-rate profile (which streams unbonded).
To fix it: free the strap from every other device, make sure your WHOOP app is closed, and pair again from NOOP's Live screen. You should see "CLIENT_HELLO acked — link established" in the strap log (not "bond refused").
Live heart rate: yes, confirmed working on real hardware.
Full metrics (recovery, strain, sleep): being reverse-engineered. These deeper features are still maturing; you can help by opting into Settings → Experimental if you own a 5.0 / MG. On WHOOP 4.0, everything works end to end.
Always pick your strap version before pairing — "WHOOP 4.0" or "WHOOP 5.0 / MG" — because they use different Bluetooth protocols.
That's the design. A dark interface is easier on the eyes during recovery breathing sessions and aligns with the app's offline-first, low-friction aesthetic. If you have a strong use case for light mode, open an issue — it's a straightforward feature to add.
Recovery needs 3–7 nights for NOOP to learn your personal baseline (resting HR, HRV, and sleep patterns). The score sharpens with each night. If you're in a hurry, import your WHOOP CSV export from Data Sources and your full history backfills instantly.
Yes. In Data Sources, tap Import WHOOP Export and select the CSV folder (or .zip file) from app.whoop.com → Data Management. NOOP imports your recovery, strain, sleep, workouts, and journal entries — the same data the app itself computes.
Not yet. Your data is stored in SQLite on-device; advanced users can access it directly via the database file path. A formal export feature is on the roadmap.
On macOS, a double-tap can:
- Lock the Mac
- Buzz back (haptic confirm)
- Mark a moment (timestamp)
- Run any macOS Shortcut by name
- Do nothing
On Android, double-tap triggers a haptic buzz pattern.
Configure it in Automations (macOS) or Settings (Android).
On macOS: Notifications lets you pick which apps buzz your wrist — Mail, Messaging, Teams, Calendar, etc. You choose the buzz pattern per app.
On Android: wrist alerts are opt-in and work the same way — choose apps, set patterns, and NOOP checks your settings before buzzing.
Quiet hours (e.g., 10 PM to 7 AM) mute wrist alerts if enabled.
macOS: one-way import only. Export your Apple Health data from the Health app (Health app → Profile → Export All Health Data), then import it in Data Sources. NOOP streams the export (never loads it all into memory), de-dupes it, and normalizes units. Years of HR, HRV, sleep, SpO₂, body composition, and more can be imported at once.
iOS (experimental): the build-from-source port can read and write to Apple Health. It can sync your NOOP-computed metrics back to Apple Health so they appear in your Health ecosystem.
Android: imports Health Connect and Apple Health exports similarly to macOS.
The strap is still bonded to another device. Close the official WHOOP app completely (kill the process, don't just background it), turn off that phone's Bluetooth or move it far away, put the strap in pairing mode (LEDs flash blue on 5.0 / MG), and try pairing with NOOP again.
Check Data Sources to see if it's stuck "syncing." If it says "History synced 2 hours ago" and hasn't updated:
- Open Live and confirm the strap is still bonded (green dot).
- Tap Re-scan to restart the connection.
- Wait 2–3 minutes for the offload to start.
If it's still stuck after several minutes, file a bug report and include your strap log (Live → Share strap log on macOS, Settings → Strap → Share strap log on Android).
Recovery needs at least 3–4 nights of data to establish your personal baseline. Once it has enough, the ring fills in with your real score. Import your WHOOP export to skip the wait.
NOOP watches for early-illness signs on-device: when your resting HR, HRV, skin temperature, and respiratory rate drift from your baseline all at once, it surfaces a gentle note: "Your body looks strained — consider taking it easy."
This is informational only, not a diagnosis. If you're genuinely unwell, consult a healthcare professional. The toggle is in Automations → Illness early-warning (macOS, opt-in by default) or Automations (Android, opt-out by default).
NOOP is free forever — donations are optional and never required. If you want to support development and hardware costs, crypto-only donations are available:
| Coin | Address |
|---|---|
| BTC (Bitcoin) | bc1qn2gkl7wslwpws06mvazjn2uu689zlkv7kg3kf5 |
| ETH (Ethereum) | 0xd64D508b531c4b1297Ca4023C774e0E97aA67B7F |
| ADA (Cardano) | addr1qxsju3y0mlke2h6h2g6qgnq4r3jstngtyjxs0nnp5zrv28zv8p5rgzruxyjz33j9k23pffta8z639e2snjdd4vcetfqsn4vwr3 |
| XRP (XRP Ledger) | rpvijHi2nVY9WWAJhojsAX5tJmHdmLtFhq |
Copy-to-clipboard QR codes are also in the app under Support. Even $5–10 genuinely helps. If you can't or would rather not, starring the repo, filing good bug reports, or telling another WHOOP user is just as valued.
Open a GitHub issue describing the problem and how to reproduce it. If it's a Bluetooth problem, include your strap log (tap Share strap log in the app). For sensitive reports, contact the author via the email on the GitHub profile.
- Features — every screen and what it does
- Privacy and Security — where your data lives, threat model, encryption
- Strap Support and Pairing — WHOOP 4.0 vs 5.0, bonding, Bluetooth quirks
- How NOOP Works — the architecture, reverse-engineering, and math
- Contributing — how to build, test, and submit PRs
- Installation — quickstart for each platform
- Protocol — the wire format and frame layout (for developers)
Not affiliated with WHOOP. Not a medical device. Everything stays on your device.
NOOP is an independent, unofficial, non-commercial interoperability project — not affiliated with, endorsed by, or sponsored by WHOOP, Inc. "WHOOP" is a trademark of WHOOP, Inc., used nominatively. Works only with a device you own; not a medical device; every metric is an approximation, not medical advice. · Privacy and Security · Donations · Releases
Get started
Tutorials
- Tracking a Workout
- Recovery, Strain & Readiness
- Automations
- Breathe & Intervals
- Importing History
- AI Coach
- Widget & Notifications
- Reading Your Sleep
- Explore & Compare
Reference
Project