Public battery field data

35
Releases
3,187
Systems
3,040
Unit-years
115.6 MWh
Energy
256 GB
Data
6,465
Faults

35 public releases of battery data recorded in real use: cars, buses, light electric vehicles, home and grid storage, phones and factory robots. Each was published by its authors with a paper or data record. This collection does not copy their files. It tells you where to download each release and gives one Python loader per release, so every release can be read the same way.

Get started
  1. Install Python 3.12 or newer from python.org. The Python that comes with macOS is too old.
  2. Get the code, make a virtual environment and install:
    git clone https://github.com/Astrolabe-Analytics/public-battery-field-data.git
    cd public-battery-field-data
    python3 -m venv .venv
    source .venv/bin/activate          # on Windows: .venv\Scripts\activate
    python -m pip install -r requirements.txt
    python -m pip install -e .
    On a Mac, the first git command may offer to install Apple's command line tools, which takes several minutes. To skip git, use Code > Download ZIP on the GitHub page and unzip it.
  3. Choose where the data goes. Copy the example settings file:
    cp config/local.example.toml config/local.toml      # on Windows: copy config\local.example.toml config\local.toml
    Then open config/local.toml and replace the whole placeholder path PATH_TO_PUBLIC_BATTERY_DATA_HOLDINGS with your folder, keeping the quotes, for example data_root = "~/battery-data". If you skip this, downloads go to a data folder inside the repository.
  4. Download one release (each card below says how), then check it by name:
    python -m fielddata.doctor tsukuba
    Without a name, doctor checks all 35 releases and lists every one you have not downloaded.
  5. Open the quick-start notebook and run it from the top. It is set to cloverleaf, a second-life storage battery whose one 8 MB file downloads with one command; change RELEASE to the one you downloaded. If that release is not downloaded yet, the notebook prints the fetch command.
    jupyter lab notebooks/quickstart.ipynb
    In JupyterLab, choose Run > Restart Kernel and Run All Cells (or the double-arrow button in the notebook toolbar).

Releases at a glance

Values are the paper's Tables 1 and 2, generated from the repository. Licenses marked * restrict commercial use; ** state no license. Service time is unit-years where the release has timestamps, otherwise a lower bound in hours. Where a release's count differs from its paper, the paper's count is in brackets. Download says how each release downloads as of October 2026: one command, manual in a web browser, or partly manual (ppl, whose cell-level data is on a Box share). Faults are the labeled or reported faults counted in the paper's Table 3. Units are each release's gross count. † marks a release that shares some units with another release. The totals at the top count each unit once.

2019Vink, Ankyu and Koyama, Scientific Datatsukubadistributed storageJapanlead-acid1not in release3.3 unit-years0.326 (stated)02.73CC0 1.0one commandfigsharein deposit
2019Oh, LeBlanc and Peng, IEEE Trans. Intell. Transp. Syst.vedpassenger EVUnited Statesnot stated28not in release23.9 unit-years0.072 (stated)00.18Apache 2.0one commandGitHubGitHub
2020Gaura et al., Zenodobrazil_stardistributed storageBrazilnot stated4not in release2.8 unit-years0.001 (computed)0<0.01CC BY 4.0one commandZenodonone
2021Aitio and Howey, Jouleaitiodistributed storagesub-Saharan Africalead-acid1,0276,162 lead-acid1,665.0 unit-years0.246 (computed)4913.04CC BY-NC 4.0 *one commandOxford ORAnone
2022Wei et al., Journal of Energy Storagebeijing_evpassenger EVChinanot stated1not in release1.6 unit-years0.032 (computed)0<0.01CC BY 4.0one commandMendeley Datanone
2022Jara et al., Data in Briefbirds_cubesatsatellitein orbit (ISS orbit)NiMH4not in releaseat least 78 h0 (computed)0<0.01CC BY 4.0one commandMendeley Datanone
2022Gaukema et al., Zenodocloverleafdistributed storageBelgiumNMC-class3not in release1.0 unit-years0.08 (computed)0<0.01CC BY 4.0one commandZenodonone
2022He et al., arXivevbatterypassenger EVChinaNMC-class464 †not in releaseat least 57,265 hnot available321.41CC BY-NC-SA 4.0 *one commandfigshareGitHub
2022Wassiliadis et al., eTransportationtum_id3_2022passenger EVGermanynot stated1 †216 Li-ion0.0 unit-yearsnot available02.91CC BY 4.0one commandmediaTUMnone
2023Deng et al., Applied Energydengpassenger EVChinaNMC201,800 Li-ion46.2 unit-years0.953 (computed)00.23MIT (repository)one commandGitHubGitHub
2023Zarfati and Bedogni, IEEE CCNCflashbattery-agvindustrial and roboticsItalyLi-ion10not in release2.1 unit-yearsnot available0<0.01CC BY 4.0one commandZenodonone
2023Zhang et al., Nature Communicationszhang2023passenger EVChinaNMC-class347not in releaseat least 45,030 hnot available551.48CC BY 4.0one commandfigshareGitHub
2024Bilfinger et al., eTransportationbilfinger2024passenger EVGermanyNMC, LFP2322 Li-ion3.2 unit-years0.111 (stated)00.30CC BY 4.0manual (browser)mediaTUMGitHub
2024Fei, Mendeley Datafei_busbusnot statednot stated4not in releaseno timestampsnot available0<0.01CC BY 4.0one commandMendeley Datanone
2024Evaluation operation report, RWTH Publicationsm5bat-2023-04grid-scale storageGermanyLMO/NMC, LFP, LTO, lead-acid10 †24,672 Li-ion; 1,222 lead-acid0.7 unit-years6.714 (stated)00.10CC BY 4.0manual (browser)RWTH Publicationsnone
2024Figgener et al., Nature Energyrwth-homedistributed storageGermanyLFP, LMO/NMC, NMC2112,036 Li-ion120.1 unit-years0.153 (stated)021.12CC BY 4.0one commandZenodoZenodo
2024Schaeffer et al., Cell Reports Physical Scienceschaefferdistributed storagenot statedLFP28224 Li-ion56.9 unit-years0.108 (computed)281.67CC BY-NC 4.0 *one commandZenodoGitHub
2025Bilfinger et al., npj Clean Energybilfinger2025passenger EVGermanyNMC, LFP12 †9,840 Li-ion6.9 unit-years0.373 (stated)10.31CC BY 4.0manual (browser)mediaTUMGitHub
2025Cao et al., Nature Communicationscaopassenger EVChinaNMC-class, LFP51450,030 Li-ionat least 151,900 h15.107 (computed)6138.06CC BY 4.0one commandZenodoZenodo
2025Liu et al., Nature Communicationschanganpassenger EVChinaNMC30028,800 Li-ion975.4 unit-years16.294 (computed)079.69CC BY-NC-SA 4.0 *manual (browser)Changan portalGitHub
2025Yasko et al., Scientific Dataku_leuven_bevpassenger EVBelgiumLFP, NCA2not in release1.8 unit-years0.139 (stated)00.16CC BY 4.0manual (browser)KU Leuven RDRGitHub
2025Fast et al., Zenodorise_conbatgrid-scale storageSwedennot stated881,056 Li-ion56.5 unit-years0.115 (stated)00.71CC BY 4.0one commandZenodonone
2025Yang et al., Nature Communicationsshenzhen_chargingpassenger EVChinaLFP, NMC, LMO, LCO, lithium polymer (cell format, chemistry not stated)31,449 charging sessionsnot in releaseat least 21,479 hnot available5,680 (sessions)0.22CC BY 4.0one commandMendeley Datanone
2025Tao et al., eTransportationtongji_restpassenger EVChinaLFP, NMC4432 Li-ion9.9 unit-years0.189 (computed)00.13CC BY 4.0one commandZenodonone
2025Schreiber et al., eTransportationtumftmpassenger EVGermanyNMC71,512 Li-ion6.7 unit-years0.406 (stated)00.86CC BY-NC 4.0 *one commandGitHubGitHub
2026Bilfinger et al., eTransportationbilfinger2026passenger EVGermanyNMC, LFP7 †1,402 Li-ion0.3 unit-years0.401 (stated)00.30CC BY 4.0manual (browser)mediaTUMGitHub
2026He et al., Zenodocell_to_packgrid-scale storagenot statedLFP, NMC166,656 Li-ionat least 54,750 h6.5 (computed)03.54CC BY 4.0one commandZenodoZenodo
2026Li et al., Cell Reports Physical Scienceli2026grid-scale storagenot statedLFP1240 Li-ion (paper: 200)1,203 h0.156 (computed)00.02CC BY 4.0one commandZenodoGitHub
2026Zurmühlen, Koltermann and Sauer, Energiesm5bat-pbacidgrid-scale storageGermanylead-acid1300 lead-acid8.1 unit-years1.066 (stated)14.65CC BY 4.0manual (browser)RWTH Publicationsnone
2026Crawford and Thompson, Zenodopnnl_eprigrid-scale storageUnited StatesLFP, NMC, LMO/NMC, vanadium flow12 †not in release17.2 unit-years63.87 (stated and computed) §03.43CC BY 4.0one commandZenodoZenodo
2026Kyeremeh et al., IEEE Accesspplgrid-scale storageUnited StatesLi-ion14,760 Li-ion8.3 unit-years2 (stated)067.59unstated **partly manualGitHubGitHub
2026Laufen et al., RWTH Publicationsrwth-androidconsumer electronicsGermanyLi-ion3333 Li-ion3.5 unit-years0.001 (computed)00.08CC BY 4.0manual (browser)RWTH Publicationsnone
2026Lanubile et al., Stanford Digital Repositorystanford_evpassenger EVUnited Statesnot stated1108 Li-ion3.5 unit-years0.091 (computed)018.30CC BY-NC-ND 4.0 *one commandStanford Digital Repositorynone
2026Xie et al., Cell Reports Physical Sciencexielight electric mobilitynot statedLFP2715,241 Li-ion (paper: 5,234)4.8 unit-yearsnot available1160.16CC BY 4.0 (data); MIT (code)one commandZenodoZenodo
2026Zhou et al., Nature Energyzhou2026passenger EV, busChinaNMC, LFP3346 Li-ion10.4 unit-years0.209 (stated)02.15unstated (data); MIT (code) **manual (browser)OneDriveGitHub

Release by release

35 of 35 loaders loaded their quick-start slice on the full holdings (2026-10-02, 2026-10-03, 2026-10-06, 2026-10-13, 2026-10-15). Each preview is drawn from the release by its loader. Where a release restricts commercial use or states no license, the preview says so.

tsukuba

Multiyear microgrid data from a research building in Tsukuba, Japan

Field data from 1 home or building storage system in Japan with lead-acid cells, released with Vink, Ankyu and Koyama, Scientific Data. The release covers 3.3 unit-years of operation and about 0.326 MWh of battery energy (stated).

Loader verified 2026-10-02 691,200 rows, 12 columns in the sample slice

Download

One command (as of October 2026), from figshare:

python -m fielddata.fetch tsukuba

Load a first slice

import fielddata
frame = fielddata.load('tsukuba', start='2016-06-01', end='2016-06-08')
frame.head()
battery_dc_voltage stays between 316.6 and 401.1 (raw data)
battery_dc_voltage stays between 316.6 and 401.1 (raw data). One unit, quick-start slice, one point in every 173 drawn. Plotted data (CSV).

ved

Vehicle Energy Dataset (VED), A Large-scale Dataset for Vehicle Energy Consumption Research

Field data from 28 passenger electric vehicles in United States, released with Oh, LeBlanc and Peng, IEEE Trans. Intell. Transp. Syst.. The release covers 23.9 unit-years of operation and about 0.072 MWh of battery energy (stated).

Loader verified 2026-10-13 2,656 rows, 23 columns in the sample slice

Download

One command (as of October 2026), from GitHub:

python -m fielddata.fetch ved

Load a first slice

import fielddata
frame = fielddata.load('ved', unit=10, week='171101')
frame.head()
HV Battery SOC[%] stays between 46.59 and 100 (raw data)
HV Battery SOC[%] stays between 46.59 and 100 (raw data). One unit, quick-start slice. Plotted data (CSV).

brazil_star

Brazil STAR Project Microgrid Monitoring Data

Field data from 4 home or building storage systems in Brazil, released with Gaura et al., Zenodo. The release covers 2.8 unit-years of operation and about 0.001 MWh of battery energy (computed).

No paper. Related: Trindade et al. 2022, Environ. Sci. Proc. 15, 16

Loader verified 2026-10-13 162,170 rows, 11 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch brazil_star

Load a first slice

import fielddata
frame = fielddata.load('brazil_star', unit='STAR-A', system='Battery')
frame.head()
Voltage stays between 0 and 2.879e+04 (raw data)
Voltage stays between 0 and 2.879e+04 (raw data). One unit, quick-start slice, one point in every 41 drawn. Plotted data (CSV).

aitio

Predicting battery end of life from solar off-grid system field data using machine learning

Field data from 1,027 home or building storage systems in sub-Saharan Africa with lead-acid cells, released with Aitio and Howey, Joule. The release covers 1,665.0 unit-years of operation and about 0.246 MWh of battery energy (computed).

Loader verified 2026-10-06 787,789 rows, 4 columns in the sample slice

Download

One command (as of October 2026), from Oxford ORA:

python -m fielddata.fetch aitio

2.9 GB, slow host (Oxford ORA), allow ~15 min. Each file prints when it is done.

Load a first slice

import fielddata
frame = fielddata.load('aitio', unit='0', clean=True)
frame.head()
voltage_V stays between 11.55 and 14.53 (cleaned data)
voltage_V stays between 11.55 and 14.53 (cleaned data). One unit, quick-start slice, one point in every 197 drawn. Plotted data (CSV). The figure and CSV are derived from this release and carry its license, CC BY-NC 4.0, for non-commercial use only.

beijing_ev

Online estimation of driving range for battery electric vehicles based on SOC-segmented actual driving cycle

Field data from 1 passenger electric vehicle in China, released with Wei et al., Journal of Energy Storage. The release covers 1.6 unit-years of operation and about 0.032 MWh of battery energy (computed).

Loader verified 2026-10-13 2,237 rows, 6 columns in the sample slice

Download

One command (as of October 2026), from Mendeley Data:

python -m fielddata.fetch beijing_ev

Load a first slice

import fielddata
frame = fielddata.load('beijing_ev', unit='2018-01-17')
frame.head()
voltage stays between 310.1 and 371.9 (raw data)
voltage stays between 310.1 and 371.9 (raw data). One unit, quick-start slice. Plotted data (CSV).

birds_cubesat

On-orbit Electrical Power System Dataset of 1U CubeSat constellation for Machine Learning Models

Field data from 4 units in in orbit (ISS orbit) with NiMH cells, released with Jara et al., Data in Brief. The release covers at least 78 h of operation and about 0 MWh of battery energy (computed).

Loader verified 2026-10-13 1,095 rows, 38 columns in the sample slice

Download

One command (as of October 2026), from Mendeley Data:

python -m fielddata.fetch birds_cubesat

Load a first slice

import fielddata
frame = fielddata.load('birds_cubesat', unit='TSURU', sheet='March 28')
frame.head()
Vbat_V stays between 3.92 and 4.2 (raw data)
Vbat_V stays between 3.92 and 4.2 (raw data). One unit, quick-start slice. Plotted data (CSV).

cloverleaf

Monitoring data second-life battery at Cloverleaf

Field data from 3 second-life battery packs of one building storage system in Belgium with NMC-class cells, released with Gaukema et al., Zenodo. The release covers 1.0 unit-years of operation and about 0.08 MWh of battery energy (computed).

No paper. Related: Voets and Ben-Al-Lal, pv magazine, 21 Jan 2022

Loader verified 2026-10-02 521 rows, 10 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch cloverleaf

Load a first slice

import fielddata
frame = fielddata.load('cloverleaf', unit='SNAM HV - 2100173')
frame.head()
Vpack stays between 349 and 398.1 (raw data)
Vpack stays between 349 and 398.1 (raw data). One unit, quick-start slice. Plotted data (CSV).

evbattery

EVBattery - Large-Scale EV Dataset for Battery Health & Capacity

Field data from 464 passenger electric vehicles in China with NMC-class cells, released with He et al., arXiv. The release covers at least 57,265 h of operation.

Loader verified 2026-10-02 258,176 rows, 14 columns in the sample slice

Download

One command (as of October 2026), from figshare:

python -m fielddata.fetch evbattery

Load a first slice

import fielddata
frame = fielddata.load('evbattery', unit='battery_dataset1:0')
frame.head()
volt stays between 3.636 and 3.912 (raw data)
volt stays between 3.636 and 3.912 (raw data). One unit, quick-start slice. Plotted data (CSV). The figure and CSV are derived from this release and carry its license, CC BY-NC-SA 4.0, for non-commercial use only.

tum_id3_2022

Quantifying the state of the art of electric powertrains in battery electric vehicles - Range, efficiency, and lifetime from component to system level of the Volkswagen ID.3

Field data from 1 passenger electric vehicle in Germany, released with Wassiliadis et al., eTransportation. The release covers 0.0 unit-years of operation.

Loader verified 2026-10-13 5,550 rows, 137 columns in the sample slice

Download

One command (as of October 2026), from mediaTUM:

python -m fielddata.fetch tum_id3_2022

Load a first slice

import fielddata
frame = fielddata.load('tum_id3_2022', track=0)
frame.head()
hv_battery_voltage stays between 425.5 and 448.5 (raw data)
hv_battery_voltage stays between 425.5 and 448.5 (raw data). One unit, quick-start slice, one point in every 2 drawn. Plotted data (CSV).

deng

Prognostics of battery capacity based on charging data for on-road vehicles

Field data from 20 passenger electric vehicles in China with NMC cells, released with Deng et al., Applied Energy. The release covers 46.2 unit-years of operation and about 0.953 MWh of battery energy (computed).

Loader verified 2026-10-02 854,591 rows, 11 columns in the sample slice

Download

One command (as of October 2026), from GitHub:

python -m fielddata.fetch deng

Load a first slice

import fielddata
frame = fielddata.load('deng', pack='#1')
frame.head()
pack_voltage stays between 314.7 and 386.2 (raw data)
pack_voltage stays between 314.7 and 386.2 (raw data). One unit, quick-start slice, one point in every 214 drawn. Plotted data (CSV).

flashbattery-agv

Automated Battery Power Fade Estimation for Fast Charge/Discharge

Field data from 10 automated guided vehicle packs in Italy with Li-ion cells, released with Zarfati and Bedogni, IEEE CCNC. The release covers 2.1 unit-years of operation.

Loader verified 2026-10-02 4,221 rows, 6 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch flashbattery-agv

Load a first slice

import fielddata
frame = fielddata.load('flashbattery-agv', unit='FB-0')
frame.head()
cycletime stays between 0 and 1.44e+04 (raw data)
cycletime stays between 0 and 1.44e+04 (raw data). One unit, quick-start slice, one point in every 2 drawn. Plotted data (CSV).

zhang2023

Realistic fault detection of Li-ion battery via dynamical deep learning approach

Field data from 347 passenger electric vehicles in China with NMC-class cells, released with Zhang et al., Nature Communications. The release covers at least 45,030 h of operation.

Loader verified 2026-10-02 350,208 rows, 13 columns in the sample slice

Download

One command (as of October 2026), from figshare:

python -m fielddata.fetch zhang2023

Load a first slice

import fielddata
frame = fielddata.load('zhang2023', unit='battery_brand1:1')
frame.head()
max_single_volt stays between 3.534 and 3.609 (raw data)
max_single_volt stays between 3.534 and 3.609 (raw data). One unit, quick-start slice. Plotted data (CSV).

bilfinger2024

Battery pack diagnostics for EVs: Transfer of differential voltage and incremental capacity

Field data from 2 passenger electric vehicles in Germany with NMC, LFP cells, released with Bilfinger et al., eTransportation. The release covers 3.2 unit-years of operation and about 0.111 MWh of battery energy (stated).

Loader verified 2026-10-02 20,738 rows, 118 columns in the sample slice

Download

Manual, in a web browser (as of October 2026), from mediaTUM. The fetch command prints these steps:

bilfinger2024 requires a manual download.
1. Open https://mediatum.ub.tum.de/1737452
2. Download the data files listed below. Do not download papers.
   - data.zip (about 0.3 GB)
   Note: data.zip is the "Download all" zip of the mediaTUM data-server share linked from the record.
3. Save the files under data/Battery pack diagnostics for electric vehicles - Transfer of differential voltage and incremental capacity analysis from cell to vehicle level/data
4. Run python -m fielddata.verify bilfinger2024 to check the saved files.

Load a first slice

import fielddata
frame = fielddata.load('bilfinger2024', unit='Tesla_JB_8A_CEE7_C57_2021')
frame.head()
U stays between 325.7 and 365.6 (raw data)
U stays between 325.7 and 365.6 (raw data). One unit, quick-start slice, one point in every 6 drawn. Plotted data (CSV).

fei_bus

Real EV dataset - Commercial Electric Buses

Field data from 4 electric buses (country not stated), released with Fei, Mendeley Data. The release has no timestamps, so the time it covers is not known.

Loader verified 2026-10-02 101 rows, 4 columns in the sample slice

Download

One command (as of October 2026), from Mendeley Data:

python -m fielddata.fetch fei_bus

Load a first slice

import fielddata
frame = fielddata.load('fei_bus', unit='vin1')
frame.head()
SOH stays between 0.4782 and 0.9703 (raw data)
SOH stays between 0.4782 and 0.9703 (raw data). One unit, quick-start slice. Plotted data (CSV).

m5bat-2023-04

M5BAT Large-Scale Battery Storage System: Evaluation Operation Report 04/2023

Field data from 10 grid-scale storage units in Germany with LMO/NMC, LFP, LTO, lead-acid cells, released with Evaluation operation report, RWTH Publications. The release covers 0.7 unit-years of operation and about 6.714 MWh of battery energy (stated).

Loader verified 2026-10-02 2,592,000 rows, 13 columns in the sample slice

Download

Manual, in a web browser (as of October 2026), from RWTH Publications. The fetch command prints these steps:

m5bat-2023-04 requires a manual download.
1. Open https://publications.rwth-aachen.de/record/985923
2. Download the data files listed below. Do not download papers.
   - M5BAT_04-2023_RAW.zip (about 0.1 GB)
   Note: RWTH Publications needs a web browser; its download links do not work from a script.
3. Save the files under data/M5BAT Large-Scale Battery Storage System Dataset - Evaluation Operation Report 04-2023/data
4. Run python -m fielddata.verify m5bat-2023-04 to check the saved files.

Load a first slice

import fielddata
frame = fielddata.load('m5bat-2023-04', unit='Batt2')
frame.head()
U_DC_Batt stays between 5597 and 7171 (raw data)
U_DC_Batt stays between 5597 and 7171 (raw data). One unit, quick-start slice, one point in every 648 drawn. Plotted data (CSV).

rwth-home

Multi-year field measurements of home storage systems & capacity estimation

Field data from 21 home or building storage systems in Germany with LFP, LMO/NMC, NMC cells, released with Figgener et al., Nature Energy. The release covers 120.1 unit-years of operation and about 0.153 MWh of battery energy (stated).

Loader verified 2026-10-02 521,849 rows, 7 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch rwth-home

Load a first slice

import fielddata
frame = fielddata.load('rwth-home', unit='01', month='2019-06')
frame.head()
V_in_V stays between 131.2 and 165.3 (raw data)
V_in_V stays between 131.2 and 165.3 (raw data). One unit, quick-start slice, one point in every 131 drawn. Plotted data (CSV).

schaeffer

Gaussian process-based online health monitoring and fault analysis from field data

Field data from 28 home or building storage systems (country not stated) with LFP cells, released with Schaeffer et al., Cell Reports Physical Science. The release covers 56.9 unit-years of operation and about 0.108 MWh of battery energy (computed).

Loader verified 2026-10-02 500,000 rows, 26 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch schaeffer

Load a first slice

import fielddata
frame = next(fielddata.load('schaeffer', system=1, chunksize=500000))
frame.head()
U_Battery stays between 24.14 and 28.47 (raw data)
U_Battery stays between 24.14 and 28.47 (raw data). One unit, quick-start slice, one point in every 125 drawn. Plotted data (CSV). The figure and CSV are derived from this release and carry its license, CC BY-NC 4.0, for non-commercial use only.

bilfinger2025

Why we need a standardized SOH measurement procedure for EV battery packs

Field data from 12 passenger electric vehicles in Germany with NMC, LFP cells, released with Bilfinger et al., npj Clean Energy. The release covers 6.9 unit-years of operation and about 0.373 MWh of battery energy (stated).

Loader verified 2026-10-15 14,766 rows, 136 columns in the sample slice

Download

Manual, in a web browser (as of October 2026), from mediaTUM. The fetch command prints these steps:

bilfinger2025 requires a manual download.
1. Open https://mediatum.ub.tum.de/1765567
2. Download the data files listed below. Do not download papers.
   - data.zip (size not stated)
   Note: data.zip is the "Download all" zip of the mediaTUM data-server share linked from the record (https://dataserv.ub.tum.de/index.php/s/m1765567, about 306 MB).
   Note: From a script the share's download needs its session cookie; without it the server returns a small stub, so check the size.
3. Save the files under data/Why we need a standardized state of health measurement procedure for electric vehicle battery packs - A proposal for energy- and capacity-based metrics/data
4. Run python -m fielddata.verify bilfinger2025 to check the saved files.

Load a first slice

import fielddata
frame = fielddata.load('bilfinger2025', unit='Tesla_Model_Y_JB_8A_CEE7_MI_2025')
frame.head()
U stays between 291.9 and 402.8 (raw data)
U stays between 291.9 and 402.8 (raw data). One unit, quick-start slice, one point in every 4 drawn. Plotted data (CSV).

cao

Model-Constrained Deep Learning for Online Fault Diagnosis in Li-ion Batteries over Stochastic Conditions

Field data from 514 passenger electric vehicles in China with NMC-class, LFP cells, released with Cao et al., Nature Communications. The release covers at least 151,900 h of operation and about 15.107 MWh of battery energy (computed).

Loader verified 2026-10-03 43,546 rows, 225 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch cao

Load a first slice

import fielddata
frame = fielddata.load('cao', brand='QAS', vehicle='0', names='inferred', clean=True)
frame.head()

In-depth notebook: a worked example of a release published without column names, units or timestamps.

cell_v_001 stays between 2.844 and 3.611 (cleaned data)
cell_v_001 stays between 2.844 and 3.611 (cleaned data). One unit, quick-start slice, one point in every 11 drawn. Plotted data (CSV).

changan

Multi-modal framework for battery SOH evaluation using open-source EV data

Field data from 300 passenger electric vehicles in China with NMC cells, released with Liu et al., Nature Communications. The release covers 975.4 unit-years of operation and about 16.294 MWh of battery energy (computed).

Loader verified 2026-10-02 200,000 rows, 13 columns in the sample slice

Download

Manual, in a web browser (as of October 2026), from Changan portal. The fetch command prints these steps:

changan requires a manual download.
1. Open http://ivstskl.changan.com.cn/?p=2697
2. Download the data files listed below. Do not download papers.
   - raw/RAW_DATA.z01 (about 51.5 GB)
   - raw/RAW_DATA.zip (about 22.8 GB)
   Note: the two files are one split zip of about 74 GB (RAW_DATA.z01 51.5 GB, RAW_DATA.zip 22.8 GB); check you have the space first.
   Note: save both in a subfolder named raw inside the folder in step 3 (create it), and do not unzip them.
3. Save the files under data/Multi-modal framework for battery state of health evaluation using open-source electric vehicle data/data
4. Run python -m fielddata.verify changan to check the saved files.

Load a first slice

import fielddata
frame = fielddata.load('changan', unit='vin1', nrows=200000, clean=True)
frame.head()
totalvoltage stays between 330 and 406.9 (cleaned data)
totalvoltage stays between 330 and 406.9 (cleaned data). One unit, quick-start slice, one point in every 50 drawn. Plotted data (CSV). The figure and CSV are derived from this release and carry its license, CC BY-NC-SA 4.0, for non-commercial use only.

ku_leuven_bev

Unveiling Energy Dynamics of Battery Electric Vehicle Using High-Resolution Data

Field data from 2 passenger electric vehicles in Belgium with LFP, NCA cells, released with Yasko et al., Scientific Data. The release covers 1.8 unit-years of operation and about 0.139 MWh of battery energy (stated).

Loader verified 2026-10-02 773,172 rows, 36 columns in the sample slice

Download

Manual, in a web browser (as of October 2026), from KU Leuven RDR. The fetch command prints these steps:

ku_leuven_bev requires a manual download.
1. Open https://doi.org/10.48804/8KPDTW
2. Download the data files listed below. Do not download papers.
   - doi-10.48804-8kpdtw.zip (about 0.2 GB)
   Note: the zip is Dataverse's "Access dataset > Download ZIP" on the KU Leuven RDR page.
3. Save the files under data/Unveiling Energy Dynamics of Battery Electric Vehicle Using High-Resolution Data/data
4. Run python -m fielddata.verify ku_leuven_bev to check the saved files.

Load a first slice

import fielddata
frame = fielddata.load('ku_leuven_bev', unit='BEV1', session_type='driving')
frame.head()
BattVoltage132 stays between 285.8 and 386.7 (raw data)
BattVoltage132 stays between 285.8 and 386.7 (raw data). One unit, quick-start slice, one point in every 194 drawn. Plotted data (CSV).

rise_conbat

Data-driven State-of-Health prediction for reused batteries in new applications

Field data from 88 grid-scale storage units in Sweden, released with Fast et al., Zenodo. The release covers 56.5 unit-years of operation and about 0.115 MWh of battery energy (stated).

No paper. Related: project README (RISE, Swedish Energy Agency)

Loader verified 2026-10-13 8,640 rows, 10 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch rise_conbat

Load a first slice

import fielddata
frame = fielddata.load('rise_conbat', window='9. 240210-240215', level='module', unit='H400788-1')
frame.head()
voltage stays between 37.55 and 50.14 (raw data)
voltage stays between 37.55 and 50.14 (raw data). One unit, quick-start slice, one point in every 3 drawn. Plotted data (CSV).

shenzhen_charging

Privacy-preserving collaborative battery fault warning for massive electric vehicles by heterogeneous data from charging stations

Field data from 31,449 charging sessions in China with LFP, NMC, LMO, LCO, lithium polymer (cell format, chemistry not stated) cells, released with Yang et al., Nature Communications. The release covers at least 21,479 h of operation.

Loader verified 2026-10-13 130 rows, 17 columns in the sample slice

Download

One command (as of October 2026), from Mendeley Data:

python -m fielddata.fetch shenzhen_charging

Load a first slice

import fielddata
frame = fielddata.load('shenzhen_charging', unit='44020100400000012010151800001210', file='processed_data_longer_than_30')
frame.head()
chargingv stays between 331.9 and 369.1 (raw data)
chargingv stays between 331.9 and 369.1 (raw data). One unit, quick-start slice. Plotted data (CSV).

tongji_rest

Cross-Domain Feature-Based Battery State-of-Health Estimation from Rest Period for Real-World Electric Vehicles

Field data from 4 passenger electric vehicles in China with LFP, NMC cells, released with Tao et al., eTransportation. The release covers 9.9 unit-years of operation and about 0.189 MWh of battery energy (computed).

Loader verified 2026-10-13 9,819 rows, 102 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch tongji_rest

Load a first slice

import fielddata
frame = fielddata.load('tongji_rest', unit='NMC02', kind='rest')
frame.head()
totalVoltage stays between 333.8 and 394.9 (raw data)
totalVoltage stays between 333.8 and 394.9 (raw data). One unit, quick-start slice, one point in every 3 drawn. Plotted data (CSV).

tumftm

Lab-to-field gap in battery aging: Mismatch of operating conditions

Field data from 7 passenger electric vehicles in Germany with NMC cells, released with Schreiber et al., eTransportation. The release covers 6.7 unit-years of operation and about 0.406 MWh of battery energy (stated).

Loader verified 2026-10-02 5,282,082 rows, 6 columns in the sample slice

Download

One command (as of October 2026), from GitHub:

python -m fielddata.fetch tumftm

Load a first slice

import fielddata
frame = fielddata.load('tumftm', unit='CUP1', value_id=1200, clean=True)
frame.head()
value stays between 0 and 8588 (cleaned data)
value stays between 0 and 8588 (cleaned data). One unit, quick-start slice, one point in every 1,321 drawn. Plotted data (CSV). The figure and CSV are derived from this release and carry its license, CC BY-NC 4.0, for non-commercial use only.

bilfinger2026

Battery pack diagnostics for EVs: Robustness of SOH and differential voltage

Field data from 7 passenger electric vehicles in Germany with NMC, LFP cells, released with Bilfinger et al., eTransportation. The release covers 0.3 unit-years of operation and about 0.401 MWh of battery energy (stated).

Loader verified 2026-10-02 79,591 rows, 117 columns in the sample slice

Download

Manual, in a web browser (as of October 2026), from mediaTUM. The fetch command prints these steps:

bilfinger2026 requires a manual download.
1. Open https://mediatum.ub.tum.de/1840112
2. Download the data files listed below. Do not download papers.
   - data.zip (about 0.3 GB)
   Note: data.zip is the "Download all" zip of the mediaTUM data-server share linked from the record.
3. Save the files under data/Battery pack diagnostics for electric vehicles - Robustness of the state of health measurement and differential voltage analysis at the vehicle level/data
4. Run python -m fielddata.verify bilfinger2026 to check the saved files.

Load a first slice

import fielddata
frame = fielddata.load('bilfinger2026', unit='Cupra_204_JB_8A_CEE7_C45')
frame.head()
U stays between 358.2 and 454 (raw data)
U stays between 358.2 and 454 (raw data). One unit, quick-start slice, one point in every 20 drawn. Plotted data (CSV).

cell_to_pack

Resolving inter-cell heterogeneity to mitigate degradation amplification in battery packs

Field data from 16 grid-scale storage units (country not stated) with LFP, NMC cells, released with He et al., Zenodo. The release covers at least 54,750 h of operation and about 6.5 MWh of battery energy (computed).

No paper. Related: manuscript unpublished, authors' code record, Zenodo 21105057 (2026-07)

Loader verified 2026-10-13 691,190 rows, 5 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch cell_to_pack

Load a first slice

import fielddata
frame = fielddata.load('cell_to_pack', unit='Pack_field#1', columns=['time(s)', 'current(A)', 'Vpack', 'SOC'])
frame.head()
Vpack stays between 1209 and 1456 (raw data)
Vpack stays between 1209 and 1456 (raw data). One unit, quick-start slice, one point in every 173 drawn. Plotted data (CSV).

li2026

Large language model-based fault diagnosis for Li-ion batteries in cloud-edge systems

Field data from 1 grid-scale storage unit (country not stated) with LFP cells, released with Li et al., Cell Reports Physical Science. The release covers 1,203 h of operation and about 0.156 MWh of battery energy (computed).

Loader verified 2026-10-02 31,960 rows, 18 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch li2026

Load a first slice

import fielddata
frame = fielddata.load('li2026', unit='real_world_02-03/battery_01')
frame.head()
cell_001_V stays between 3.131 and 3.436 (raw data)
cell_001_V stays between 3.131 and 3.436 (raw data). One unit, quick-start slice, one point in every 8 drawn. Plotted data (CSV).

m5bat-pbacid

Operational Degradation of Flooded Lead-Acid Under FCR: Long-Term Evidence

Field data from 1 grid-scale storage unit in Germany with lead-acid cells, released with Zurmühlen, Koltermann and Sauer, Energies. The release covers 8.1 unit-years of operation and about 1.066 MWh of battery energy (stated).

Loader verified 2026-10-02 200,000 rows, 8 columns in the sample slice

Download

Manual, in a web browser (as of October 2026), from RWTH Publications. The fetch command prints these steps:

m5bat-pbacid requires a manual download.
1. Open https://publications.rwth-aachen.de/record/1038622
2. Download the data files listed below. Do not download papers.
   - Full_Dataset_M5BAT_Battery_Unit_Pb1.zip (4.33 GB (page display))
   Note: RWTH Publications needs a web browser; its download links do not work from a script.
3. Save the files under data/Operational Degradation of Flooded Lead-Acid Storage Under Frequency Containment Reserve/data
4. Run python -m fielddata.verify m5bat-pbacid to check the saved files.

Load a first slice

from fielddata.loaders import m5bat_pbacid
frame = m5bat_pbacid.preview(source='bms', year=2023, rows=200000)
frame.head()
voltage_bat_V_bms stays between 557 and 706 (raw data)
voltage_bat_V_bms stays between 557 and 706 (raw data). One unit, quick-start slice, one point in every 50 drawn. Plotted data (CSV).

pnnl_epri

Grid-Scale BESS Operational Datasets for Battery Modeling Research

Field data from 12 grid-scale storage units in United States with LFP, NMC, LMO/NMC, vanadium flow cells, released with Crawford and Thompson, Zenodo. The release covers 17.2 unit-years of operation.

No paper. Related: Crawford 2026, DOE OE peer-review poster

Loader verified 2026-10-13 85,858 rows, 6 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch pnnl_epri

Load a first slice

import fielddata
frame = fielddata.load('pnnl_epri', unit='ENW', meter='PDC', columns=['Voltage', 'Current', 'SOC', 'Power'])
frame.head()
SOC stays between 0.04762 and 0.955 (raw data)
SOC stays between 0.04762 and 0.955 (raw data). One unit, quick-start slice, one point in every 22 drawn. Plotted data (CSV).

ppl

Utility-Scale Battery Energy Storage Systems - Field Pilot Unit Experience

Field data from 1 grid-scale storage unit in United States with Li-ion cells, released with Kyeremeh et al., IEEE Access. The release covers 8.3 unit-years of operation and about 2 MWh of battery energy (stated).

Loader verified 2026-10-02 525,600 rows, 19 columns in the sample slice

Download

Partly manual (as of October 2026). One command downloads the files on GitHub:

python -m fielddata.fetch ppl

The command then prints the manual step for the rest:

ppl is only partly downloaded by this command. One more step is manual:
   The cell-level data (about 66.6 GB, one zip per month from December 2016) is not in the GitHub repository.
   The repository's file BESS-Analysis/Cell_Level_Data links to it on a Box share:
   https://app.box.com/s/s0ns2o1i4q0f7yxcnn96df7e5px5k0s6
   Download the monthly zips in a web browser and save them in a folder named cell_level next to BESS-Analysis.
   The ppl loader reads only the GitHub files, so this step is needed only to use the cell-level data yourself.

Load a first slice

import fielddata
frame = fielddata.load('ppl', years=[2019])
frame.head()
CellVoltAvg stays between 0 and 4.129 (raw data)
CellVoltAvg stays between 0 and 4.129 (raw data). One unit, quick-start slice, one point in every 132 drawn. Plotted data (CSV). The authors state no license for this data; the figure and CSV are shown for orientation only.

rwth-android

Battery Cell Field Data of Multiple Mobile Android Devices

Field data from 33 mobile phones in Germany with Li-ion cells, released with Laufen et al., RWTH Publications. The release covers 3.5 unit-years of operation and about 0.001 MWh of battery energy (computed).

Loader verified 2026-10-02 32,038 rows, 19 columns in the sample slice

Download

Manual, in a web browser (as of October 2026), from RWTH Publications. The fetch command prints these steps:

rwth-android requires a manual download.
1. Open https://publications.rwth-aachen.de/record/1002905
2. Download the data files listed below. Do not download papers.
   - Dataset_from_Mobile_Battery_Data_Explorer_2026-04.zip (about 76.1 MB)
   Note: RWTH Publications needs a web browser; its download links do not work from a script.
3. Save the files under data/Battery Cell Field Data of Multiple Mobile Android Devices/data
4. Run python -m fielddata.verify rwth-android to check the saved files.

Load a first slice

import fielddata
frame = fielddata.load('rwth-android', unit='03b3c5a4a5d9a7a3d9829afa52b734c1')
frame.head()
voltage_cell stays between 3.627 and 4.537 (raw data)
voltage_cell stays between 3.627 and 4.537 (raw data). One unit, quick-start slice, one point in every 9 drawn. Plotted data (CSV).

stanford_ev

Feedback control bounds variability in large-scale electrochemical systems

Field data from 1 passenger electric vehicle in United States, released with Lanubile et al., Stanford Digital Repository. The release covers 3.5 unit-years of operation and about 0.091 MWh of battery energy (computed).

No paper. Related: companion paper on the same vehicle, arXiv 2603.29107 (2026)

Loader verified 2026-10-13 313,784 rows, 3 columns in the sample slice

Download

One command (as of October 2026), from Stanford Digital Repository:

python -m fielddata.fetch stanford_ev

Load a first slice

import fielddata
frame = fielddata.load('stanford_ev', session='20210921_234539', signal='V_pack_bms')
frame.head()

No preview: the release's license (CC BY-NC-ND 4.0) does not allow derived files.

xie

Realistic multi-fault diagnostics of millions-scale Li-ion batteries with rapid unsupervised learning

Field data from 271 light electric vehicle packs (country not stated) with LFP cells, released with Xie et al., Cell Reports Physical Science. The release covers 4.8 unit-years of operation.

Loader verified 2026-10-02 28 rows, 28 columns in the sample slice

Download

One command (as of October 2026), from Zenodo:

python -m fielddata.fetch xie

Load a first slice

import fielddata
frame = fielddata.load('xie', unit='0022234cc5964eae8c383cc9032cd51f')
frame.head()
batCoreVoltage1 stays between 3224 and 3389 (raw data)
batCoreVoltage1 stays between 3224 and 3389 (raw data). One unit, quick-start slice. Plotted data (CSV).

zhou2026

Quantifying the impact of cell-to-cell inconsistency on EV battery degradation & utilization

Field data from 3 units in China with NMC, LFP cells, released with Zhou et al., Nature Energy. The release covers 10.4 unit-years of operation and about 0.209 MWh of battery energy (stated).

Loader verified 2026-10-02 255,909 rows, 6 columns in the sample slice

Download

Manual, in a web browser (as of October 2026), from OneDrive. The fetch command prints these steps:

zhou2026 requires a manual download.
1. Open https://1drv.ms/u/c/909aeacce295a32a/IQCsGxZgHovYTqJEXhfqRIIZAWASy12k6Urytil7VPa0LJY?e=ISLuvO
2. Download the data files listed below. Do not download papers.
   - Vehicle data.zip (about 2.2 GB)
3. Save the files under data/Quantifying the impact of cell-to-cell inconsistency on electric vehicle battery degradation and utilization/data
4. Run python -m fielddata.verify zhou2026 to check the saved files.

Load a first slice

import fielddata
frame = fielddata.load('zhou2026', unit='LFP01', part=0, columns=['Timestamp', 'TotalVoltage', 'TotalCurrent', 'SOC', 'MaxCellVoltage', 'MinCellVoltage'])
frame.head()
TotalVoltage stays between 100 and 563.3 (raw data)
TotalVoltage stays between 100 and 563.3 (raw data). One unit, quick-start slice, one point in every 64 drawn. Plotted data (CSV). The authors state no license for this data; the figure and CSV are shown for orientation only.

Found an error, or know a public battery field dataset we missed? Please open an issue: https://github.com/Astrolabe-Analytics/public-battery-field-data/issues

Generated by scripts/make_dashboard.py from the repository; loader status from scripts/dashboard_status.py.