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
people who track their own labs: optimizing for longevity, managing a condition, or just tired of losing results in a portal.
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.
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.
Open any card and its full history opens up: every reading on its reference range, with the trend fitted across them.
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.
Lab PDFs
Quest, LabCorp, or a scan.
Review
Verify every value before it saves.
Dashboard
Trends, ranges, and status at a glance.
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.
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.
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 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 ’24 | Jul ’24 | Jan ’25 | Jun ’25 | Nov ’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% |
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.
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
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.
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.
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.
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
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
✕ No Markerlog server · no third party · no tracking
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.