-
-
An ordinary webcam becomes a private, contactless wellness instrument.
-
Live heart rate, HRV uncertainty, coherence, and respiration—with unsupported values withheld.
-
Paced breathing connects an intervention directly to the measured physiological response.
-
Paced breathing connects an intervention directly to the measured physiological response.
-
It does not ask how you are. It measures.
Most wellness applications begin with a question: “How do you feel?”
That sounds reasonable, but stress often makes it harder to accurately recognize and describe what is happening inside your body. The people who most need an objective signal may be the least able to provide a reliable self-assessment in that moment.
Meanwhile, every heartbeat is already producing a tiny physical signal that an ordinary camera can observe. As blood enters the capillaries beneath the skin, it changes how light is absorbed and reflected by the face. The change is only a few parts per thousand, but with careful signal processing it can reveal heart rate and beat-to-beat variation.
We built Sixth to recover that signal without a wearable, account, or video upload—and to be honest about what the camera can and cannot measure.
What Sixth does
Sixth is a browser-based wellness instrument that uses a webcam to estimate:
- Heart rate
- Heart-rate variability through RMSSD
- Cardiac coherence
- Respiration rate
- Signal quality and measurement uncertainty
The user faces the camera while Sixth tracks carefully selected regions of the forehead and upper cheeks. The application extracts the subtle color changes caused by blood flow and processes them entirely inside the browser.
Sixth also includes a guided paced-breathing session:
- Measure a baseline.
- Guide the user through slow breathing with a visual breathing ring.
- Measure the user again.
- Compare the result against the instrument’s minimum detectable change.
The final result is not automatically positive. If an observed difference is smaller than the measurement uncertainty, Sixth says:
Something may have happened. We cannot tell, so we will not claim it did.
That refusal is one of the project’s most important features.
Why it is different
Many camera-based wellness demos always display a number. A signal-processing pipeline will always find a spectral peak somewhere—even when the camera is observing noise, lighting flicker, or a static surface.
Sixth treats uncertainty as part of the product rather than an implementation detail.
Every HRV result includes:
- A predicted measurement-noise floor
- An uncertainty interval
- A minimum detectable change
- A quality decision that can withhold the result completely
The corrected HRV estimate is derived by separating the predicted measurement floor from the observed value:
$$ RMSSD_{corrected} = \sqrt{\max(RMSSD_{observed}^2 - RMSSD_{floor}^2,\ 0)} $$
If the observed value does not exceed its own floor, Sixth displays no HRV number.
An instrument that always reports improvement is not measuring anything.
The challenge that changed the project
During development, we tested the engine against a synthetic signal with perfectly constant beat intervals. Its true RMSSD was exactly zero.
The first implementation reported approximately 70 milliseconds.
That is not a small error. A typical adult resting RMSSD can fall between roughly 20 and 80 milliseconds, meaning the pipeline had manufactured an entire physiological signal from camera timing noise.
Instead of hiding that result, we made it the central engineering problem.
We replaced three-sample peak interpolation with beat-template alignment. Each detected pulse is aligned against an averaged pulse shape using cross-correlation, allowing the timing estimate to use the whole waveform rather than a few noisy samples.
We then tested several predictors for the remaining measurement floor.
Spectral signal-to-noise ratio produced a strong statistical fit, but we rejected it. Real HRV frequency-modulates the cardiac signal, spreading energy into respiratory sidebands and lowering spectral SNR. An uncertainty model based on SNR would therefore become less confident when genuine variability increased.
Beat-template consistency provided a similarly strong fit without responding to genuine respiratory sinus arrhythmia, so it became the basis of Sixth’s uncertainty model.
That experience taught us that the best-fitting model is not always the scientifically correct model.
How we built it
The interface is built with Next.js, React, TypeScript, Tailwind CSS, and HTML Canvas.
MediaPipe’s face-landmark model identifies the forehead and upper-cheek regions. Pixels are sampled locally, filtered for plausible skin chromaticity, and reduced to mean RGB traces.
The measurement engine then:
- Resamples irregular browser frames onto a uniform time grid.
- Evaluates POS, CHROM, and green-channel rPPG extraction methods.
- Selects the method producing the strongest usable cardiac signal.
- Applies zero-phase cardiac-band filtering.
- Detects candidate beats.
- Aligns beats against an averaged pulse template.
- Rejects implausible intervals.
- Calculates heart rate, RMSSD, coherence, and frequency-domain metrics.
- Estimates the measurement floor and decides whether each result is trustworthy.
The engine is a separate TypeScript package with zero runtime dependencies and no browser or DOM assumptions. The same implementation runs in the browser worker and in the ground-truth test suite.
Computationally expensive analysis runs in a Web Worker so the interface and breathing visualization remain responsive.
Privacy as a technical property
Sixth processes camera frames locally. No video, image, or measurement is uploaded.
We wanted that claim to be verifiable rather than dependent on a privacy-policy promise. The application is served with a Content Security Policy containing:
connect-src 'self'
This prevents the page from opening connections to third-party origins. The MediaPipe model, WebAssembly runtime, and fonts are all self-hosted.
A judge can verify the privacy claim directly from the browser’s Network panel and response headers.
Testing and technical execution
The engine has 57 ground-truth tests covering:
- Heart rates from 48 to 140 BPM
- Noisy and irregular frame delivery
- Filter behavior and stopband rejection
- FFT correctness
- Peak detection and beat alignment
- HRV uncertainty calibration
- Static surfaces and broadband noise
- Motion and tracking loss
- Synthetic signals with known variability
- Signals that must produce no result
The interface is also driven through a real Chrome browser against a deterministic synthetic subject. The verification checks that canvases paint, measurements appear, the complete breathing session reaches a verdict, mobile layouts do not overflow, and no browser errors occur.
Accessibility and inclusion
Sixth requires no specialized wearable, account, subscription, or data upload. It runs on hardware many people already own.
The interface uses clear status messages instead of silently failing. It explains whether the problem is movement, lighting, tracking, insufficient beats, or low signal quality.
Synthetic mode allows the complete experience to be demonstrated without camera permission and is permanently labeled so it cannot be mistaken for a real measurement.
What we learned
We began by trying to recover a pulse from a webcam.
We finished by learning that measurement is not primarily about producing numbers. It is about understanding when those numbers deserve to be believed.
We learned to reject a statistically attractive model when it contradicted the physiology, to treat negative tests as seriously as successful readings, and to make uncertainty understandable rather than hiding it behind a confidence score.
What comes next
Sixth is an experimental wellness instrument, not a medical device. It cannot diagnose conditions or inform medical decisions.
Validation currently uses synthetic signals with known ground truth. The next major step is comparison against synchronized contact PPG using public rPPG datasets such as UBFC-rPPG and PURE.
We also want to improve mobile-camera performance, expand device compatibility, evaluate accuracy across different complexions and lighting conditions, and study whether personalized breathing rates produce more consistent coherence responses.
Our long-term goal is simple: make objective wellness measurement more accessible without sacrificing privacy or scientific honesty.
Built With
- content
- digital-signal-processing
- hrv
- html5
- mediapipe
- next.js
- policy
- puppeteer
- react
- rppg
- security
- tailwind-css
- typescript
- vercel
- vitest
- web-workers
- webassembly
Log in or sign up for Devpost to join the conversation.