PeakWright

See your .uv DAD data on your own laptop.

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.

Open the viewer Works on any laptop with a browser.

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.

● Live Opened in this tab
The numbers are checked, not claimed. Across 11 real ChemStation files, all 1,487,470 values match the published output of rainbow, an independent open-source reader, with a difference of zero.
01 Works with

Agilent ChemStation and OpenLab

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.

ExtensionFile typeDetectors seenBody encodingStatus
.ch30UV (DAD)Delta-encoded int, big-endianVerified
.ch130UV (DAD), ELSD and CAD (ADC)Delta-encoded int, big-endianVerified
.ch179FID, UV written by OpenLabfloat64, little-endianVerified
.uv31DAD spectraDelta-encoded int, little-endianVerified
.uv131DAD spectraDelta-encoded int or float64Verified

What you get

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.

More formats

Working on more instrument formats. Tell us which one you need and it moves up the order.

02 Sample files

Three real instrument files

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.

03 Why we built it

Your own run should not be stuck on one PC.

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.

The .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.

What this does

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.

What it costs

Nothing. No account, no paid tier behind a wall, and no analytics on your files, because your files are never sent anywhere.

Where the format came from

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.

04 Questions
Do my files get uploaded?

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.

Are the numbers right?

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.

Which instruments does this cover?

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.

Can I use this for a regulated result?

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.

What is coming next?

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.

Will it open a big file?

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.

05 Request a format

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.

Opens your mail client

Open a file now.

Nine sample files are built into the viewer, including the three above, if you want to try it before dropping your own.

Open the viewer