Convert HDF5 to CSV online
Any table of an .h5 or NetCDF-4 file as a CSV, in your browser. Nothing is uploaded.
Open an HDF5 or NetCDF-4 file to convert it to CSV
Drop it here or choose a file. Pick a table, then download it as a CSV with its time column.
The sample: a month of made-up UK weather in three groups at three rates, and a table of four stations.
Tip: drop several files to compare them.
Your file never leaves your device. It is read and charted by your browser. Nothing is uploaded.
Opens on the table, one table at a time
- View
- The table, every row of the first group; the chart is one click away.
- Tables
- One per group, per 2-D dataset and per record array, in the menu of the file’s line.
- Download
- “Download as CSV” over the table: the time column and every column of the table shown.
- Digits
- 15 significant digits; “Full precision (17 digits)” under “Do more” writes every digit.
At a glance
- What you get
- A CSV file with a header row, comma separated, UTF-8: the time column and every column of the table you pick, every row.
- Tables
- One per group (its datasets of one length), per 2-D dataset and per record array, in the menu of the file’s line: pick one, download it, then the next.
- Time column
- First: the dimension scale (NetCDF’s coordinate variable), with CF times such as “hours since 2026-01-01” as dates and times in UTC; else a dataset named like a time.
- Values
- Packed values unpacked, fill values as empty cells, numbers with 15 significant digits as Excel writes them (every digit on request), text as it is.
- Not kept
- The groups, attributes and data types: each table is a CSV of its own, and units show in the table and in Variables. Keep the original file.
- Processing
- Runs in your browser. The file is never uploaded, and you need no Python, MATLAB or desktop viewer.
- Price
- Free. No account or sign-up.
How to convert HDF5 to CSV
- Open your .h5 or .nc file. Choose it, or drop it on the converter at the top of this page. It opens on the table, on its first group. No file to hand? Click “Try a sample HDF5 file”.
- Pick the table. The menu in the file’s line lists the file’s tables: one per group, per 2-D dataset and per record array. “Variables” shows every group, dataset and attribute first, if you want to check.
- Download the CSV. Click “Download as CSV” over the table. The CSV holds the table’s time column and every column, every row; for another table, pick it and download again.
A worked example you can check
“Try a sample HDF5 file” opens a month of made-up UK weather, written with h5py: four tables, each against its time.
- /hourly (744 rows, 5 columns and the time): temperatures in London, Leeds and York, London’s humidity, and its pressure stored packed, every hour from 1 January 2026.
- /rain_gauge (4,464 rows, 2 columns and the time): rain in London and Leeds every ten minutes, on a time of its own.
- /daily (31 rows, 4 columns and the time): the day’s highest and lowest temperature, its rain and the weather in words.
- /stations/wind_speed (744 rows, 4 columns and the time): one 2-D dataset of 744 hours × 4 stations: a column per station, named by its station dimension, against the hourly time.
It opens on /hourly. Click Download as CSV, and the CSV starts like this: the time, stored as “hours since 2026-01-01 00:00:00”, as dates and times in UTC, then each dataset of the group.
time,London_Temperature,Leeds_Temperature,York_Temperature,London_Humidity,London_Pressure
2026-01-01 00:00,5.44,3.32,2.79,93.1,1013
2026-01-01 01:00,4.99,2.93,2.42,92.8,1011.8
2026-01-01 02:00,4.74,2.72,2.2,88,1012.6
2026-01-01 03:00,4.7,2.66,2.06,92.7,1012.3
2026-01-01 04:00,4.74,2.77,2.18,93.9,1011.4London_Pressure is stored as whole numbers with a scale_factor of 0.1 and an add_offset of 1000, so the CSV has 1013 where the file has 130. Two hours hold its _FillValue, −32768, while the barometer was serviced: in the CSV they are empty cells, not −2276.8 (rows 200 to 203):
2026-01-09 07:00,5.84,4.26,2.35,87.3,1013.9
2026-01-09 08:00,6.58,4.9,2.99,87.9,
2026-01-09 09:00,7.32,5.53,3.67,87,
2026-01-09 10:00,8.15,6.25,4.32,81.1,1013.7Pick /daily in the file’s line and download again: its times are whole days, so the time column holds dates, and the weather in words is a column of text.
time,London_Max_Temperature,London_Min_Temperature,London_Rain_Total,London_Conditions
2026-01-01,10.54,4.7,0,Cloudy
2026-01-02,10.77,4.85,10.7,Heavy rainAnd /stations/wind_speed, one 2-D dataset of 744 hours by 4 stations, becomes a column per station, named by its station dimension:
time,London,Manchester,Leeds,Glasgow
2026-01-01 00:00,2.8,4.2,4.9,4.7
2026-01-01 01:00,3.8,3.9,4,5.8Checked against h5py, the Python library for HDF5 files: a script reads the same datasets with h5py alone, unpacks them and writes them as this converter does, and a test opens the sample on every change to the site and compares its CSV with those lines (run on 2026-10-09 with h5py 3.16.0, HDF5 2.0.0, NumPy 2.5.3, Python 3.12.15). Download the sample (.h5, 74 KB) to try it elsewhere too: the same sample HDF5 file with groups and datasets is free to reuse under CC0.
What becomes CSV
Each group becomes a table against its time
An HDF5 file holds groups of datasets. The converter makes each group a table: its 1-D datasets of the same length become columns, after the time column, numbers first, then true or false as 1 and 0, then text, in the file’s order. Datasets of another length in the same group make a table of their own, named with their row count. Pick the table in the menu of the file’s line: “Download as CSV” writes that table, every column and row.
The time column
It is the dimension scale attached to the datasets (in a NetCDF-4 file, the coordinate variable of their dimension), else a dataset of the group named like a time (time, t, timestamp) whose values increase. CF units such as “hours since 2026-01-01 00:00:00” make it dates and times in UTC: to the minute (2026-01-01 00:00), with seconds or milliseconds when the times have them, and dates alone (2026-01-01) when every time is a whole day. Times on another calendar than the standard one, such as noleap or 360_day, stay numbers. A table without a time axis has no time column, and its rows are in the file’s order.
Packed values and fill values
Packed datasets, whole numbers with a scale_factor and an add_offset, are unpacked: each value is the stored one times scale_factor plus add_offset. Values equal to _FillValue or missing_value become empty cells, which Excel shows as blank and pandas and MATLAB’s readtable read as missing (NaN).
2-D datasets and record arrays
A 2-D dataset becomes a table of its own: its samples run along the dimension with a time axis (else the longer one), and each step of the other dimension is a column, named by a dimension scale of text or a columns attribute, up to 1,000 columns. A record array (a compound dataset) becomes a table of its members.
Number precision
Numbers are written with 15 significant digits, the precision Excel and MATLAB’s writetable write, so 0.1 stays 0.1. A float32 dataset is written in its own shortest form: 2.8, not 2.79999995231628. Tick Full precision (17 digits) under “Do more” to write every digit of each number.
What a CSV can’t keep
A CSV is one flat table of text, so some of an HDF5 file stays behind: the hierarchy (each table downloads as a CSV of its own), the attributes (units, long names and the file’s own notes; the units show next to each column in the table and in Variables) and the data types (float32, int16 and float64 all become decimal text). Datasets of three or more dimensions, single values and references aren’t converted. Keep the original file: the CSV is a copy for Excel, pandas or R, not a replacement.
NetCDF-4 .nc files too (not NetCDF-3)
A NetCDF-4 .nc file is an HDF5 file underneath, so it converts the same way: the variables of each dimension make a table, the coordinate variable of that dimension is the time column with its CF times as dates and times, packed variables are unpacked, fill values are empty cells, and a 2-D variable over a station dimension gets the station names as its column names.
NetCDF-3 files (the classic format and its 64-bit variants) are a different format and aren’t read: the converter says so. The netCDF tools’ nccopy turns one into NetCDF-4 (nccopy -k nc4 old.nc new.nc); open that file.
Other ways to convert HDF5 to CSV
- Python: h5py reads a dataset (
f["hourly/London_Temperature"][()]) and pandas’to_csvwrites a table of them; unpacking packed values, blanking fill values and turning CF times into dates are up to you. xarray does those for files that follow the netCDF conventions:xr.open_dataset("file.nc").to_dataframe().to_csv("file.csv"). - MATLAB: h5read or ncread reads a dataset, and writetable writes the CSV.
The converter on this page needs none of them. To look inside a file first, open it in the HDF5 viewer; for MATLAB files, use MAT to CSV, and for LabVIEW files TDMS to CSV.
Private by design: nothing is uploaded
Measurement and simulation files often hold data that must not leave the lab. This converter reads your .h5 file and writes the CSV in your browser, so the file and its name never leave your device, and no upload limit applies. Read the privacy statement for details.
Next steps with your data
- HDF5 viewerEvery group, dataset and attribute, each table plotted against its time.
- MAT to CSVThe signals of a MATLAB .mat file, v7.3 (HDF5) too, as a CSV.
- TDMS to CSVAny group of an NI TDMS file as a CSV with its time column, one table per time base.
- Large CSV viewerScroll, sort and filter the CSV, millions of rows too.
- CSV plotterPlot the datasets, zoom in and read their statistics.
Frequently asked questions
How do I convert an h5 file to CSV?
Open the .h5 file in the converter at the top of this page, pick a table in the menu of the file’s line and click “Download as CSV”. Your browser reads the file and writes the CSV on your own device: no Python, MATLAB or desktop viewer, and nothing to install.
Can I open an HDF5 file in Excel?
Not as it is: Excel doesn’t open .h5 files itself. Convert the table you need to CSV here, then open the CSV in Excel. Excel stops at 1,048,576 rows, so for a longer table open the file in the HDF5 viewer instead, which has no fixed row limit, or split the CSV into Excel-sized parts.
Is my HDF5 file uploaded?
No. The file is read and converted by your browser on your own device; neither the file nor its name is sent anywhere, so there is no upload and no upload size limit. That makes it safe for confidential measurement and simulation data.
What about 3-D datasets?
Datasets of three or more dimensions, such as a map over time or a stack of images, aren’t converted yet: they are listed in Variables with their shape and why, and the 1-D and 2-D datasets of the file convert as usual. A CSV is one flat table, so save a 2-D slice of such a dataset to a dataset of its own (with h5py, for example) and convert that.
Can I convert a NetCDF-3 file?
Not yet. NetCDF-3 (classic) files aren’t HDF5 files underneath, so the converter says so when you open one. NetCDF-4 files convert as they are. The netCDF tools’ nccopy turns a NetCDF-3 file into NetCDF-4 (nccopy -k nc4 old.nc new.nc); open that one.
Related tools and guides
- CSV plotterOpen a CSV, Excel, TXT, JSON, MATLAB, Parquet, HDF5 or LabVIEW TDMS file with millions of rows and plot it in several linked charts, with zoom and statistics. Works today.
- Large CSV viewerOpen a CSV with millions of rows in your browser: scroll every row, see each column’s type and statistics, chart any column. Works today.
- MATLAB .mat file viewerOpen v4 to v7.3 .mat files without MATLAB and plot any signal. Works today.
- Parquet viewerOpen large .parquet files, see the schema at once and plot millions of rows, without Python. Works today.
- TDMS viewerOpen .tdms files from LabVIEW, DIAdem and DAQmx loggers: every group, channel and property, each channel plotted against its time. Works today.
- HDF5 viewerOpen .h5, .hdf5 and NetCDF-4 .nc files: every group, dataset and attribute, each group’s datasets plotted against their time. Works today.
- MAT to CSVConvert the signals of a .mat file, v4 to v7.3, to a CSV for Excel or Python, without MATLAB. Works today.
- Parquet to CSVConvert a .parquet file to CSV in your browser, with the columns you pick. Works today.
- TDMS to CSVConvert the channels of a .tdms file to CSV, a group at a time, with its time column, without LabVIEW or Excel add-ins. Works today.
- Excel to CSVConvert any sheet of an .xlsx or .xlsm workbook to CSV, with the saved results of formulas, real dates and 15 significant digits. Works today.
- JSON to CSVConvert JSON and JSON Lines files to CSV: nested fields become columns named by their path, arrays stay as JSON text. Works today.
- CSV to MATConvert a CSV, Excel, JSON or Parquet file to a MATLAB .mat file: a field per column, with names and units, every row. Works today.
- Merge CSV filesAppend many CSV files into one, even with different columns or separators. Works today.
- Split CSV filesSplit a CSV too big for Excel into parts of 1,000,000 rows, parts of a size you choose, or one file per value of a column. Works today.
- CSV row counterCount the lines in a CSV, TSV or TXT file of any size. Works today.
- CSV statisticsCount, missing values, min, max, mean, standard deviation, RMS and peak to peak of each number column, for the whole file or the rows you zoom into. Works today.
- CSV histogramA histogram of any number column, with automatic bins or 10 to 200 of them, and each bin’s count as a table. Works today.
- CSV too large for Excel?Open every row of a CSV beyond Excel’s 1,048,576-row limit, or work around the limit in six other ways.
- FFT and PSD from a CSVTurn a signal column into an FFT spectrum or a PSD with Grms, with results checked against SciPy. Works today.
- PSD calculatorTurn a vibration column into a power spectral density (Welch) in g²/Hz, with the Grms of any band and a dB view. Works today.
- Spectrogram from CSVSee how the frequencies of a measured signal change over time, as a heat map in dB, with the window and range you choose. Works today.
- FRF and coherencePick an input and an output column and get the frequency response (H1, H2, magnitude and phase) and their coherence. Works today.
- The MegaRows toolboxWhat works today and what is coming next, and why nothing is ever uploaded.
Coming soon to MegaRows: CSV to Excel and PDF reports · Compare CSV versions.
MegaRows processes files locally in your browser. Nothing is uploaded, not even the file name.