Javascript Heartrate Monitor

Usage Instructions:

  1. Place your finger directly over your device's webcam. Make sure your arm is stable (set it on a surface to prevent shaking), and make sure the live feed on the left shows a medium-dark red rectangle. If the live feed looks too dark, your ambient light might not be bright enough.
  2. Refresh the page, and wait for either the "Predicted" box to stop saying NaN or the graph at the bottom to stabilize.
  3. Your heartrate should display below!

Calibrating...

How it works:

This website relies on the fact that deoxygenated blood lets through less light than oxygenated blood. By putting your finger over your device's camera, the only light you let through is what ambient light gets through your blood. By tracking the brightness of the display and running an FFT on the resulting array, we can look for peaks and convert back to get the frequency that has the highest amplitude. Since the only thing that varies is the heartrate, the highest peak of the FFT should reflect the heartrate.

For more like this:

Visit my personal site!

DISCLAIMER: I AM NOT A DOCTOR, I AM NOT INTENDING THIS TO BE MEDICAL ADVICE, I MAKE NO CLAIMS OF THE ACCURACY OF THIS WEBSITE'S FUNCTIONALITY. FURTHER, I HAVE NO MONEY TO SUE FOR, SO YOU REALLY SHOULDN'T.