Lab results to Excel, one row per marker
Upload a lab report PDF or a clear photo of one. You get a table with the marker, the value, the unit, the range printed on that report and a flag, ready to open in Excel, Numbers or Google Sheets.
Read lab reports, reconcile markers, view trends
Upload reports
One PDF or photo at a time
No report to hand? Load a sample. Samples are made-up data and use none of your allowance.
Free: 1 file per day, up to 10 pages, no account.
Files over 10 pages are converted up to page 10.
A page code is used only for a file over 10 pages or a second file in a day.
The file is processed in memory and deleted after conversion. How files are handled.
Reconcile markers
Names, units and ranges, matched
After a report is read, this step shows how each printed name and unit was matched. Nothing is changed silently: every conversion shows its factor.
View trends
Merged in this browser
Reports are grouped by initials and birth year so two people are never merged into one series.
Your merged series is stored in this browser only. It is not uploaded, and clearing site data removes it. Download a CSV to keep a copy.
Reports in this browser (0)
No markers yet.
Convert a report, or load the two samples above, then pick a marker from the list. Each marker shows its values over dates, each against the range printed on its own report.
What a lab results spreadsheet should contain
A lab report is made to be read. A spreadsheet is made to be compared. Between the two sits a chore: retyping 30 to 60 results, keeping the unit with each number, and noting the range the lab printed beside it. BioPanel does that step and returns one row per result, with the same columns every time.
Every report gives the same eleven columns in the same order, so files from different labs and different years can be stacked. Nothing is guessed to make a row look tidy: a name BioPanel does not recognise keeps the name as printed, and a range it cannot read as a single interval is kept as text.
BioPanel organises results. It does not say what a value means, it is not medical advice, and every range and flag comes from the report you upload.
- date: the collection date, written YYYY-MM-DD.
- marker_normalised: one name per marker, for example LDL-C, so spellings from different labs line up.
- marker_as_printed: the name exactly as the lab wrote it.
- value: the result as printed, including signs such as < and >, with a dot as the decimal separator.
- unit: the unit as printed, with the spelling tidied (mg/dl becomes mg/dL).
- range_low and range_high: the bounds of the printed range when it is a single interval.
- range_text: the range exactly as printed.
- lab_flag: the lab's own flag, shortened to H, L, HH, LL, A or N, or the printed text if it is something else.
- computed_flag: high, low, abnormal or in range, from comparing the value with the printed range. Blank when no fair comparison was possible.
- lab: the name of the lab, when the report prints one.
From report to spreadsheet
Five steps, from file to spreadsheet.
Choose the report file
Pick a PDF or a clear photo of one lab report. Free use covers 1 file per day, up to 10 pages, with no account.
Wait for the read
Most short reports come back quickly. Scans and long files can take up to a minute. Errors are shown in plain words next to the upload box, never hidden.
Check the rows against the original
Look over the status line and any warnings, then compare a few values with the report. Scans and photos can be misread, and an unusual layout can shift a column.
Download the CSV or JSON
The CSV has the eleven fixed columns. The JSON carries the same rows plus the report details and the warnings.
Open it in Excel
A CSV opens by double-click in Excel, Numbers and Google Sheets. The file starts with a byte-order mark, so symbols such as µ and ≥ display correctly.
Typing it in, a generic PDF-to-Excel converter, or BioPanel
What happens to one lab report in each route.
| What is compared | Spreadsheet by hand | Generic PDF-to-Excel | BioPanel |
|---|---|---|---|
| Getting the numbers in | Retype every result and check each one twice. | Upload, then clean the output by hand. | Upload. One row per result comes back. |
| Columns | Whatever you set up, and they drift between reports. | Whatever the page layout happens to produce. | Eleven fixed columns, the same order every time. |
| Reference range | Often skipped, or typed from memory. | Copied as loose text that is hard to compare. | Kept as printed, with low and high split out when it is a single interval. |
| Flags | You add them, with your own idea of the cut-off. | None, or the lab's mark in a stray cell. | The lab's own flag in one column, and a flag computed from the printed range in another. |
| Marker names | Whatever you typed that day. | As printed, so spellings differ between labs. | One name per recognised marker, with the printed name kept beside it. |
| Units | You type them, and may drop them. | Often in a separate column from the number. | A unit column on every row, spelling tidied, never converted in this file. |
| Patient details | Whatever you type. | The whole page, name and IDs included. | Initials and birth year only. IDs are never returned. |
| Interpretation | Yours, or your clinician's. | None. | None. Organisation only. |
Questions people ask
Can I convert a lab report PDF to Excel for free?
Yes. Free use is 1 file per day, up to 10 pages, with no account. The result is a CSV that opens in Excel, Numbers and Google Sheets. If you need more files or longer files, the Personal plan is $9 per month.
Which columns does the file have?
date, marker_normalised, marker_as_printed, value, unit, range_low, range_high, range_text, lab_flag, computed_flag and lab. The order never changes, so files from different reports can be stacked in one sheet.
What is the difference between lab_flag and computed_flag?
lab_flag is the mark the lab printed, such as H or L, copied across. computed_flag is BioPanel's own comparison of the value with the range printed on the same report. They are kept apart so you can see when they disagree. Neither says what a result means.
Why is computed_flag blank on some rows?
It is left blank when a fair comparison is not possible: no range was printed, the range has several bands or separate age and sex groups, or the result is text such as a titer or a description. Blank means not compared, not normal.
Does it work on a scanned PDF or a phone photo?
Yes, if the text is legible. Scans are read by optical character recognition, which can misread a digit, so the page shows a warning when a report came from a scan. Check the values against the original before relying on them.
What happens to a marker BioPanel does not recognise?
It is still returned. The name stays as printed and recognised is false in the JSON. Only markers on the list, more than 70 common ones, are given a single name across labs.
Will symbols like µ and ≥ show correctly in Excel?
Yes. The downloaded CSV starts with a byte-order mark, which tells Excel to read the file as UTF-8. If you open a CSV from another source and see odd characters, import it with UTF-8 selected.
What about my name and date of birth?
They are cut down to initials and birth year before anything is returned. Full names, full dates of birth and ID numbers are not passed back, not written to the CSV and not stored. The report date and the lab name are kept, because the table needs them.
What if a report spans several pages?
Results that continue on the next page are joined into the same table. Free use converts the first 10 pages of a file, and a notice above the results says when a file was cut short. A portal export that bundles many years into one long PDF needs a page code, which converts up to 150 pages.
Can I convert many reports into one sheet?
Upload them one at a time. Each one is added to a series kept in your browser, and the merged marker-by-date table can be downloaded as a wide or a long CSV. See the page on comparing lab results over time.