Best PPG datasets for heart rate estimation under motion
PPG-DaLiA is the standard benchmark for wrist heart rate under motion: 15 subjects wearing an Empatica E4 (BVP 64 Hz, accelerometer 32 Hz) and a chest RespiBAN ECG (700 Hz) through a wide range of daily-life activities. WESAD uses the same devices and is often added as a second test set. IEEE SPC 2015 (12 subjects, intense running) is short but still widely reported, and WildPPG adds full-day outdoor recordings at four body sites.

Top picks and when to use each
15 subjects, wrist PPG and accelerometer with chest-ECG HR ground truth, collected under close-to-real-life conditions. About 2.7 GB. The Deep PPG paper reports CNN MAE improvements of 31% on PPG-DaLiA over classical methods.
Access: Open (UCI lists CC BY 4.0; the original Siegen page says scientific, non-commercial use)Original host15 subjects in a lab stress study with E4 wrist BVP 64 Hz and RespiBAN chest ECG at 700 Hz.
Access: Open (scientific, non-commercial use with credit)Original host- #3IEEE Signal Processing Cup 2015 (TROIKA)Best for: Short, intense-exercise sessions; legacy comparisons
Two wrist green-LED PPG channels, accelerometer and ECG during running.
Access: Open (CC BY 4.0)Original host Four devices at head, sternum, wrist and ankle during a full-day outdoor trip (NeurIPS 2024 Datasets & Benchmarks).
Access: OpenOriginal host22 subjects with unfiltered multi-wavelength finger PPG, IMU and ECG with annotated R peaks.
Access: Open (ODbL 1.0)Original hostManchester Metropolitan University benchmark built to address cohort diversity and wavelength gaps.
Access: Open (Figshare)Original host
Comparison table
18 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 | |||
|---|---|---|---|---|---|---|---|
| PPG-DaLiA | 15 | PPG, ECG, accel, skin temp, resp | 64Hz, 32Hz, 700Hz | HR, activity | Scientific, non-commercial use with credit to the … | Open (UCI lists CC BY 4.0; the original Siegen page says scientific, non-commercial use) | 378 cited12 results |
| WESAD | 15 | PPG, ECG, accel, skin temp, EDA | 64Hz, 32Hz, 4Hz | stress, mwl | Scientific, non-commercial use with credit to the … | Open (scientific, non-commercial use with credit) | 1,337 cited12 results |
| IEEE Signal Processing Cup 2015 (TROIKA) | 12 | PPG, accel, ECG | 125 Hz | HR | CC BY 4.0 | Open (CC BY 4.0) | 3 cited2 results4,131 downloads |
| WildPPG | 16 | PPG, ECG, accel, skin temp, baro | 128Hz | HR, SQI, ECG | See host | Open | 1 result24 stars |
| 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 |
| MW-PPG-HR | 20 | PPG, ECG, accel | 100Hz, 200Hz | HR, vascular age, ECG | See host | Open (Figshare) | 0 cited0 stars |
| GalaxyPPG | 24 | PPG, ECG, accel, skin temp | 25Hz, 4Hz | HR, SQI, ECG | See host | See host | 1 cited10 stars1,025 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 |
| IMU50 | 50 | PPG, accel, gyro, skin temp | 25 Hz, 128 Hz, 32 Hz | activity, SQI | See host | See host | 0 cited162 downloads |
| Multi-site PPG (Earring / Necklace / Ring / Watch) | — | PPG, ECG, accel, skin temp | — | HR, activity, vascular age, ECG | See host | See host | 948 downloads |
| PPG-Sport | 30 | PPG, ECG, accel, gyro | 64 Hz, 130 Hz | HR, activity, SQI | See host | See host | 0 cited3 stars |
| Pulsewatch | 106 | PPG, ECG, accel | — | AFIB, HR, ECG | See host | See host | 2 results |
| SensSmartTech | 32 | PPG, ECG, accel, pcg | 100 Hz, 500 Hz, 1 kHz | cuff BP, resp rate, SQI | See host | See host | 3 cited |
| Two-wearables placements | 10 | PPG, accel, gyro, magnetometer, skin temp | — | SQI | See host | See host | 0 cited1 stars127 downloads |
| Walker posture E4 | — | PPG, accel, skin temp, EDA | E4 BVP/ACC/GSR/TEMP per Empatica default… | activity, SQI | See host | See host | 0 cited4 stars289 downloads |
| Wrist PPG During Exercise (PhysioNet wrist) | 8 | PPG, ECG, accel, gyro | 256Hz | SQI, ECG | ODC-By 1.0 | See host | 0 cited |
| Brno University of Technology Smartphone PPG Database (BUT PPG) | 50 | PPG, ECG | 30Hz, 1000Hz, 100Hz | HR, glucose | CC BY 4.0 | See host | 7 cited1 result |
| Gyro-Acc-PPG (BAMI-I, Wonkwang) | 24 | PPG, accel, gyro, ECG | 50 Hz, 125 Hz | HR | See host | See host | 79 cited1 result9 stars |
Benchmark results
Reported results from papers in the ChatPPG hub. Protocols differ, so only compare rows on the same dataset and metric.
| Dataset | Metric | Method | Result | Protocol |
|---|---|---|---|---|
| Brno University of Technology Smartphone PPG Database (BUT PPG) | Mean absolute HR error (BPM) ↓ | ECG-PPG JEPA 345M | 7.86 | Nested 5-fold CV (AnyPPG protocol); smartphone PPG |
| Gyro-Acc-PPG (BAMI-I, Wonkwang) | Mean absolute HR error (BPM) ↓ | ECG-PPG JEPA 345M | 10.22 | Nested 5-fold CV (AnyPPG protocol); treadmill wrist PPG |
| IEEE Signal Processing Cup 2015 (TROIKA) | Mean absolute HR error (BPM) ↓ | GPT-PPG | 1.98 | GPT-1B fine-tuned (MOFT), LOSO; arXiv v1 Table 2 |
| IEEE Signal Processing Cup 2015 (TROIKA) | Mean absolute HR error (BPM) ↓ | ECG-PPG JEPA 345M | 2.09 | LOSO, frozen |
| PPG-DaLiA | exact_match ↑ | PulseLM | 0.862 | 10 s @125 Hz, subject-disjoint ~8/1/1 per source; categorical QA exact-match (arXiv 2603.03331 Table 2); HR 3-class (<60… |
| PPG-DaLiA | Mean absolute HR error (BPM) ↓ | CardioState-JEPA | 3.8 | Paper Table 1 frozen |
| PPG-DaLiA | Mean absolute HR error (BPM) ↓ | GPT-PPG | 4.77 | GPT-1B fine-tuned (MOFT), LOSO; arXiv v1 Table 2; not comparable to frozen-probe rows |
| PPG-DaLiA | Mean absolute HR error (BPM) ↓ | ECG-PPG JEPA 345M | 4.96 | LOSO, frozen; PPG-only input |
| PPG-DaLiA | Mean absolute HR error (BPM) ↓ | TF-MambaNet | 7.27 | 8 s windows, frozen features (paper Table 1); split unstated; same-paper re-runs NormWear 10.16 / PaPaGei 12.25 / Chrono… |
| PPG-DaLiA | Mean absolute HR error (BPM) ↓ | PPG-Bench | 7.39 | PPG-Bench linear probe; AnyPPG; subject-disjoint 5-fold; mean±95% CI in paper |
| WESAD | Mean absolute HR error (BPM) ↓ | ECG-PPG JEPA 345M | 4.58 | LOSO, frozen encoder (KDD'26 Table 2) |
| WESAD | Mean absolute HR error (BPM) ↓ | GPT-PPG | 4.98 | GPT-1B fine-tuned (MOFT), LOSO; arXiv v1 Table 2 |
| WildPPG | Mean absolute HR error (BPM) ↓ | PPG-Bench | 9.76 | PPG-Bench linear probe; AnyPPG; subject-disjoint 5-fold |
| WESAD | Accuracy ↑ | Cross-Modal Correlation Fusion for End-to-End EC | 0.9034 | WESAD subject-independent 5-fold CV; mean Accuracy 90.34%; Stress Recall 94.07% |
| WESAD | Accuracy ↑ | TF-MambaNet | 0.81 | Binary stress, 8 s, frozen features (paper Table 2); accuracy — not comparable to AUROC rows; PaPaGei 0.80 / Chronos 0.7… |
| WESAD | Area under ROC ↑ | Cross-Modal Correlation Fusion for End-to-End EC | 0.9729 | WESAD subject-independent 5-fold CV; dual ECG+PPG encoders + cross-modal correlation fusion; paper AUC-ROC 97.29% |
| WESAD | Area under ROC ↑ | Pulse-PPG | 0.9687 | Binary stress; paper non-stress definition |
| WESAD | Area under ROC ↑ | Thapa wrist-PPG features | 0.965 | LOSO pooled AUC, BVP 64 Hz 60 s windows, stress from 9 subjects; post hoc; interval-only 0.911–0.933; RF 0.972 transduct… |
| WESAD | Area under ROC ↑ | TEX-MEX 0.56M | 0.9630 | Binary stress, subject-level 5-fold CV × 15 seeds (arXiv 2610.19557 Table 4); same-paper Pulse-PPG 0.9388 / AnyPPG 0.952… |
| WESAD | Area under ROC ↑ | Quality-aware PPG+ACC | 0.956 | LOSO 15 subj, 60-s windows, baseline vs stress; low-tier venue; selective prediction improves accepted-window F1 |
| WESAD | exact_match ↑ | PulseLM | 0.497 | 10 s @125 Hz, subject-disjoint ~8/1/1 per source; categorical QA exact-match (arXiv 2603.03331 Table 2); stress label se… |
Preprocessing pitfalls
- Use the published windowing. PPG-DaLiA ground truth is computed on 8 s windows with 2 s shift; changing the window changes MAE.
- Do leave-one-subject-out evaluation. With 15 subjects, random window splits leak each person into training.
- Report MAE per activity. Averages hide large errors during cycling, stairs and table soccer in PPG-DaLiA.
- Licence wording differs by host for PPG-DaLiA (UCI: CC BY 4.0; Siegen page: scientific, non-commercial). Check with the authors before commercial use.
- Raw PPG from the Pulse Transit Time dataset is unfiltered; the authors suggest removing the DC component and a 0.75 to 5 Hz band-pass to match filtered datasets.
FAQ
What is PPG-DaLiA?
PPG-DaLiA is a public dataset for PPG-based heart rate estimation in daily life: 15 subjects wearing an Empatica E4 wrist device and a RespiBAN chest device, with ECG-derived heart rate ground truth. It was introduced in Deep PPG (Reiss et al., Sensors 2019).
What is the state-of-the-art MAE on PPG-DaLiA?
The ChatPPG leaderboard below lists the reported mean absolute errors in BPM with each paper's protocol. Protocols differ, so compare rows only when the evaluation setup matches.
What sampling rates does PPG-DaLiA use?
Wrist BVP (PPG) 64 Hz, wrist accelerometer 32 Hz, EDA and temperature 4 Hz; the chest RespiBAN records ECG, respiration and acceleration at 700 Hz.
