The Vitals SDK proves your app works on the body, not just surveys. A 60-second finger scan measures HRV (RMSSD), heart rate and more. No wearables needed, and you own the IP.
The same engine that powers NEUROFIT's Vitals feature, optimized for your app. Your user covers the rear camera and flash with a fingertip for 60 seconds, and the SDK returns the metrics and a quality tier.
Prove Real-World Outcomes
Show your app changes the body, not just how people feel, with readings validated against a chest strap.
Own Your Outcomes IP
Your users' outcome data belongs to you, not a vendor. Publish it, share it, build on it.
Runs Entirely On-Device
Readings are processed on the phone with deterministic signal processing, not machine learning. No images are stored or sent.
Fixed Cost As You Scale
No per-scan or per-user fees. Measure your whole user base for the same price.
Built For Performance
The core SDK adds under 1 MB to your app download. Native Swift and Kotlin, running on about 99% of iPhones and 97% of Android phones (Statcounter, Aug 2026). Live guidance during each reading, and unreliable results are withheld.
Comprehensive Metrics
One 60-second reading produces heart rate, HRV (RMSSD), SDNN, Baevsky stress index and Poincaré SD2:SD1, plus breathing rate when the signal allows. (VO2max and heart rate recovery in development)
Go Live In Days
Use our drop-in reading screens, from placement tips to results, on iOS, Android, React Native and Flutter. Set the colors, font and wording to match your app.
Build Your Own UI
Or white-label the SDK and design every screen yourself. It still runs the camera and the reading, and sends your screens live guidance and results.
Validated Against A Chest Strap
HRV (RMSSD) measurements were within 3.4 ms of a Polar H10 chest strap on average, across 30 people and 265 accepted readings. Readings the SDK flagged as unreliable were withheld rather than shown.
Metric
Mean abs. error
r
95% limits of agreement
Notes
Heart rate
0.46 bpm
0.999
−1.4 to +0.9 bpm
90% of readings within 1 bpm
RMSSD
3.39 ms
0.979
−9.1 to +9.8 ms
94.7% within 10 ms, none off by 20 ms+
SDNN
4.13 ms
0.984
−9.8 to +12.0 ms
Baevsky stress index (ln)
0.18
0.970
−0.51 to +0.42
76% of readings within ±25% of the strap value
Poincaré SD2:SD1
0.28
0.908
−0.81 to +0.77
Error tracks RMSSD error
Breathing rate (paced, 6 breaths/min)
0.46 breaths/min
n/a
n/a
89% within 1 breath/min, camera-based
Left: camera vs. strap HRV (RMSSD) for every accepted reading. Right: Bland-Altman plot with 95% limits of agreement, dotted lines at ±20 ms.
Consistent Across Skin Tones, Genders And Ages
No group had a reading off by 20 ms or more. Groups with one or two people describe those individuals, not the whole group.
Group
Participants
Readings
RMSSD error (ms)
Within 10 ms
Platform
iOS
21
178
2.81
97%
Android
9
87
4.58
91%
Condition
Resting
30
134
2.98
96%
Paced breathing
30
131
3.80
93%
Monk skin tone
Monk 2
4
33
2.16
97%
Monk 3
3
28
1.48
100%
Monk 4
5
46
4.14
91%
Monk 5
9
79
2.97
96%
Monk 6
6
53
5.13
91%
Monk 8
3
26
3.39
96%
Gender
Female
12
105
3.50
95%
Male
18
160
3.32
94%
Age range
18–24
1
8
2.00
100%
25–34
21
181
3.66
94%
35–44
5
47
3.37
91%
45–54
1
10
1.01
100%
55–64
2
19
2.70
100%
Detects Change Within The Same Person
Each participant took seated readings at rest and during a one-minute slow-breathing exercise at 6 breaths per minute, and we compared each person with themselves.
Metric
At rest
Slow breathing
Change
Participants
Strap change
HRV (RMSSD)
36.8 ms
54.5 ms
+17.8 ms
27 of 28 higher
+17.5 ms
SDNN
47.7 ms
84.8 ms
+37.0 ms
27 of 28 higher
+34.9 ms
Baevsky stress index (ln)
5.10
4.18
−0.92
28 of 28 lower
−0.84
Poincaré SD2:SD1
2.70
3.23
+0.53
22 of 28 higher
+0.42
Heart rate
74.6 bpm
74.7 bpm
+0.2 bpm
14 higher, 14 lower
+0.4 bpm
Averages of each participant's mean, from the SDK and from the Polar H10 strap on the same accepted readings, for the 28 participants with at least two accepted readings in each condition. We expected HRV (RMSSD) and SDNN to rise and the stress index to fall. The SDK and strap changes correlate at r 0.96 for HRV (RMSSD), 0.98 for SDNN, 0.91 for the stress index, 0.93 for SD2:SD1 and 0.99 for heart rate.
Each thin line is one participant (teal iOS, amber Android); the thick line is the average.
The SDK picked up the expected shift: HRV (RMSSD) rose in 27 of 28 participants, by about 18 ms on average, and the stress index fell in all 28, closely matching the chest strap. These are short-term changes, measured seated during the exercise itself in sessions that began with the resting readings, so they don't show lasting effects.
License It Forever
Tell us about your app and the outcomes you want to prove, and we'll walk you through licensing and integration.
Binary License
A perpetual license to the compiled iOS and Android SDK, with annual maintenance. The fastest way to ship.
Source License
Own the engine itself. Audit it, extend it and build it into your own stack.
Proprietary Approach · Tuned On NEUROFIT Data · Clean Dependencies
30 volunteers took ten 60-second readings each, half at rest and half breathing at 6 breaths per minute, while wearing a Polar H10 chest strap.
Reference
The strap's beat-to-beat timing. 3 readings with frequent irregular heartbeats were excluded.
What we don't claim yet
Accuracy for Monk skin tones 7, 9 and 10, or during movement. Breathing rate outside paced breathing is an estimate, pending further validation. Most participants were 25–34, and the two investigators are excluded from every figure.
RMSSD is the HRV number WHOOP, Oura, Polar and Fitbit report, and the hardest one to measure with a camera. It's built from tiny beat-to-beat changes, so any error in timing a beat adds straight to it and makes HRV read high.
That's a physics problem for face scans. On a face, the pulse is a faint color change in reflected room light, easily swamped by shifts in lighting and small head movements. A fingertip pressed over the flash is lit by a bright, steady light right against the skin, giving a pulse about 6× larger, or over 30× the signal power. Our average HRV (RMSSD) error is 3.4 ms, while the best face-video result in a 2023 benchmark was 10.5 ms, with seated, still participants.
Facial pulse: Wang et al., Biomedical Optics Express, 2017 (15 participants, medians read from their Figure 2a), compared with our 30 study participants using the same method. Face-video RMSSD: Bioengineering, 2023 (UBFC-rPPG dataset). Different studies, cameras and references, so not a head-to-head comparison.
Frequently Asked Questions
Interim results, updated as the validation study grows. The NEUROFIT Vitals SDK is not a medical device and does not diagnose, treat or prevent any condition.
NEUROFIT®, Nervous System Fitness® and Coach Copilot® are registered trademarks of Xama Technologies, Inc. in the United States and other jurisdictions.
The NEUROFIT products, programs and services are intended solely to help users maintain a state of wellness and encourage a healthy lifestyle. NEUROFIT products, programs and services are neither designed nor intended for use in the diagnosis, cure, management, mitigation, prevention, or treatment of any disease or medical condition.
As always, we highly recommend that speak with your trusted healthcare professional before making any health-related decisions or using any health-related products or services.