Skip to content
NoopApp edited this page Jun 12, 2026 · 5 revisions

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.

Affiliation & Legality

Is NOOP affiliated with WHOOP?

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.

Is NOOP a medical device?

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.

Is the Mind / mood feature medical?

No. Mind is a daily mood check-in — you log how you're feeling, and NOOP looks for correlations between your mood and your own metrics (sleep, recovery, strain, and so on) over time. It is a non-clinical, informational journaling tool, not a mental-health diagnosis, screening, or treatment. It doesn't score, grade, or flag your mental state, and it never sends anything anywhere — your check-ins stay on your device with the rest of your data. If you're struggling, please talk to a qualified professional.

Getting Started

Do I need a WHOOP account?

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 a local on-device database. There is no cloud, no sync, and no need for any account.

Do I need a subscription?

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.)

Is my data uploaded anywhere?

No. Everything NOOP reads from your strap and imports from your files stays on your device in a local on-device database (SQLite/GRDB on macOS and iOS, Room on Android). The only feature that ever uses the network is the optional AI Coach, and only if:

  1. You explicitly enable it and provide your own API key or endpoint (Anthropic, OpenAI, or a local/self-hosted OpenAI-compatible LLM such as Ollama or LM Studio).
  2. You ask it a question.
  3. 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.

Where are my scores stored?

In a local on-device database on your machine:

  • macOS: ~/Library/Application Support/OpenWhoop/whoop.sqlite (inside the app's sandbox container) — SQLite via GRDB
  • iOS (build-from-source): inside the app's private container, the same on-device SQLite (GRDB) store as macOS
  • Android: in the app's private storage directory — a Room database

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.

Installation & Platforms

Which platforms does NOOP run on?

  • 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.
  • iOSbuild-from-source only (folded into main in v1.94). It shares the analytics code with macOS, so results match, but it's newer and less battle-tested (live BLE on a real iPhone isn't fully validated yet). 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.

Why isn't NOOP on the App Store or Google Play?

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.

Why is the macOS app not notarized?

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.app in Terminal, or
  • In System Settings → Privacy & Security, find NOOP at the bottom and click Open Anyway.

Strap Connection & Pairing

Can I run NOOP alongside the official WHOOP app?

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.

Why does pairing sometimes fail?

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:

  1. Close the official WHOOP app on your phone (fully quit it).
  2. Turn off your phone's Bluetooth, or move it far away.
  3. 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.
  4. 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.

Why don't I see my strap in System Settings → Bluetooth?

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.

Features & Data

Where is the 24-hour heart rate graph?

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).

Is there a sync button?

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.

Why no live heart rate on my phone?

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").

Does NOOP work with WHOOP 5.0 / MG?

Live heart rate: yes, confirmed working on real hardware.

Full metrics (recovery, strain, sleep): still being reverse-engineered from the offload. Strain does compute from heart rate on every WHOOP family, but 5.0 / MG HR is sparse, so scores build slowly and sit at 0 without sustained wear — they aren't gated off. You can help by opting into Settings → Experimental if you own a 5.0 / MG. On WHOOP 4.0, everything works end to end.

New in v1.95: WHOOP 4.0 straps on the newer "v25" firmware layout now decode sleep and recovery (the motion/gravity vector is recovered). Before v1.95 only live heart rate worked on those v25 straps.

Always pick your strap version before pairing — "WHOOP 4.0" or "WHOOP 5.0 / MG" — because they use different Bluetooth protocols.

Where do I see my strap's battery level?

On the Today / Control Center screen. When the strap is connected, NOOP reads its battery level over Bluetooth and shows it as a strap-battery indicator alongside your recovery ring and key-metric tiles. If the strap is disconnected, the last known level is shown until it reconnects. (This is the strap's battery, not your Mac's or phone's.)

Can I look back at older nights of sleep?

Yes. The Sleep screen shows last night's stages by default, and you can browse past nights — page back through previous nights to see each one's sleep stages and timing. Any night NOOP has data for (from a strap sync or an imported WHOOP/Apple Health export) is browsable.

Why do my step counts look high on WHOOP 5.0 / MG, and how do I fix it?

Steps on the WHOOP 5.0 / MG are derived from the strap's motion, and the raw count can run high — arm movement that isn't actually walking (gesturing, driving, cooking) can inflate it relative to a phone or dedicated pedometer. To correct for this, NOOP has a step calibration setting.

To calibrate: open the step calibration setting (in Settings) and set your calibration factor. NOOP multiplies the raw strap steps by this factor, so if your strap consistently reads, say, 20% high, you dial the factor down to bring it in line with a count you trust (your phone's health app, a known walk distance, etc.). Adjust until NOOP's daily total matches your reference, and it'll apply going forward.

Why is the app only dark mode?

That's the current design. A dark interface is easier on the eyes during recovery breathing sessions and aligns with the app's offline-first, low-friction aesthetic. Light mode is being considered (a mockup study is tracked in issue #94) — if it matters to you, weigh in there.

How long before my recovery score stabilizes?

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.

Can I import my WHOOP data?

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.

Can I import my nutrition data?

Yes. In Data Sources, choose Import Nutrition CSV and pick an export from a nutrition tracker. NOOP currently reads Cronometer and MacroFactor CSV exports.

It looks for the columns those apps produce — a date (or day/timestamp) column plus any of calories (energy/kcal), protein, carbs (carbohydrates), and fat — and maps them onto your daily timeline so you can correlate what you ate with how you recovered. Column names don't have to match exactly; NOOP recognises the common header variations each app uses, and quietly skips columns it doesn't understand. Everything is parsed on-device and stored locally with the rest of your data — nothing is uploaded.

To get the file: in Cronometer use Account → Export Data (the daily-summary / nutrition CSV); in MacroFactor use its CSV export from the data/export screen. Then import it in Data Sources.

Can I export my data from NOOP?

Not yet — not as a single "export everything" button. Your data is stored in a local on-device database (SQLite/GRDB on macOS and iOS, Room on Android); advanced users can access it directly via the database file. A formal export feature is on the roadmap.

On iOS, there's one targeted path today: Export for Shortcuts (see below), which hands your NOOP-computed metrics to Apple Health via the Shortcuts app.

What is "Export for Shortcuts" on iOS?

It's how the iOS build gets your NOOP-computed metrics into Apple Health without NOOP itself touching HealthKit. Instead of asking for HealthKit write permission, NOOP writes a small file of your recent metrics and hands it to the Shortcuts app, which does the actual write into Apple Health on your behalf.

Why it exists: keeping NOOP free of a direct HealthKit dependency keeps the build simpler and the permissions footprint smaller for a build-from-source, anonymity-first app — and it puts you in control, since the Shortcut runs only when you run it. It also means a sideloaded build doesn't need the HealthKit entitlements wired up to still land its numbers in Apple Health.

How to use it: open Export for Shortcuts on iOS, which generates the export and triggers the companion Shortcut. The Shortcut writes the metrics into Apple Health. Re-run it whenever you want to push your latest numbers across.

De-dup behaviour: the export is safe to run repeatedly. Each metric sample carries a stable identity (its date/time and type), so re-running the Shortcut updates or skips samples that already exist rather than creating duplicates. You won't get two copies of last night's sleep because you exported twice.

Automations & Integrations

What can I do with the strap's double-tap?

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).

Can the strap buzz when my phone gets a text?

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.

Can I use Apple Health?

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 (build-from-source): import works the same way (point it at an Apple Health export). To get your NOOP-computed metrics back into Apple Health, iOS uses Export for Shortcuts — a HealthKit-free path where NOOP hands the metrics to the Shortcuts app, which writes them to Apple Health for you (de-duped, so re-running won't create copies). See What is "Export for Shortcuts" on iOS? above.

Android: imports Health Connect and Apple Health exports similarly to macOS.

Troubleshooting

The strap won't bond. I see "bond refused" in the log.

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.

NOOP connects but history doesn't offload.

Check Data Sources to see if it's stuck "syncing." If it says "History synced 2 hours ago" and hasn't updated:

  1. Open Live and confirm the strap is still bonded (green dot).
  2. Tap Re-scan to restart the connection.
  3. 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).

Connects and "completes" the sync, but no data ever lands? If the log says "banked no sensor history (console-only)" or "no flash cursor (trim=0xFFFFFFFF)", your strap isn't recording history to its flash — which happens when its internal clock has lost sync. That isn't a connection problem and it isn't a NOOP decode bug: fully charge the strap to 100%, leave it charging a while, then reconnect so it re-sets its clock and starts banking. Once it's banking, the log shows a "persisted N rows" line on each sync. See Troubleshooting for the full rundown.

I have a WHOOP 4.0 but recovery / sleep never appears (only live HR works).

First, update to v1.95 or later. Some WHOOP 4.0 straps ship a firmware (internally "v25") whose offloaded history NOOP couldn't decode for motion before v1.95 — so the sleep engine had nothing to work with and only live heart rate showed up. v1.95 decodes it. Update, wear the strap through a night, then sync, and recovery + sleep should start building.

If they still don't appear after a full night on v1.95:

  1. Fully charge the strap to 100%, then reconnect. A strap whose clock has lost sync stops saving history to flash, so there's nothing to offload — charging re-establishes it.
  2. Import your WHOOP CSV export (Data Sources) for an instant history backfill while the strap catches up.
  3. If a synced log shows records arriving but nothing landing, share a strap log on a GitHub issue — that's exactly how the v25 layout got decoded in the first place.

Why is recovery showing "Calibrating — N of 4 nights"?

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.

I see a health warning banner. What does it mean?

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).

Support & Donations

How do I donate?

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.

How do I report a bug?

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, email thenoopapp@gmail.com.

Where can I find the full docs?


Not affiliated with WHOOP. Not a medical device. Everything stays on your device.

Clone this wiki locally