Local-first lab tracking

Your bloodwork, in focus.

Markerlog turns a pile of lab PDFs into a history you can actually read — 150 biomarkers, trends over time, every value checked against clinical and optimal ranges. It all lives in your browser. Nothing is uploaded.

  • No account
  • Works offline
  • Free to use
  • 01 / Local-first

    Your data never leaves your browser

    Results are stored in SQLite (via OPFS) on your own device. No account, no server, no analytics. Optional sync backs up to storage you control — your Gitea repo or an S3 bucket.

  • 02 / On-device AI

    Ask questions without handing over your labs

    An optional assistant runs fully in your browser through WebGPU — no API key, nothing leaves the page. Prefer a hosted model? Bring your own Anthropic, OpenAI, or Ollama. Always opt-in, always a PII-free payload.

  • 03 / Sourced catalog

    150 biomarkers, with the citations

    Clinical and optimal reference ranges with LOINC codes and sex/age stratification — plus 42 composite formulas (eGFR, LDL, HOMA-IR, and more) that recompute as you add results.

How it works

From a stack of PDFs to a history you can read.

  1. 1
    OCR fallback included

    Import a lab PDF

    Drag in a report from Quest, HealthGorilla, or a generic lab. Markerlog detects the layout and pulls out every value — and falls back to on-device OCR for scanned or image-only PDFs.

  2. 2
    Human-in-the-loop

    Review before it's saved

    Check the parsed values next to the original PDF, fix anything that looks off, and approve. Nothing is written to your record until you confirm it.

  3. 3
    Trends & ranges

    Watch the numbers move

    Every marker gets a sparkline, a trend, and a range badge. Sort by panel, flag out-of-range results, switch to a dense table, and compare any two sessions side by side.

  4. 4
    Opt-in, PII-free

    Ask, privately

    Turn on the assistant to explain a result or a trend. It runs on-device or through your own key, on a summary you can preview before a single byte is sent.

Features

Enough depth to take your labs seriously.

No dumbed-down dashboards. The catalog, the formulas, and the reference ranges are the kind of thing you'd otherwise keep in a spreadsheet — done properly.

Data in

PDF import
Quest, HealthGorilla & generic layouts, OCR fallback for scans
Results, any type
Numeric, ordinal (Trace → 1+), and nominal (Reactive / Non-reactive)
Composite formulas
42 calculated markers — LDL, eGFR, HOMA-IR — that auto-recompute
Body metrics & BP
Weight, height, BMI, and a 120/80 reading with derived MAP

Make sense of it

Dashboard
Cards with sparklines, or a dense lab-report table
Trends
Linear regression, percent change, and range-status badges
Reference ranges
Clinical and optimal, sex/age aware, LOINC-coded
Compare sessions
Put any two test dates side by side
Units
Imperial or metric, with molar-mass-aware conversion

Keep it yours

Local-first
SQLite in your browser via OPFS — no account, no server
Optional sync
Your own Gitea / Forgejo repo, or any S3-compatible bucket
Opt-in AI
On-device via WebGPU, or your own provider key — PII-free
Backup
Full zip export and import, whenever you want
Privacy

Health data should stay yours.

Most trackers upload your results to their servers. Markerlog doesn't have servers. Your data is written to a database inside your browser, and the only network requests are the ones you switch on.

  • No account, ever
  • No analytics, no third-party scripts
  • Works fully offline
  • Export everything as a zip, anytime
  • Sync, if on, goes only to storage you own
  • AI is opt-in, previewed, and PII-free
Your browser
SQLite · OPFS your results
Secret store keys, kept separate
optional, only if you enable it
A server you control Your Gitea / Forgejo repo, or an S3 bucket

No Markerlog server  ·  no third party  ·  no tracking

FAQ

Questions, answered.

Where is my data stored?

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

Do I need an account?

No. There's no sign-up and no login. Open the app and start entering or importing results.

Which lab reports can it import?

PDFs from Quest Diagnostics and HealthGorilla are auto-detected, and a generic parser handles many others. 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 fully on-device through WebGPU, where nothing leaves the page, or connect your own Anthropic, OpenAI, or Ollama. Either way the payload is a PII-free summary — biomarker, value, range status, and trend, plus sex and age — never your name, notes, or date of birth, and you can preview exactly what's sent.

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 — take questions about your health to a clinician.

What does it cost?

Markerlog is free to use. It runs entirely in your browser, so there is nothing to host and no subscription.

Which browsers are supported?

Any modern browser — Chrome, Firefox, and Safari. The optional on-device AI model needs WebGPU (in Chrome and Edge today, with others catching up). Everything else works without it.

Start with your last lab report.

Import a PDF and watch a year of bloodwork line up in minutes — without any of it leaving your browser.

Open the app