This web application visualizes heart rate variability (HRV) and related metrics in real time using Bluetooth Low Energy (BLE) sensors such as the Polar H10 chest strap. Built with React, TypeScript, and Vite, it provides a modern, fast, and interactive experience for HRV analysis.
- Connect to Polar H10 (and compatible BLE heart rate sensors) using Chrome or Edge browsers with Web Bluetooth API
- Live data streaming and visualization
- Heart Rate (BPM) graph
- HRV (RMSSD) graph
- RR Intervals graph
- Disconnect and reconnect to sensors easily
- Error handling for Bluetooth connection issues
- Accessible, responsive UI with modern styling
The app displays three real-time graphs:
- Heart Rate Over Time: Shows beats per minute (BPM) sampled from the sensor
- HRV (RMSSD) Over Time: Displays root mean square of successive differences (RMSSD), a common HRV metric
- RR Intervals Over Time: Plots the intervals (in milliseconds) between heartbeats
- Polar H10: Fully supported for heart rate, RR intervals, and HRV
- Other BLE Heart Rate Sensors: May work if they support the standard Heart Rate Service (UUID: 0x180D) and RR interval data
- Advanced Data (ECG, PPG, ACC): Not currently supported in this app; only standard heart rate and RR interval data are visualized
Note: Some advanced features (like raw ECG/PPG/accelerometer data) require custom BLE services and are not available in most browsers or with all sensors. The app is optimized for Polar H10 and similar devices.
- Node.js 22+
- npm (or yarn)
- Chrome or Edge browser (with Web Bluetooth API support)
- Install dependencies:
npm install
- Start the development server:
The app will be available at
npm run dev
http://localhost:5173
npm run buildBuild artifacts are stored in the dist/ directory.
npm run preview- Open the app in Chrome or Edge (HTTPS or localhost required)
- Click Connect to Polar H10 to pair with your sensor
- View live graphs for heart rate, HRV, and RR intervals
- Disconnect and reconnect as needed
src/
├── components/ # React components (BluetoothHRV, etc.)
├── assets/ # Static assets
├── App.tsx # Main App component
└── main.tsx # Application entry point
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
- Web Bluetooth API is only available in supported browsers (Chrome, Edge) and requires HTTPS or localhost
- Sensor compatibility may vary; Polar H10 is recommended
- Advanced sensor data (ECG, PPG, ACC) is not visualized in this app
MIT