Pulse, from color
Blood under the skin absorbs light. With each heartbeat the skin's color shifts very slightly, and the camera sees it.
Guided check-ins on their phone, with
contactless vital signs as they answer.

Participant check-in on a phone, with the matching answer and vital signs shown in the browser dashboard. The visual includes a heart rate of 72 bpm and upper and lower breathing rates of 15 per minute.
Questions, guided breathing and vital signs, together on their phone.
See how it worksFor researchers and teams that collect data
Build a program with questions, guided breathing activities and camera readings, and run it on participants' own phones.
How it works
Every heartbeat and breath makes tiny changes in the face and chest. Presage reads them from ordinary video.
Each heartbeat changes how much light your skin reflects. The camera picks up those tiny color shifts across your face to find your pulse, a method called remote photoplethysmography (rPPG).
Each breath moves your chest and shoulders. The camera follows that rise and fall, frame by frame, in the same video to measure your breathing rate.
Phone, laptop or webcam, with nothing to wear. Sit still with your face and chest in view, and every reading comes with a confidence score for how clean its signal was.
Drag to compare. Changes are drawn much larger than they really are.
How it works
Far too little for you to see. A camera can measure it.
Tested on all six skin types. Breathing comes from the rise and fall of the upper body.
How it works
Pulse comes from tiny color changes in the face. Breathing comes from the movement of the upper body.
Pulsefrom color in the face
72bpmBreathingfrom movement of the upper body
15/minHow it works
No contact and no special hardware. Just light and movement.
Blood under the skin absorbs light. With each heartbeat the skin's color shifts very slightly, and the camera sees it.
With each breath the chest and belly move out and back. The camera follows that movement, frame by frame.
Two ways to use Presage
Run a program with eSSESSMENT. Or build camera sensing into your app with the SmartSpectra SDK.
Run your protocols on any phone
Add camera sensing to your tech
// File > Add Package Dependencies: SmartSpectra23import SwiftUI4import SmartSpectra56let sdk = SmartSpectraSDK.shared7sdk.config.apiKey = "YOUR_API_KEY"8sdk.config.cameraPosition = .front9sdk.config.requestedMetrics =10 SmartSpectraConfig.breathingMetrics +11 SmartSpectraConfig.cardioMetrics12try await sdk.start()// app/build.gradle.kts2implementation("com.presagetech:smartspectra:3.4.0")34import com.presagetech.smartspectra.SmartSpectraSdk56val sdk = SmartSpectraSdk.shared7sdk.config.apiKey = "YOUR_API_KEY"8sdk.useCamera(CameraSelection.Front)9sdk.config.requestedMetrics =10 SmartSpectraConfig.breathingMetrics +11 SmartSpectraConfig.cardioMetrics12lifecycleScope.launch { sdk.start() }// find_package(SmartSpectra CONFIG REQUIRED)2#include <smartspectra/smartspectra.h>3namespace spectra = presage::smartspectra;45spectra::SmartSpectraConfig config;6config.api_key = "YOUR_API_KEY";7config.requested_metrics =8 spectra::SmartSpectraConfig::BreathingMetrics();9config.AddMetrics(spectra::SmartSpectraConfig::CardioMetrics());10spectra::SmartSpectra sdk(config);11sdk.UseCamera(spectra::CameraSelection::Default()).Build();12sdk.Start();// npm install @smartspectra/node-sdk2import { SmartSpectraSDK, CameraSelection,3 breathingMetrics, cardioMetrics, decodeMetrics }4 from '@smartspectra/node-sdk';56const sdk = new SmartSpectraSDK({7 apiKey: 'YOUR_API_KEY',8 requestedMetrics: [...breathingMetrics, ...cardioMetrics],9});10sdk.on('metrics', (buf) => console.log(decodeMetrics(buf)));11sdk.useCamera(CameraSelection.default);12sdk.start();Clinical validation
Explore FDA clearance, model performance and testing across all six Fitzpatrick skin types.
| Measurement | Clinical result |
|---|---|
| Pulse ratevs. ECG | 1.73 BPM RMSEAndroid 1.77 BPM RMSEiPhone |
| Respiratory ratevs. reference devices | 0.03 BrPM mean bias95% limits of agreement −2.17 to +2.23 |
SmartSpectra Vital Signs Monitor 1.0 received FDA 510(k) clearance (K254169) for contactless measurement of pulse rate and respiratory rate.
View FDA clearanceModel cards
Arterial pressure waveform and pulse rate
0.64 BPM RMSE
Presage vitals by video analysis generates a relative arterial pressure waveform and pulse rate from a video of a subject.
at 80% Return Rate, Confidence >= 97
Model cardBreathing
0.67 BrPM RMSE
Presage vitals by video analysis generates breathing rate metrics from a video of a subject.
at 80% Return Rate, Confidence >= 79
Model cardHRV
13.83 ms RMSSD RMSE
Presage vitals by video analysis generates heart rate variability metrics (RMSSD, SDNN, Baevsky Stress Index) from a video of a subject.
at 80% Return Rate, Confidence >= 79
Model cardRelative arterial pressure waveform
0.681 Waveform Pearson r
Waveform of relative arterial pressure (amplitude in arbitrary units vs. time). Represents waveform shape only (e.g., heartbeat timing, shape and relative changes). Not a blood pressure measurement and cannot be used to estimate systolic or diastolic pressure.
Confidence >= 0, Return Rate (%): 100.0
Model cardUpper and lower breathing waveforms
0.794 Upper Waveform Pearson r
Upper chest and lower abdominal breathing waveforms (amplitude in arbitrary units vs. time) with confidence.
Confidence >= 0, Return Rate (%): 100.0
Model cardFace analysis
478 facial landmark coordinates
Facial expression classification with probabilities across anger, contempt, disgust, fear, happiness, sadness, surprise, and neutral.
Does not work when: Face is significantly rotated and not approximately orthogonal to the camera.
Face landmark numbering referenceEach model card explains the testing conditions: the people tested, the reference instruments and the error against them.
See all model cardsFitzpatrick skin types
Subjects in each model card
I
II
III
IV
V
VIEvery model card includes subjects from all six Fitzpatrick skin types.
Add contactless health monitoring to your product with SmartSpectra. One SDK uses standard cameras to measure heart and breathing rates, capture physiological waveforms and analyze facial expressions, with no wearables or specialized hardware needed.
Heart rate
Pulse waveform
Heart rate variability (HRV)
Blood pressure changes (uncalibrated)
Respiratory rate
Micro-expressions & facial action units
Lip & speech activity
Blink rate & eye tracking
Vital signs & breathingFacial expressions & speech
See contactless vitals in action
See how Presage turns ordinary video into vital signs, from guided check-ins with eSSESSMENT to contactless measurements in your own app with the SmartSpectra SDK.
Both start free. After that, eSSESSMENT is $10 per additional active participant per month, and the SDK is priced for your volume.
Labs, coaches and research teams running studies and check-ins.
Free to startthen $10 per participant per month
No credit card needed to start. Active participant is defined as anyone who completes an activity that month, your team included.
Start freeApp and product teams adding contactless vitals to their platform.
Free trialthen priced for your volume
SmartSpectra Vital Signs Monitor 1.0 is FDA 510(k) cleared (K254169) for contactless measurement of pulse rate and respiratory rate. All other Presage products, including the SmartSpectra SDK, eSSESSMENT and Coherence, are for general wellness and research use.
eSSESSMENT runs your protocol on participants' own phones. Build it as a program of questions, guided breathing activities and optional camera readings of pulse rate, breathing rate and more. Participants run it in a few minutes in the free Coherence app, with no wearable devices to put on or charge, and your team can review every completed session. See eSSESSMENT.
SmartSpectra is a contactless sensing SDK that turns any camera into a real-time biometric sensor. It tracks facial and chest movements to extract anonymized health metrics including pulse rate, breathing rate, HRV, and more, all without wearables or physical contact.
Heart rate and respiratory rate, heart rate variability, blood pressure changes (uncalibrated) and the pulse waveform, plus micro-expressions and facial action units, lip and speech activity, and blink rate and eye tracking. Read how a phone camera measures heart rate.
Pulse rate is within ±0.36 beats per minute and breathing rate within ±0.37 breaths per minute on average (mean absolute error at an 80% return rate, from our model cards). Accuracy depends on lighting and motion. Each heart and breathing reading comes with a confidence score for signal quality.
iOS (Swift), Android (Kotlin), C++ on Linux, macOS and Windows, and Node.js with TypeScript. Install with your package manager, and find samples on GitHub.
Yes. The free trial requires no credit card and includes every piece of the platform: all SDK features, LLM insights, storage and reference data, plus community support on Discord. eSSESSMENT is free for your first 3 active participants each month, then $10 per additional active participant per month. For production apps, contact team@presagetech.com.
No developer? No problem. We can host your activities for your users in the Coherence app, with no coding required. See eSSESSMENT, or contact team@presagetech.com.
Still have questions? Email support@presagetech.com
Updates, new features and releases for developers, straight to your inbox.
No spam. Unsubscribe anytime.
Building something? team@presagetech.com
Guided check-ins on their phone, with contactless vital signs as they answer.
Collect data in the Coherence app in minutes.
Free for up to 3 active people a month. No card needed to start.
A demo of eSSESSMENT. Participant 014 answers a study check-in in the Coherence app on their phone. Each answer flies to the live view in eSSESSMENT, where it lands on the timeline next to their heart rate and breathing, with their camera and their earlier sessions beside it.
Stress3 of 10
Focus8 of 10
Energy7 of 10
Sleep7 hours
Heart rate74 bpm
Breathing15 /min
HRV58 ms
Talking
Blinking
Participant 003Study visit, replayed in Playback