wfdb
The WFDB Python package: tools for reading, writing, and processing physiologic signals and annotations.
What it is and what it does
WFDB is a Python library for working with physiologic signal data in the Waveform Database format, a standard used in biomedical research and clinical applications. It provides core I/O functionality to read and write signal files and annotations, along with processing and visualization capabilities built on numpy, scipy, pandas, and matplotlib. The package is inspired by the original WFDB Software Package but operates as an independent project adhering to the WFDB specification.
Typical use involves loading time-series physiologic data (such as ECG, EEG, or other biomedical signals) from WFDB-formatted files, manipulating or analyzing the signals using standard scientific Python tools, and generating plots or exporting results. It integrates with the broader scientific Python ecosystem through its dependencies, making it suitable for research workflows, clinical data analysis, and signal processing pipelines that work with standardized physiologic datasets.
Use it for:
- Load and analyze ECG or EEG recordings from PhysioNet datasets for research or clinical validation studies.
- Convert physiologic signal data between WFDB format and other formats (via numpy/pandas integration) for cross-platform analysis.
- Visualize multi-channel biomedical signals with annotations to inspect data quality or identify events.
- Process batch collections of physiologic records for feature extraction or machine-learning pipelines.
- Read signal annotations (e.g., beat markers, arrhythmia labels) alongside raw waveforms for supervised learning tasks.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Read, write, process, and plot physiologic signal and annotation data in WFDB format, a standard for biomedical time-series data.
Yes. The package is actively maintained, has no known vulnerabilities, installs with low friction, and is licensed permissively. It is the standard Python tool for WFDB format I/O in biomedical research. Install it if you work with physiologic signals in WFDB format or need to integrate PhysioNet datasets into Python workflows.
Install
wfdb on PyPI
pip
pip install wfdbuv
uv add wfdbpoetry
poetry add wfdbInstalling wfdb
Before you install
Low friction: pure Python wheel with eight common scientific dependencies (numpy, scipy, pandas, matplotlib, aiohttp, fsspec, requests, soundfile). Active maintenance with a recent release 192 days ago and 847 repository stars.
License in practice
MIT License permits unrestricted use, modification, and distribution in both open-source and commercial contexts with minimal attribution requirements.
Quickstart
pip install wfdb
import wfdb
record = wfdb.rdrecord('path/to/record')
wfdb.plot_wfdb(record=record)
On some systems, libsndfile must be installed separately for soundfile support; see soundfile installation notes.
Verify before relying
- Whether the package can handle real-time streaming of physiologic signals or is limited to file-based I/O.
- Performance characteristics and maximum dataset size the package handles efficiently.
- Extent of annotation format support beyond the core WFDB specification.
Package facts
| License | MIT License (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 8 — aiohttp, fsspec, matplotlib, numpy, pandas, requests, scipy, soundfile |
| Maintenance | actively maintained — 192 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 247,228/month — #8,697 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: wfdb-4.3.1-py3-none-any.whl
Tags
More Information Analysis packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyarrowpyarrow provides Python bindings to Apache…
permissive · top 100 on PyPI
networkxNetworkX provides data structures and…
permissive · top 1,000 on PyPI
snowflake-connector-pythonConnects Python applications to Snowflake data…
permissive · top 1,000 on PyPI
contourpyContourPy calculates contours of 2D…
permissive · top 1,000 on PyPI
snowflake-snowpark-pythonSnowpark Python provides APIs to query and…
permissive · top 1,000 on PyPI
biocReads and writes biomedical text annotation…
permissive · top 15,000 on PyPI
edfioedfio reads and writes EDF, EDF+C, BDF, and…
permissive · top 15,000 on PyPI
neurokit2NeuroKit2 processes physiological signals (ECG,…
permissive · top 15,000 on PyPI
pyPPGAnalyzes finger photoplethysmogram (PPG)…
agpl · top 15,000 on PyPI
obspyObsPy provides a Python framework for…
copyleft · top 15,000 on PyPI
soundfileReads and writes audio files in formats like…
permissive · top 1,000 on PyPI
pyjlsReads and writes JLS (Joulescope) files, a…
permissive · top 15,000 on PyPI
doppler-dspProvides a C99 digital signal processing…
permissive · top 15,000 on PyPI
pyEDFlibpyEDFlib reads and writes EDF+/BDF+ biomedical…
permissive · top 15,000 on PyPI
audiofileReads and writes audio files across formats…
permissive · top 15,000 on PyPI