The short version
Heart rate: good enough for training. The Fitbit sat within 5 bpm of the Polar H10 for 94% of the run and never missed by more than 9 bpm, with essentially no systematic offset.
Heart-rate variability: not measurable at all. Over Bluetooth the Fitbit broadcasts a rounded BPM number and nothing else. It never sends a single beat-to-beat interval, so there is no HRV in its stream for any app to read — and the 6.9 ms figure above is what integer rounding looks like when you run RMSSD over it.
Heart rate: closer than expected
Here is the whole run. Both traces are each device's own reported BPM, time-aligned by the measured 2.25-second offset so they can be compared fairly rather than penalising the Fitbit twice for its lag.
The shapes match. Both sensors saw the same rises and falls, and the Fitbit's errors were symmetric rather than one-sided — a bias of just −0.69 bpm over three minutes is a well-behaved sensor.
One caveat worth stating plainly: the correlation between the two traces was r = 0.78, which is moderate rather than excellent. At rest the heart-rate swings are small, so a couple of bpm of noise eats a lot of correlation. The absolute error figures are the more meaningful read here.
The 2.25-second lag
The analysis recovers the offset between the two streams by cross-correlation, and it found the Fitbit running 2.25 seconds behind the H10, with an alignment confidence of r = 0.81.
This is not a fault so much as a design choice. An optical sensor reads blood volume through skin — a much noisier signal than a strap's electrical one — so it applies heavy temporal smoothing to produce a stable number. The lag is that smoothing, made visible. You can see its other fingerprint in the chart: the Fitbit's range is 78–93 bpm where the H10's is 75–96. The peaks and troughs have been rounded off.
When 2.25 seconds matters. Interval training, where you want to see the response to an effort as it happens. Breathing biofeedback, where the whole point is watching heart rate follow the breath within a single cycle. When it doesn't: average heart rate over a run, daily trends, step counting, sleep staging.
HRV: 67.3 ms vs 6.9 ms
This is the part that isn't close, and the gap is not a matter of degree.
Over the run, the Polar H10 delivered 251 genuine beat-to-beat intervals, every one of them valid, with zero artefacts and zero dropouts. The Fitbit delivered 178 heart-rate notifications — roughly one per second, which is a broadcast cadence, not a heartbeat. It never sent an RR interval.
When a device only sends BPM, an interval can be reconstructed as
60000 / bpm. That reconstruction is a step function. At 84 bpm, one BPM of
rounding is about 8 ms of entirely fictional "variability", and every real beat-to-beat
fluctuation smaller than that was destroyed inside the device before transmission. So bench
mode refuses to compute RR or HRV agreement when either device fails this
test, and says why, rather than printing a plausible-looking number next to a real one.
The general rule. If a device does not broadcast RR intervals over Bluetooth, no third-party app reading it can give you real HRV — regardless of what that app's dashboard displays. This is a property of the data stream, not of the app.
Fitbit's own application does report an overnight HRV estimate, computed from internal data during sleep. That number is not exposed to other apps, and it is not what was measured here.
Which one should you use?
| What you want to do | Use | Why |
|---|---|---|
| HRV biofeedback / coherence breathing | Polar H10 | Needs true beat-to-beat intervals and near-zero lag. The wrist device supplies neither. |
| Morning readiness / RMSSD trend | Polar H10 | RMSSD from reconstructed intervals is not a measurement of anything. |
| Interval training, live pacing | Polar H10 | 2.25 s of lag on a 30 s interval is most of what you were watching for. |
| Steady-state zone training | Either | 94% of samples inside 5 bpm is comfortably within a zone's width. |
| All-day heart rate, sleep, steps | Fitbit | Nobody wears a chest strap for 24 hours. Continuous wear beats per-sample precision. |
| ECG waveform capture | Polar H10 | Streams raw single-lead ECG at 130 Hz. The wrist device has no equivalent. |
The honest summary is that these are not competing products. One is a measurement instrument you put on for a session; the other is a wearable you never take off. The mistake is using the second for the first job and believing the HRV number it shows you.
Method and limits
Both sensors were connected simultaneously over Web Bluetooth to a single browser tab and streamed onto one shared clock. The Polar H10 was slot A (reference), the Fitbit slot B (device under test). All errors are signed device under test − reference, and the reference is treated as correct by definition — this measures agreement, not truth.
Each device's reported BPM was resampled onto a common 4 Hz grid by zero-order hold, with gaps left empty rather than interpolated. The lag was recovered by normalised cross-correlation over a ±8 s search. Agreement statistics are standard Bland–Altman: bias, SD, and limits of agreement at bias ± 1.96 SD.
| Measure | Polar H10 | Fitbit |
|---|---|---|
| Beats / notifications received | 251 | 178 |
| Valid | 251 | 178 |
| Artefacts | 0 | 0 |
| Dropouts | 0 | 0 |
| Sends true RR intervals | yes | no |
| Mean HR (bpm) | 84.2 | 83.5 |
| HR range (bpm) | 75–96 | 78–93 |
| RMSSD (ms) | 67.27 | 6.90 |
| Duration | 180.0 s |
| Paired samples | 710 |
| Bias | −0.69 bpm |
| Mean absolute error | 1.92 bpm |
| RMSE | 2.69 bpm |
| Limits of agreement | −5.79 to +4.41 bpm |
| Correlation (r) | 0.783 |
| Largest single error | 9 bpm |
| Measured lag | 2250 ms |
| Alignment confidence | r = 0.805 |
| RR / HRV agreement | not computable |
What this run does not show
- n = 1. One device, one wrist, one person, one session. Optical accuracy varies enormously with skin tone, wrist size, strap tightness, temperature and tattoos.
- Rest only. Three minutes seated. Optical sensors degrade most under movement, and none of that is captured here.
- Moderate alignment confidence. At r = 0.81 the lag estimate is usable but not tight — a run with deliberate heart-rate swings would pin it down harder.
- Not a product review. This is a demonstration of a method plus one unambiguous structural result: the device does not transmit RR intervals. That part does not depend on sample size.
The way to settle it for your own hardware is to run the same test yourself — it takes about fifteen minutes. The full method is here, including how to read every number and the five mistakes that will invalidate your run.
FAQ
Is Fitbit heart rate accurate compared to a Polar H10?
In this three-minute resting run, reasonably: MAE 1.92 bpm, bias −0.69 bpm, 94% of samples within 5 bpm, and nothing worse than 9 bpm. That is a usable training signal. It was also 2.25 s behind the strap, so it reacts late to changes.
Can a Fitbit measure HRV like a Polar H10?
Not over Bluetooth. It broadcast only a rounded BPM value and never sent beat-to-beat intervals, so no third-party app can compute genuine HRV from its stream. The 6.9 ms RMSSD is a rounding artefact against the H10's 67.3 ms on the same body at the same time. Fitbit's own app does report an overnight HRV estimate from internal data — that figure is not exposed to other apps and is not what was measured here.
Why is the Fitbit 2.25 seconds behind the chest strap?
Optical wrist sensors read a noisy blood-volume signal and smooth it heavily to keep the output stable. The lag is that smoothing. It means the device can be accurate in steady state while arriving late at every change — which matters for intervals and biofeedback, and not at all for an average over a walk.
Which sensor should I use for HRV biofeedback?
A chest strap that transmits RR intervals — Polar H10, Wahoo TICKR, Garmin HRM. Beat-to-beat biofeedback needs beat-to-beat data and near-zero lag; an optical wrist device supplies neither.
Does this prove Fitbit devices are bad?
No. One device, one wrist, three minutes at rest, alignment confidence r = 0.81. It demonstrates a method and one structural fact about what the device transmits. Run the bench on your own body before drawing conclusions about your own hardware.
Can I see the raw data?
The chart above is drawn directly from the exported CSV — the same file Bench mode produces, containing the commented summary header and the full 4 Hz aligned series. Every figure quoted on this page comes from it.
Bench your own sensors
Connect a strap and a watch at the same time and see the disagreement for yourself. Runs in the browser, no account, nothing uploaded.
Open HRV Dojo Read the method