Deep lab analysis

Every blood test you've ever taken, in one timeline you own.

Your results are scattered across patient portals, a half-updated spreadsheet, and apps that either upload everything to a server or only exist to sell you the next test. Markerlog pulls them into one timeline you own, with the depth those apps charge a membership for: 417 biomarkers on clinical-to-optimal ranges, your biological age, and whether a change is real or just lab noise.

Nothing to install. It opens instantly, already full of example data to click through.

  • Free to use
  • No account
  • Works offline
Made for

people who track their own labs: optimizing for longevity, managing a condition, or just tired of losing results in a portal.

No tracking, and you can verify it

No analytics, no third-party scripts. Turn off your Wi-Fi and it still works. Or open your browser's network tab and watch: the only requests are the ones you switch on.

The real thing

Your whole panel, at a glance.

Each new draw opens with a briefing: what changed, which panels moved, and what needs attention. Below it, every marker is a card with its reference range, trend, and status, colored from in-range to flagged. Sort, filter to what's out of range, switch to a dense table, or open any one to go deep. This is the live app, loaded with example data.

The Markerlog dashboard: a Latest results briefing counts 8 markers out of range, 7 worsened, 9 improved, and 7 back in range, with per-panel trend chips, needs-attention values, and recheck suggestions. Biomarker cards follow, each with its value, plain-language subtitle, sparkline, reference-range gauge, and status.

Open any card and its full history opens up: every reading on its reference range, with the trend fitted across them.

LDL Cholesterol
98 mg/dL −27% · 14 mo
1309970 MarMayJulSepNovJan
optimal < 70 borderline 70–99 high > 99

See the live demo

How it works

From a pile of lab PDFs to a report you can hand over.

Drag in your reports, confirm what it read, watch the trends, and export a doctor-ready summary. None of it leaves your browser.

01

Lab PDFs

Quest, LabCorp, or a scan.

02

Review

Verify every value before it saves.

03

Dashboard

Trends, ranges, and status at a glance.

04

Report

Export a doctor-ready PDF.

The hard part is getting the numbers right.

Most importers run OCR, take a guess, and quietly save whatever they got. Markerlog lays an outline box over every value it read on your original PDF, flags the ones worth a second look, and saves nothing until you say so.

  • See where it came from. Every value is boxed on the exact spot it was read from. Click any result to jump straight to its place on your original PDF and check it against the page.
  • Catch what it missed. A coverage pass flags any value the parser skipped. Drag a box around it on the page to capture it yourself. No retyping.
  • Nothing slips through. Walk the queue, accept or remove each result, then save. Nothing lands in your history until you do.
Click any result and the original PDF jumps to where it was read.
Quest Diagnostics Lipid panel · p.1
Apolipoprotein B 82 < 90
Cholesterol, Total 185 < 200
HDL Cholesterol 62 > 40
Glucose 128 65-99
Vitamin D, 25-OH 52 30-100
captured needs a look drawing to capture a miss
Biological age PhenoAge
29.9 yrs 8.1 years younger
29.9 biological 38 calendar
Estimated from one blood panel
Biological age

Find out how old your blood thinks you are.

From a single panel, Markerlog estimates your PhenoAge: a biological age grounded in mortality research, tracked against the calendar as new results come in. It's one number that tells you whether you're aging faster or slower than the calendar says.

See the live demo

Signal vs. noise

Know whether a change is real, or just lab noise.

A number jumping between tests can be a true shift or just the normal wobble of the test. Markerlog draws a typical-variation band around your latest result, so a move that clears the band reads differently from one that is only noise.

See the live demo

Triglycerides
92 mg/dL
Typical variation vs latest · ±55% 14999 JanMarJunAugOctDec
1 reading beyond the band · the rest within typical variation
The band is this marker's typical test-to-test variation, from its biological variation. A guide for reading change, not a clinical verdict.
Compare draws

See exactly what moved between any two tests.

Line up every draw side by side and the whole panel becomes a heatmap: each result tinted by where it fell, so two years of change reads at a glance. The Net column colors by meaning, not direction, so a number going down for a good reason looks different from one going down for a bad one.

Biomarker Jan ’24Jul ’24Jan ’25Jun ’25Nov ’25latest Net
Lipid panel
Apolipoprotein Bmg/dL 128 112 100 92 82 36%
LDL Cholesterolmg/dL 135 122 112 105 98 27%
HDL Cholesterolmg/dL 42 48 54 58 62 48%
Triglyceridesmg/dL 168 132 112 100 92 45%
Metabolic & nutrients
Glucosemg/dL 92 99 110 120 128 39%
Vitamin Dng/mL 24 33 41 47 52 117%
in range above optimal outside clinical
Auto-heatmaps once you have a few draws; add draws and it fills in. Every cell links to that reading. A read on your own data, never a diagnosis.

See the live demo

Marker pathways

See how one marker becomes the next.

A single result rarely means much alone. Open any marker and Markerlog maps the pathway it lives in: what converts into what, and which conversion is off. Here more of your T4 is shunting to inactive reverse-T3 than activating to T3, so the ratio that measures it lights up and your Free T3 reads low.

See the live demo

Thyroid conversion where this marker sits, and what it becomes
TSH 1.7 mIU/L
Free T4 1.3 ng/dL
Free T3 2.6 pg/mL
Reverse T3 24 ng/dL
conversion flagged ratio lights up the marker you opened
One of five shapes the app draws for a marker's relationships — a conversion network, a driver breakdown, an interpretation matrix — picked to fit the marker. A read on your own data, never a diagnosis.
Private, optional AI

Ask your bloodwork anything, and choose where the model runs.

Type [[ to drop any marker into your question, and the assistant pulls its full history to answer. Every marker it names back is a chip that jumps to that chart. On a computer with a capable graphics card, a real model runs right in your browser: no key, no account, and once it's downloaded, nothing you type ever leaves the page. No graphics card? Connect your own cloud model in a click instead.

  • On your device: a real model, up to 9B parameters, runs on your GPU through WebGPU. It downloads once (a few GB), then works with the Wi-Fi off
  • Or bring your own: connect an Anthropic, OpenAI, or OpenRouter key, or a local Ollama server
  • Either way: it's opt-in, with a PII-free payload you can review before it sends

See the live demo

Ask Full history
Why is my LDL Cholesterol still above optimal, and what moved with it?

Your LDL is down 27% over the past year, from 135 to 98 mg/dL. That's back inside the clinical range, though still above the optimal cutoff of 70. It fell alongside your Triglycerides and ApoB.

The last two draws sit inside this marker's typical variation, so the drop reads as a real trend, not test-to-test noise.

On-device · Qwen 3.5 4B · nothing left your browser
Already live in ChatGPT or Claude? One click copies your whole history as clean Markdown or JSON to paste into any chatbot. You choose what leaves, and where it goes.

What makes Markerlog different

  • 01 / Yours to keep

    One timeline you own, that outlives the app

    Your whole history lives in a private database on your own device (SQLite via OPFS), with no account and no company holding it. Export everything as a zip in one click, so your data outlives Markerlog itself. Optional sync backs up to storage you already control (your own Git repo, Gitea or Forgejo, or an S3 bucket), end-to-end encrypted with a recovery phrase, so even that host can only see scrambled bytes.

  • 02 / Regimen impact

    See what a supplement or med actually moved

    Log the supplements and medications you take, with the dates you start and stop each one. Markerlog compares your results from before and after the change and surfaces the markers that moved by more than their normal test-to-test noise, so you see what a regimen actually shifted, not what was only drifting. A read on your own data, never medical advice.

  • 03 / Sourced catalog

    417 biomarkers, with the citations

    Clinical and optimal reference ranges, matched to your sex and age, with LOINC codes where the marker has one, plus 99 composite formulas, from eGFR and HOMA-IR to calculated free testosterone, that recompute as you add results.

Under every number

One reading. Everything behind it.

Every result sits on a sourced reference range and feeds the formulas that recompute as your data grows, every calculation done on your own device. It even estimates your biological age (PhenoAge) from a single panel, then tracks it against the calendar.

417 sourced markers ranges backed by citations
Plain-language names "bad cholesterol", not just LDL‑C
Clinical and optimal ranges matched to your sex and age, shifting as you age into a new range
A fitted trend line percent change across every test
Ask, and it knows your chart context-aware, private by default
99 composite formulas eGFR, HOMA-IR, and more, auto-computed

The full toolkit

Data in

PDF import
Layout-aware parsing reads Quest, LabCorp & most other labs; OCR fallback for scans
Trace to source
Click any imported value to jump to where it was read on the original PDF
Results, any type
Numeric, ordinal (Trace → 1+), and nominal (Reactive / Non-reactive)
Body metrics & BP
Weight, height, BMI, and a 120/80 reading with mean arterial pressure (MAP)
Fasting-aware ranges
Fasted and fed results are scored on their own ranges, and flagged when two draws are not directly comparable

Make sense of it

Dashboard
Cards with sparklines, or a dense lab-report table
Compare sessions
Line up many draws as a heatmap and see what actually moved, signal from noise
Command palette
Jump anywhere with ⌘K: add a result, compare, import, or export
Recheck nudges
Flags a marker worth re-testing, and won't nag you to recheck a slow-moving one too early
Units
Imperial or metric, with molar-mass-aware conversion
Export for any AI
Copy your history as clean Markdown or JSON, ready to paste into ChatGPT or Claude

Keep it yours

Optional sync
Your own Gitea / Forgejo repo, or any S3-compatible bucket
Backup
Full zip export and import, whenever you want
Doctor-ready report
Export a clean PDF summary to hand to a clinician
Privacy

Health data should stay yours.

Most trackers, even the private ones, sync your results back to their cloud. Markerlog doesn't have one. Your data is written to a database inside your browser; turn on sync and it goes to storage you own, end-to-end encrypted, so even that host sees only scrambled bytes. The only network requests are the ones you switch on.

  • No account, and works fully offline
  • A wiped browser loses nothing: one-click backup, or sync to storage you own
  • AI is opt-in, previewed, and PII-free
  • Free, with no tests or subscriptions to sell you
Your browser
Your results SQLite · OPFS
Your keys kept separate
optional, only if you enable it
A server you control Storage you already control: your own Git repo (Gitea / Forgejo) or an S3 bucket

No Markerlog server  ·  no third party  ·  no tracking

FAQ

Questions, answered.

Where is my data stored?

In a private database inside your browser (SQLite via OPFS, with an IndexedDB fallback). It never touches a Markerlog server, because there isn't one. You can export the whole thing as a zip at any time.

What happens if I clear my browser, or my data gets wiped?

Keep a backup and you are covered. Exporting a zip takes one click and restores on any device. Better still, turn on sync: every new result is pushed automatically to storage you own, so even a cleared browser or a dead laptop loses nothing. Browser storage is convenient, not a single point of failure.

Which lab reports can it import?

A layout-aware parser reads lab PDFs from Quest, LabCorp, and most other providers, without needing a per-lab template. Scanned or image-only PDFs fall back to on-device OCR. You review every extracted value before it's saved.

Does the AI send my data anywhere?

Only if you opt in. You can run a model right on your own device (through WebGPU), where nothing leaves the page, or connect your own Anthropic, OpenAI, OpenRouter, or Ollama. By default the payload is a PII-free summary: biomarker, value, range status, and trend, plus sex and age. It never includes your name, notes, or date of birth. The question you type is sent as written; a review-before-send option shows you exactly what leaves first. One separate opt-in, off by default, can add your logged medication and supplement names for regimen questions. Because those names can imply a diagnosis, it is gated on its own and best run on the on-device model.

Can I take my results to ChatGPT or another AI?

Yes. One click copies your whole history as clean Markdown or JSON, ready to paste into ChatGPT, Claude, or any chatbot. You can anonymize it first, and Markerlog sends nothing itself: you choose where it goes.

Can I move my data between devices?

Yes. Export and import a zip, or turn on sync to your own Gitea/Forgejo repository or an S3-compatible bucket. Credentials live in a separate store and are never included in exports or uploads.

Is this medical advice?

No. Markerlog organizes and visualizes results you already have. It doesn't diagnose or treat anything, so take questions about your health to a clinician.

It's free. What's the catch?

There isn't one, and there's nothing to upsell. Markerlog runs entirely in your browser, so there's nothing for us to host, no subscription, and no tests to sell you. Because your data never reaches us, there's nothing for us to mine or resell either. Your history stays yours: export it, sync it to storage you own, and keep it even if Markerlog goes away.

Is it open source?

Not today. But the privacy claims don't ask for your trust, they invite you to check. Open your browser's dev tools and watch that nothing leaves; the whole app keeps working with your Wi-Fi off; and your data exports to plain Markdown, JSON, and CSV you can read yourself, so nothing is locked in a format only we can open.

Which browsers are supported?

Any modern browser: Chrome, Firefox, and Safari. The optional on-device AI model needs WebGPU (in current Chrome, Edge, and Safari). Everything else works without it.

Your bloodwork. Your browser. Nobody else's.

See the live demo and explore a full bloodwork history in seconds. When you're ready, import your own PDF and watch a year of results line up. No account, nothing uploaded.