HEART · FOR ANDROID

HRV, sleep and recovery,
computed on the phone.

Heart reads the R–R intervals off a Bluetooth heart-rate band and works out HRV, sleep stages, recovery and strain from them. There is no account, and no Heart server for your data to go to.

Coospo HW9 · Polar · Garmin · Wahoo · any 0x180D strap

v1.0.23 · Android 7.0+ · ~103 MB · free · what's new

Heart's Home screen: a connected HW9 band at 53% battery, live heart rate of 104 bpm in zone 2 with a rolling trace, and today's active calories
01 THE BAND

Which bands work

Heart reads the standard Bluetooth Heart Rate Service (0x180D), so straps from other brands work too.

Figure showing three places to wear the Coospo HW9: chest, upper arm and forearm CHEST UPPERARM FORE-ARM
The HW9 can be worn on the chest, upper arm or forearm.
BUILT WITH

Coospo HW9

Worn on the chest, upper arm or forearm. This is the band I wear, and Heart was built and tested against it. It reports live heart rate, beat-to-beat intervals for HRV, and battery level.

ALSO WORKS WITH

Any standard Bluetooth strap

If it broadcasts the Bluetooth Heart Rate Service (0x180D), Heart can read it.

  • Polar H9
  • Polar H10
  • Garmin HRM-Dual
  • Wahoo TICKR
  • and similar

A Heart user has confirmed the Polar H9 works. HRV needs beat-to-beat (RR) intervals: a strap that doesn't send them still gives live heart rate, and optical wrist sensors report them unevenly, so their HRV is coarser.

02 WHAT IT DOES

What it works out while you wear it

Sleep and recovery come from the overnight heart rate. Gym sessions start from your saved location. Walks, runs and rides you start yourself.

THE BRIEF

The Brief tab

The Brief shows a readiness score, a suggested focus for the day, your stress, today's strain and how far you've travelled. Below it, a Holt forecast guesses tomorrow night's HRV from the last one to two weeks. It needs five nights before it starts, and it wobbles.

  • Readiness and recovery are measured against your last 30 nights
  • Focus is one of push, maintain, easy or rest; strain is zone-weighted effort on a 0–21 scale
  • Tap the distance line to see the day's route on a map
  • Share the day's Brief as a Story image, with the reasons behind the score
Illustration · example values

SLEEP & RECOVERY

Sleep, from overnight heart rate

Wear the band to bed. Heart looks for sleep in the overnight heart rate, in 5-minute buckets, and splits the night into awake, light, deep and REM. The stager is a set of thresholds rather than a trained model, and it hasn't been checked against a sleep lab; if a night is clearly wrong, you can correct it. Overnight HRV (RMSSD) and resting heart rate feed the recovery score, which compares last night with your previous 30.

Illustration · example night

WORKOUTS

Gym sessions start when you arrive

Save your gym's location once. Stay inside the radius (250 m by default, 100–500 m in Settings) for two minutes wearing the band, and a Gym session starts. It ends a few minutes after you leave, or once the band has stopped sending for a while. Tag it Push, Pull or Legs and Heart keeps track of what you trained. Walks, runs and rides you start yourself, and they get a GPS route on an OpenStreetMap map.

A finished session can be shared as a Story image with a caption, for WhatsApp, email and the like. You pick what goes on it (heart rate, calories, times, route), and a route is cut off around the Home location you save.

Illustration

FROM THE APP

Screenshots from my own phone, with my own data.

  • Heart's Brief tab: today's focus Maintain, strain 0.5 of 21, recovery trending down 25%, resting heart rate up 12 bpm over 5 nights, and tomorrow's readiness forecast of 107 ms RMSSD, likely down.
    The Brief tab
  • A 1 hour 36 minute gym session: average heart rate 108 bpm, max 150, min 77, a heart-rate trace over the session, and time in zones: 67% zone 1, 31% zone 2, 2% zone 3.
    A gym session
  • The share preview for the same gym session: a Story card with duration 1h 36m, average and max heart rate and a time-in-zones bar, with switches for heart rate, calories and times.
    Sharing it as a Story

ALSO

  • Live heart rate & zones

    Your heart rate and current training zone, updating live on the Home screen.

  • HRV & resting heart rate

    Overnight RMSSD and resting HR, charted over days and weeks next to your 30-day baseline.

  • Irregular-rhythm hints

    Four RR features (pNN50, CoV, RMSSD, range). If three cross their thresholds for 30 seconds, Heart logs the stretch as worth a look. It is a wellness hint and cannot diagnose anything.

  • Active calories

    Keytel 2005, counted only while your heart rate is at or above 90 bpm, where the formula holds. Below that it counts nothing, so this is active energy, not your whole day.

  • Location timeline

    On by default, off in Settings. While the band is connected it logs a point at most every 2 minutes or 50 m, kept on the phone. Nothing is recorded within 150 m of the Home location you save.

  • Export and delete

    Samples, scores, sleep history and the daily JSONL sit in the app sandbox. Export writes all of it into one JSON file, and delete-everything is one tap.

03 GET IT

Download Heart

Android 7.0 or newer, no iPhone version. You also need a Bluetooth heart-rate strap: without one the app opens and has nothing to read.

Version1.0.23
Min Android7.0 · API 24
Size~103 MB
CostFree.
SHA-256 (APK)60a9642360d8de25f5cd137db0e325a76d69f948137f75880d5fc6221eaa4cc4

First time installing an APK? Follow the install steps  ·  privacy policy

WHAT'S NEW

All releases →

V1.0.23 · THE CURRENT DOWNLOAD

Eight languages, the Brief, Story sharing, in-app updates, and gym sessions that end on time

Heart now speaks English, German, Chinese, Polish, Hindi, Spanish, Dutch and French. Pick one in Settings or let it follow your phone; numbers, dates and notifications follow the language too. Coach becomes the Brief: one card with today’s readiness, focus, stress, strain and how far you travelled. The coach chat and the optional AI model download are gone. You can share it, or any finished session, as a Story image for WhatsApp or email, with switches for what goes on it; a route is cut off around the Home location you save. Gym sessions start once you have been inside the radius for two minutes with the band on, and end a few minutes after you leave or when the band goes quiet, with a three-hour cap. If a gym session ends while you are still there with the band on, by mistake or otherwise, Heart picks the same session up again until you leave. Resting heart rate now comes only from your overnight minimum; it was being learned from gym sessions, which made a quiet stretch between sets look like rest and ended workouts after 20 minutes. Rows of 20-second gym sessions recorded before the band started streaming are cleaned up, and a workout that was cut in two is joined back into one. The old sessions that never ended get trimmed once, using your own location timeline. Every session now shows its own calories, and Home shows the whole day: resting metabolism so far plus active energy. Two calorie bugs are gone: a band dropout no longer counts as exercise, and resting energy is no longer counted twice. Effort looks at the whole session now, so an hour spent mostly in zone 1 reads Easy. The notification can show your live heart rate on the lock screen, and you can switch that off in Settings. Backups go to Download/Heart and survive an uninstall; after a reinstall Heart asks you to point it at that folder. Heart also checks pointbreaklab.com for new versions and installs them itself after checking the download’s checksum; from this version on you won’t need to come back here for updates. Also: a new launch screen, less lag, and fixes for a minimum heart rate of 0 bpm, a resting estimate of 0 bpm, an old heart rate shown as live, and a Load that differed between the list and the session.

Read the full changelog →
04 INSTALL HELP

Installing on Android

Heart comes as an APK file rather than from an app store, so Android asks a couple of extra questions the first time. These are the prompts people have run into so far.

  1. Download the APK

    Open this page in Chrome or Samsung Internet and tap Download APK. The file is called heart-android.apk.

  2. Open the downloaded file

    Tap the finished download in your notifications, or find it in My Files → Downloads.

  3. Allow installs from that app

    If Android says your browser or My Files isn't allowed to install apps, tap Settings, turn on Allow from this source (Install unknown apps), then go back and tap Install.

  4. If Play Protect warns you

    Play Protect may call Heart an unrecognised app, because it comes from outside the Play Store. Tap More details → Install anyway.

  5. Open Heart and pair your band

    Put the band on, open Heart and follow the pairing prompt. Allow the permissions it asks for so it can find your band.

SAMSUNG GALAXY

"Blocked by Auto Blocker"?

Samsung's Auto Blocker stops apps that don't come from an official app store. Open Settings → Security and privacy → Auto Blocker, turn it off, and install Heart. You can switch Auto Blocker back on once Heart is installed, but you'll need it off again for each update.

Download failed?

Try again in another browser, for example Samsung Internet instead of Chrome, or the other way round.

Updating to a new version

From 1.0.23, Heart checks for new versions itself and offers to download and install them; Android asks you to confirm. Otherwise, download the new APK and install it over the old one. Either way your data is kept, so there's no need to uninstall first.

05 PRIVACY

What leaves your phone,
and what doesn't

Every score is computed on the phone. Heart has no server and no account, so your data only goes somewhere if you send it. The formulas are listed below with their sources.

Compute
Every score is calculated on the phone.
Account
None. There is nothing to sign up for.
Server
None. There is no Heart server to send data to.
Telemetry
None. No analytics and no ads.
Network
OpenStreetMap map tiles, and a check of pointbreaklab.com for a new Heart version at most every 12 hours (a small version file; switch it off in Settings). Only if you turn them on: Google Drive backup and phone-to-phone sync over your own Wi-Fi.
Backups
Written to Download/Heart on the phone, which is kept when Heart is uninstalled. After a reinstall you point Heart at that folder. Anything newer than the last backup is lost.
Maths
Published formulas, each with its source (list below).
Heart architecture diagram A heartbeat detected by the HW9 band, worn on the chest, upper arm, or forearm, is broadcast over BLE GATT as bpm and RR-interval values, captured by a background service on the phone, appended to an on-disk JSONL log, and fed through an on-device compute pipeline (HRV, sleep, rhythm, readiness, strain) that produces the live UI and the Brief. No server, account, cloud sync or telemetry is part of this picture, and the scores come from closed-form formulas, not a trained model. HW9 BAND · CHEST OR ARM Heartbeat (ECG) bpm + RR ms BLE GATT · 0x2A37 DEVICE BOUNDARY BLE notify frame BLE 4.0+ · LINK-LAYER ENCRYPTED BLE notify · ~1 Hz DIRECT · NO RELAY · < 10 m ON THE WIRE bpm + RR ms only YOUR PHONE BLE service · capture ON-DEVICE BOUNDARY JSONL log · sandboxed HRV · Sleep · Rhythm Readiness · Strain Live UI · Brief NOT IN THE PICTURE No server · No account · No cloud sync · No telemetry
A heartbeat detected by the HW9 band, worn on the chest, upper arm, or forearm, travels as bpm + RR-interval values over a short-range BLE link directly to your phone, where it is logged locally and fed through an on-device compute pipeline. No server, cloud sync or telemetry is involved, and the scores come from closed-form formulas rather than a trained model.

VALIDATION · 14 ALGORITHMS · 92 TEST CASES · RUN 2026-09-28

Each closed-form algorithm in Heart gives the same output as a numpy reference implementation of the same formula, to within 1.42 × 10⁻¹⁴, which is floating-point rounding.

The check is a test in the app's repository (test/algorithm_validation_test.dart); the source isn't public. The formulas come from Tanaka 2001, Uth 2004, Keytel 2005, Holt 1957, ESC/NASPE 1996, Banister 1975 and Coyle 1998.

open this for the formulas
HRV RMSSD · ESC/NASPE Task Force · Eur. Heart J. 17:354 · 1996
HRmax Age-predicted max · Tanaka et al. · Med. Sci. Sports Exerc. 32:1591 · 2001
HR zones 5-zone partition · HRmax × [0.60, 0.70, 0.80, 0.90]
VO2max Heart-rate ratio method · Uth et al. · Eur. J. Appl. Physiol. 91:111 · 2004
Calories HR + age + weight + sex · Keytel et al. · J. Sports Sci. 23:289 · 2005
Distance Haversine great-circle · spherical-earth approximation
Cardiac drift Early-third vs late-third HR · Coyle framework · 1998
Strain TRIMP zone-weighted load · Banister & Calvert · 1975
Sleep stages Rule-based 5-min HR-bucket classifier · 4 stages
Sleep priors Bayesian post-hoc correction · Sleep-EDF · Kemp et al. 2000
Recovery Composite · HRV percentile vs your 30-day baseline
Readiness Holt linear exponential smoothing · Holt · ONR memo 52 · 1957
Rhythm hint 4-feature thresholding · pNN50 + CoV(RR) + RMSSD + RR range
Storage SharedPreferences + JSONL · app sandbox · backups in Download/Heart
Network OpenStreetMap tiles · update check (pointbreaklab.com, ≤ every 12 h) · opt-in: Google Drive backup, Wi-Fi phone sync
Server None

The validation above only checks that the maths is implemented correctly. It says nothing about end-to-end accuracy: sleep staging vs PSG and calories vs calorimetry haven't been independently measured yet.

06 FAQ

Straps, iPhone, your data, installing

Do I need the Coospo HW9?

No. I built Heart around the Coospo HW9, which you can wear on the chest, upper arm or forearm, but any strap that sends the standard Bluetooth Heart Rate Service works, such as the Polar H9 and H10, Garmin HRM-Dual or Wahoo TICKR. A user has confirmed the Polar H9.

Is there an iPhone version?

No. Heart runs on Android 7.0 or newer only.

Does any of my data leave my phone?

Only what you choose to send. Every score is computed on the phone, and Heart has no account, server or telemetry. The app fetches OpenStreetMap map tiles and checks pointbreaklab.com for a new version at most every 12 hours (a small version file; nothing about you is sent, and you can switch it off). Google Drive backup and phone-to-phone sync over Wi-Fi only run if you turn them on.

What happens to my data if I uninstall or change phones?

Heart writes its backups to Download/Heart on the phone, and that folder is kept when you uninstall. After a reinstall, point Heart at that folder, or at a backup file you copied off the phone, and your history comes back. Nothing newer than the last backup comes back, so leave the automatic backups on. To update, install the new APK over the old one; your data is kept.

Do I need an account?

No. Accept the wellness disclaimer, pair your band, and it starts recording.

Is Heart a medical device?

No. Heart shows wellness estimates from a consumer-grade heart-rate band. They are not medical advice or a diagnosis. Irregular-rhythm hints in particular only mean something looked unusual; talk to a qualified healthcare professional about anything that worries you.

Why does Android warn me when I install it?

Heart is installed from an APK file rather than an app store, so Android asks you to confirm the source the first time. The install steps above cover the prompts people have run into, including Samsung Auto Blocker and Play Protect. See the install steps →

Download Heart for Android

Heart shows wellness estimates from a consumer-grade heart-rate band. They are not medical advice or a diagnosis. Heart is a wellness application, not a medical device; consult a qualified healthcare professional for medical questions. Privacy policy