PeakWright opens Agilent ChemStation .ch and .uv files in
your browser. Drag one out of a .D folder and the chromatogram is on
screen. A .uv file holds the whole diode-array scan, so you pick the
wavelength yourself. Every other way to open one wants a paid license or a Python
install. This is a browser tab.
Your file never leaves this tab. There is no upload, no account and no server. The file is read by JavaScript on your own machine. Confidential client samples and unreleased method data stay where they are, so there is nothing for IT to approve and no vendor to review. Load the page once and it keeps working with the network off.
Every row below was tested on a real file. If a file is not on this list, PeakWright names the type it found and stops, instead of drawing something wrong.
| Extension | File type | Detectors seen | Body encoding | Status |
|---|---|---|---|---|
.ch | 30 | UV (DAD) | Delta-encoded int, big-endian | Verified |
.ch | 130 | UV (DAD), ELSD and CAD (ADC) | Delta-encoded int, big-endian | Verified |
.ch | 179 | FID, UV written by OpenLab | float64, little-endian | Verified |
.uv | 31 | DAD spectra | Delta-encoded int, little-endian | Verified |
.uv | 131 | DAD spectra | Delta-encoded int or float64 | Verified |
A .uv file holds the whole diode-array scan. You pick the wavelength
from a menu and step through it with the arrow keys. That is the part other free
tools leave out. A .ch file carries one signal, so it opens straight
to the trace.
Either way you get the full trace, with the retention time axis and the units from the file header. Drag or scroll to zoom. Hover to read out the nearest point. Save a PNG or a CSV. Open several files and they share one chart.
The header panel shows what the instrument wrote down: sample name, method, acquisition date, instrument model, signal description and units.
Working on more instrument formats. Tell us which one you need and it moves up the order.
Every chart below was drawn in your browser from the file linked under it. None of
them are screenshots. Download the .D folder, open it in whatever you
normally use, and compare.
These are unchanged test files from
rainbow, an
open-source chromatography reader. We host the data files and credit the project.
None of rainbow's code is used or shipped here; its published output is what this
parser is checked against. Each download is the whole .D folder,
so the other signals from the same run come with it.
The software that opens a .ch or .uv file is usually
licensed to the instrument PC. The data is yours, but the only screen that shows it
sits in the instrument room, and someone else is running a sequence on it.
So people wait. A student is told the file cannot be read off the instrument. A
reviewer on another floor gets a screenshot instead of the data. Someone gets a
.D folder back from a contract lab and owns nothing that opens it.
License quotes people post in public forums run into the thousands of dollars, for
the job of looking at a file.
.uv gap
A .ch file has other free options. A .uv file mostly does
not. OpenChrom does not list .uv at all. The one other browser viewer
that takes a .D folder reads GC/MS data.ms only, so no LC,
no UV, no FID. Agilent's own AIA/CDF export refuses to write 3D spectra, and you need
the licensed software to run that export in the first place.
PeakWright does the part people need most often: look at it. It reads the file, plots it, and gets out of the way. It does not integrate peaks, it does not sign anything, and it is not a validated data system. It is what you reach for before you need one.
Nothing. No account, no paid tier behind a wall, and no analytics on your files, because your files are never sent anywhere.
Agilent has never published the layout, but the format is no longer a secret. Open source got there first: rainbow in Python and chromConverter in R both read these files well, and this project owes them. Our parser is written from public format notes plus four offsets measured from real files, then checked value by value against rainbow's published output. The README lists every offset and where it came from.
What is new here is not the decoding. It is that a chemist holding a .D
folder cannot run a Python library or an R package on a locked-down lab laptop. A
browser tab needs no install, no license and no IT ticket.
No. The file is read with the browser's FileReader and decoded by
JavaScript in your tab. There is no server to send it to. Watch the network panel
stay empty, or turn the network off after the page loads and keep working.
Yes, and it is checked rather than asserted. Every value the parser produces is
compared with the published output of rainbow, an independent open-source reader, over
11 real ChemStation files covering every type in the table above. All 1,487,470 values match, and
they match exactly: the largest difference is zero, not merely inside a tolerance.
Retention times match the same way. The check runs with node test.mjs
and fails if any file drifts.
Agilent only, today. The LC side (.ch and .uv from DAD, VWD,
MWD, ELSD and CAD) and GC FID .ch files, from legacy ChemStation through
files written by OpenLab. Working on more instrument formats, and
requests set the order.
Treat it as a viewer, not a data system. There is no audit trail, no electronic signature and no validation package, so it should not be the record you report from. Use it to look, to check, and to send someone a picture.
In rough order: Agilent .ms mass spectra, dropping a whole .D
folder, a time against wavelength heat map for .uv files, then Waters
.raw and Shimadzu .lcd. Peak integration sits far down the
list on purpose: it is the part that has to be validated, and that is a different
product. The order follows what people ask for, so
asking moves it.
A .uv file is decoded into memory in one pass, so the ceiling is your
tab's memory, not a set limit. An 8 MB .uv holds about a million values
and opens without trouble. A multi-hour DAD run is the case most likely to feel slow.
Formats get added in the order people are stuck on them. Tell us the vendor, the extension and the instrument that wrote it. A sample file helps more than anything else.
This opens your own mail client with the message filled in. Nothing is sent from this page and nothing is stored here.
Nine sample files are built into the viewer, including the three above, if you want to try it before dropping your own.