Blood test PDFs from every lab, in one table over time
A folder of lab reports becomes one marker-by-date table. Units are reconciled across US, hospital and European labs, and values outside the range printed on each report are flagged.
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.
See the report text for the US-style panel, September 2025
Harbor Clinical Laboratories Patient: DOE, JAMIE R DOB: 03/14/1984 Gender: F Patient ID: 4412907 Specimen ID: HB-250918-0417 Collected: 09/18/2025 07:42 PDT Received: 09/18/2025 Reported: 09/19/2025 ## COMPREHENSIVE METABOLIC PANEL | Test | Result | Flag | Units | Reference Range | Lab | |---|---|---|---|---|---| | GLUCOSE | 92 | | mg/dL | 65-99 | TP | | UREA NITROGEN (BUN) | 14 | | mg/dL | 7-25 | TP | | CREATININE | 0.82 | | mg/dL | 0.50-1.03 | TP | | eGFR | 94 | | mL/min/1.73m2 | > OR = 60 | TP | | SODIUM | 140 | | mmol/L | 135-146 | TP | | POTASSIUM | 4.3 | | mmol/L | 3.5-5.3 | TP | | CHLORIDE | 103 | | mmol/L | 98-110 | TP | | CARBON DIOXIDE | 26 | | mmol/L | 20-32 | TP | | CALCIUM | 9.4 | | mg/dL | 8.6-10.2 | TP | | PROTEIN, TOTAL | 7.0 | | g/dL | 6.1-8.1 | TP | | ALBUMIN | 4.5 | | g/dL | 3.6-5.1 | TP | | GLOBULIN | 2.5 | | g/dL (calc) | 1.9-3.7 | TP | | ALBUMIN/GLOBULIN RATIO | 1.8 | | (calc) | 1.0-2.5 | TP | | BILIRUBIN, TOTAL | 0.6 | | mg/dL | 0.2-1.2 | TP | | ALKALINE PHOSPHATASE | 58 | | U/L | 31-125 | TP | | AST | 21 | | U/L | 10-35 | TP | | ALT | 17 | | U/L | 6-29 | TP | ## LIPID PANEL | Test | Result | Flag | Units | Reference Range | Lab | |---|---|---|---|---|---| | CHOLESTEROL, TOTAL | 198 | | mg/dL | <200 | TP | | HDL CHOLESTEROL | 62 | | mg/dL | > OR = 50 | TP | | TRIGLYCERIDES | 84 | | mg/dL | <150 | TP | | LDL-CHOLESTEROL | 119 | H | mg/dL (calc) | <100 | TP | | CHOL/HDLC RATIO | 3.2 | | calc | <5.0 | TP | ## HEMOGLOBIN A1c, VITAMIN D, THYROID, IRON | Test | Result | Flag | Units | Reference Range | Lab | |---|---|---|---|---|---| | HEMOGLOBIN A1c | 5.3 | | % of total Hgb | <5.7 | TP | | VITAMIN D, 25-OH, TOTAL | 31 | | ng/mL | 30-100 | TP | | TSH | 1.9 | | mIU/L | 0.40-4.50 | TP | | FERRITIN | 58 | | ng/mL | 16-232 | TP | ## CBC (INCLUDES DIFF/PLT) | Test | Result | Flag | Units | Reference Range | Lab | |---|---|---|---|---|---| | WHITE BLOOD CELL COUNT | 5.6 | | Thousand/uL | 3.8-10.8 | TP | | RED BLOOD CELL COUNT | 4.51 | | Million/uL | 3.80-5.10 | TP | | HEMOGLOBIN | 13.6 | | g/dL | 11.7-15.5 | TP | | HEMATOCRIT | 41.2 | | % | 35.0-45.0 | TP | | MCV | 91.4 | | fL | 80.0-100.0 | TP | | MCH | 30.2 | | pg | 27.0-33.0 | TP | | MCHC | 33.0 | | g/dL | 32.0-36.0 | TP | | RDW | 12.8 | | % | 11.0-15.0 | TP | | PLATELET COUNT | 262 | | Thousand/uL | 140-400 | TP | | ABSOLUTE NEUTROPHILS | 3192 | | cells/uL | 1500-7800 | TP | | ABSOLUTE LYMPHOCYTES | 1736 | | cells/uL | 850-3900 | TP | Please note: this is a synthetic sample report written for demonstration.
See the report text for the European panel, March 2026
Nordlicht Medical Laboratory Laboratory report Patient: Doe, Jamie R. Date of birth: 14.03.1984 Sex: F Patient number: 88-20931 Sample ID: 26-031902-114 Collected: 19.03.2026 08:05 Reported: 19.03.2026 15:40 ## Clinical chemistry | Analyte | Result | Unit | Reference interval | Flag | |---|---|---|---|---| | Glucose (fasting) | 5,2 | mmol/L | 3,9 - 5,5 | | | Creatinine | 74 | µmol/L | 45 - 84 | | | eGFR (CKD-EPI) | 98 | mL/min/1.73 m² | > 60 | | | Urea | 4,1 | mmol/L | 2,1 - 7,1 | | | Sodium | 140 | mmol/L | 135 - 145 | | | Potassium | 4,2 | mmol/L | 3,5 - 5,0 | | | Calcium | 2,38 | mmol/L | 2,15 - 2,55 | | | Total protein | 71 | g/L | 64 - 83 | | | Albumin | 45 | g/L | 35 - 52 | | | Bilirubin, total | 9 | µmol/L | < 21 | | | ALT | 18 | U/L | < 35 | | | AST | 22 | U/L | < 35 | | | GGT | 14 | U/L | < 38 | | | Alkaline phosphatase | 55 | U/L | 35 - 105 | | ## Lipids | Analyte | Result | Unit | Reference interval | Flag | |---|---|---|---|---| | Cholesterol, total | 4,9 | mmol/L | < 5,0 | | | HDL cholesterol | 1,6 | mmol/L | > 1,0 | | | LDL cholesterol (calculated) | 2,9 | mmol/L | < 3,0 | | | Triglycerides | 0,9 | mmol/L | < 1,7 | | ## Special chemistry | Analyte | Result | Unit | Reference interval | Flag | |---|---|---|---|---| | HbA1c (IFCC) | 34 | mmol/mol | < 39 | | | 25-OH vitamin D | 46 | nmol/L | 50 - 125 | L | | TSH | 1,8 | mIU/L | 0,27 - 4,20 | | | Ferritin | 64 | µg/L | 13 - 150 | | ## Haematology | Analyte | Result | Unit | Reference interval | Flag | |---|---|---|---|---| | Leukocytes | 5,4 | 10^9/L | 3,9 - 10,2 | | | Erythrocytes | 4,48 | 10^12/L | 3,9 - 5,2 | | | Haemoglobin | 135 | g/L | 117 - 155 | | | Haematocrit | 0,40 | L/L | 0,35 - 0,45 | | | MCV | 89 | fL | 80 - 100 | | | MCH | 30,1 | pg | 27,0 - 33,0 | | | MCHC | 338 | g/L | 320 - 360 | | | RDW-CV | 12,9 | % | 11,0 - 15,0 | | | Platelets | 255 | 10^9/L | 150 - 400 | | | Neutrophils, absolute | 3,10 | 10^9/L | 1,50 - 7,70 | | | Lymphocytes, absolute | 1,80 | 10^9/L | 1,00 - 4,00 | | Synthetic sample report written for demonstration.
What BioPanel does
BioPanel reads a lab report PDF or photo and writes each result as a row: the date, the marker, the value, the unit, the reference range printed on that report, the lab's own flag, and a flag BioPanel computes by comparing the value with that printed range.
Add more reports and the rows merge, in your browser, into one time series per marker. When two reports use different units, such as mg/dL and mmol/L, BioPanel converts only where the conversion is exact and shows the factor. Anything else stays in the unit printed and is marked as mixed.
It is built for people who follow their own blood work over years, and for the clinics that review those panels. It organises results. It does not interpret them, it is not medical advice, and every range comes from the report itself.
How it works
Upload a report
Choose a PDF or a clear photo of one lab report. Free use covers 1 file per day, up to 10 pages, with no account.
BioPanel reads the tables
The report date, the lab name and the result tables are read. Patient details are cut down to initials and birth year before anything comes back to your browser.
Markers and units are reconciled
Printed names are matched to one marker name. Units are converted only where the factor is exact, and the factor is shown next to the value.
The report joins your series
The rows are added to a time series kept in this browser. Add the next report and the dates line up in one table.
Review and export
Scan the marker list, read the values over dates, and download the results CSV for one report or the merged wide or long CSV.
Spreadsheet by hand, generic PDF-to-Excel, or BioPanel
What changes when the same reports go through each route.
| What is compared | Spreadsheet by hand | Generic PDF-to-Excel | BioPanel |
|---|---|---|---|
| Entering one report | Retype 30 to 60 values and check each one. | Upload, then clean up the output. | Upload. Rows come back with value, unit, range and flags. |
| Marker names | You pick names and keep them consistent. | Names stay as printed, so 'Cholesterol, Total' and 'Total Cholesterol' stay separate. | More than 70 common markers map to one name. Others keep the printed name. |
| Units across labs | You convert and can slip. | Left as printed, with mixes unflagged. | Converted only when exact, with the factor shown. Other mixes are marked. |
| Reference ranges | Typed in or skipped. | Copied as plain text. | Parsed from the report and compared with each value. The lab's own flag stays in its own column. |
| Several reports over time | You build the grid and keep it aligned. | One file per report, merged by you. | Merged in your browser into a marker-by-date table. |
| 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. |
| Cost | Your time. | Varies by tool. | Free for 1 file per day. Paid plans from $9 per month. |
Questions people ask
What is BioPanel?
BioPanel turns lab report PDFs and photos into a table: one row per result, and one marker-by-date table across reports. It matches marker names, reconciles units where the conversion is exact, and flags values that fall outside the range printed on the report.
Does BioPanel tell me whether a result is good or bad?
No. BioPanel organises results and does not interpret them. It compares each value with the range printed on the same report and shows the lab's own flag. What a result means for you is a question for a clinician. This is not medical advice.
Where do the reference ranges come from?
From your report. BioPanel reads the range printed beside each result and uses only that. If a range has several bands, or separate age or sex groups, it is not compared and the computed flag is left blank. The site never supplies its own ranges.
Which labs and layouts work?
Reports that print results in a table with a test name, a result, usually a unit and a reference range, such as US commercial lab reports, hospital portal printouts and European lab reports. Layouts vary, so check the rows against the original, especially for scans and photos.
How are units reconciled?
Only where the conversion is exact and unambiguous: glucose, cholesterol fractions, triglycerides, creatinine and 25-hydroxy vitamin D between mass and molar units, plus unit spellings that mean the same thing, such as ng/mL and µg/L. The factor is shown. Everything else is kept as printed and marked as mixed.
What happens to my name and date of birth?
They are reduced to initials and birth year before anything is returned. Full names, full dates of birth and ID numbers are not passed back to your browser, not written to the CSV and not stored.
Where is my merged series stored?
Only in your browser's local storage on this device. It is not uploaded. Clearing site data removes it, so download a CSV if you want a copy. Different browsers and devices keep separate series.
How much is free?
Free use is 1 file per day, up to 10 pages, with no account. Personal is $9 per month for 30 reports per month and files up to 150 pages. Clinic is $59 per month for 3 seats and 300 reports per month. A file over 10 pages is converted up to page 10; a page code converts the whole file, up to 150 pages.
Can a clinic use it for patients?
A clinic can use it to organise panels it is allowed to handle, with each person's permission. BioPanel is not a HIPAA covered entity and is not for clinical record-keeping. Treat the output as a working copy and keep the original reports as the record.
What if a value is wrong?
Check it against the original report. Scans and photos can be misread, and unusual layouts can shift a column. BioPanel shows warnings when something looks off, but it cannot promise every value is right. The original report is always the record.
Does it open in Excel?
Yes. The downloads are CSV files, which open directly in Excel, Numbers and Google Sheets. The merged table comes as a wide CSV with markers down the side and dates across, and as a long CSV with one row per marker and date.