Privacy
This is a description of how the software behaves, which you can check against the source.
Your camera feed
Video frames are read into a canvas in your browser, reduced to three average colour values per frame, and discarded. Those three numbers are passed to a Web Worker running in the same tab. No image, frame or video is transmitted anywhere. There is no server component to receive one — the application is a set of static files, and all measurement happens in this tab.
The camera is released as soon as you stop the session or leave the page.
Your readings
If recording is enabled, one row per second is written to IndexedDB in this browser, holding the computed metrics and capture context such as frame rate and illumination. The most recent 50 sessions are kept and older ones are deleted automatically.
You can delete any session, or all of them, from the console. Deletion is immediate and permanent. Clearing your browser’s site data removes everything as well.
Your account
The console is invitation-only, and that is the one part of this application that does leave your device. Signing in with Google stores your email address and account identifier with Firebase Authentication, and an access record holding your email address, the invitation code you redeemed and when, in Cloud Firestore. Both are operated by Google.
That record exists to answer one question: whether this account has been invited. It is never joined to a measurement. Your readings are not uploaded, so nothing in the cloud can be linked back to a heart rate, a session or a recording.
The public pages need no account and store nothing about you.
Export
Exporting a session writes a CSV or JSON file to your downloads folder. Once exported, that file is outside this app’s control and is no longer covered by anything described here.
Preferences
Your theme and diagnostic-mode choices are stored in localStorage under keys prefixed rppg.v1.. Consent is deliberately not stored, so you are asked again on every visit.
Third parties
There is no analytics, no advertising, no tracking and no third-party network request at runtime. The face-detection model is served from this origin.
Screen sharing
A browser cannot hide part of a page from screen sharing or recording. If you share your screen while the console is open, your readings are visible to whoever is watching.