Best SpO2 and pulse oximetry datasets (and skin tone fairness)
Most public PPG datasets do not contain what SpO2 research needs: raw red and infrared channels paired with an arterial blood gas (SaO2) reference and recorded skin tone. OpenOximetry on PhysioNet was created specifically to study oximeter accuracy, including skin colour. The Pulse Transit Time PPG dataset provides raw red, infrared and green PPG at two finger sites with spot SpO2. BIDMC gives 125 Hz ICU PPG with monitor SpO2 at 1 Hz, which is a device reading, not a blood-gas reference.

Top picks and when to use each
A repository of clinical and lab pulse oximetry data built to study how physiology and device factors, including skin colour, affect oximeter accuracy.
Access: PhysioNetOriginal hostTwo MAX30101 finger sensors recording red, infrared and green PPG, plus ECG, IMU and attachment pressure. SpO2 from an iHealth pulse oximeter at the start and end of each activity. Signals are unfiltered.
Access: Open (ODbL 1.0)Original host- #3BIDMC PPG and Respiration (Pimentel 2016 / PhysioNet)Best for: ICU PPG with monitor SpO2, HR and RR
53 eight-minute recordings from BIDMC ICU patients: PPG, impedance respiration and ECG at 125 Hz, and HR, RR and SpO2 at 1 Hz, with manual breath annotations from two annotators.
Access: Open (ODC-By 1.0)Original host Phone-oximeter pleth at 62.5 Hz and SpO2 at 1 Hz for 146 subjects, with AHI values.
Access: Open (CC BY 4.0)Original host32 surgical cases with multi-parameter monitoring.
Access: Open (CC BY-NC 3.0, non-commercial)Original host
Comparison table
12 datasets. Swipe sideways on mobile. Values come from each dataset record; open a dataset for sources. Popularity is cached at build time: OpenAlex citations of the source paper (or the dataset DOI when no paper is linked), results on ChatPPG leaderboards, and GitHub stars or Zenodo / Hugging Face downloads where the host reports them. Hover for the source; a dash means unknown.
| Signals | Sampling | Ground truth | Licence | Access | |||
|---|---|---|---|---|---|---|---|
| OpenOximetry Repository (PhysioNet Restricted) | — | PPG, ECG, SPO2, ABP, etco2 | high-frequency; exact Hz in data diction… | SPO2 | See host | PhysioNet | — |
| Pulse Transit Time PPG | 22 | PPG, ECG, accel, gyro | 1000 Hz, 500 Hz, 80 Hz | SPO2, cuff BP, activity, SQI | ODbL 1.0 | Open (ODbL 1.0) | 25 cited |
| BIDMC PPG and Respiration (Pimentel 2016 / PhysioNet) | 53 | PPG, ECG, resp, SPO2 | 125 Hz, 1 Hz | SPO2, HR, resp rate | ODC-By 1.0 | Open (ODC-By 1.0) | 387 cited |
| SDB | 146 | PPG, SPO2 | 62.5 Hz | SPO2 | CC BY 4.0 | Open (CC BY 4.0) | 5 cited |
| UQVitalSigns | 32 | PPG, ECG, resp, SPO2, co2 | 100 Hz | SPO2 | CC BY-NC 3.0 | Open (CC BY-NC 3.0, non-commercial) | 151 cited |
| DOSE-I | 171 | PPG, ECG, EEG, resp, SPO2 | 250 Hz, 500 Hz, 125 Hz | cuff BP, SPO2, HR, resp rate | See host | See host | 0 cited821 downloads |
| HealthRing RingDatasetV2.1 | 54 | PPG, accel, ECG, resp | 100 Hz, 128 Hz | cuff BP, HR, resp rate, SPO2 | See host | See host | 0 cited47 stars288 downloads |
| MIMIC-III-Ext-CA | 31 | PPG, ECG | Annotations only; waveforms from MIMIC-I… | SPO2, AFIB | See host | See host | 0 cited |
| MIMIC3-AF-Bashar | 70 | PPG, ECG, resp, ABP | — | SPO2, AFIB, activity | CC BY 4.0 | See host | 5 cited |
| MW-PPG-HR | 20 | PPG, ECG, accel | 100Hz, 200Hz | HR, vascular age, ECG | See host | See host | 0 cited0 stars |
| Respiratory and Pulse Oximetry Waveforms from Healthy Adults During Simulated Apnoea Events | — | PPG, resp | — | SPO2 | See host | See host | 0 cited |
| WF-PPG | 27 | PPG, ECG, SPO2, contact pressure | 100 Hz, 128 Hz, 80 Hz | cuff BP, HR, SPO2 | CC BY 4.0 | See host | 23 cited12 stars |
Preprocessing pitfalls
- A monitor SpO2 value is not ground truth. Pulse oximeters themselves carry the skin-tone bias you may be trying to measure; use arterial SaO2 when the question is accuracy.
- Many datasets release only a single green or infrared channel. Ratio-of-ratios SpO2 needs both red and infrared from the same site.
- Skin tone is rarely recorded, and self-reported race is not a measure of skin pigmentation. Check whether a dataset reports an objective measure before using it for fairness claims.
- Healthy volunteers rarely desaturate. Without hypoxia (controlled desaturation or patients), you cannot evaluate the low-SpO2 range where bias matters most.
FAQ
Is there a public dataset for pulse oximeter skin tone bias?
OpenOximetry on PhysioNet was built for this: it collects clinical and lab pulse oximetry data to study how physiology and device factors, including skin colour, affect oximeter accuracy.
Which datasets have raw red and infrared PPG?
The Pulse Transit Time PPG dataset records red, infrared and green PPG at two finger sites with MAX30101 sensors. Most consumer-wearable datasets release only processed or green-channel PPG.
Does BIDMC contain SpO2?
Yes. BIDMC includes SpO2, heart rate and respiratory rate from the bedside monitor at 1 Hz alongside 125 Hz PPG, ECG and impedance respiration, for 53 eight-minute recordings.
