vitalsheet explained
Open the app

An animated walkthrough · nothing here phones home either

BP & Blood Sugar Log Sheet, Explained — How vitalsheet Turns Home Readings into One Clinic-Ready Trend Sheet

You were told “bring your readings to the next appointment.” This page walks through — step by animated step — how vitalsheet turns a home cuff, a glucometer and a bathroom scale into one dated sheet your doctor can actually read, without a single number ever leaving your device.

Animation: a blood-pressure cuff readout counts down and settles at 120 over 80, then flows into a small trend sheet.

The problem

“Bring your readings” usually means a crumpled slip of paper

If you live with hypertension or diabetes — or you log an elderly parent's BP twice a day — the numbers pile up in the worst places: a torn page, three different phone notes, the cuff's own fading memory. At the clinic, nobody can see the trend, so the five minutes you get are spent deciphering instead of deciding.

A useful log needs exactly three things: dated rows, plain averages, and a format a clinician can scan in seconds. That is the whole job vitalsheet does — and the only job.

Step 1

Type the number the device shows — two taps and it's a dated row

2026-07-23 · 07:10 122 / 78 left arm, seated

Date and time are prefilled to now; the fields are large and numeric. Three device modes — BP (mmHg, with optional pulse and SpO₂, arm and seated tags), glucose (mg/dL with a fasting / after-meal / random context), and weight (kg, with a one-time height for BMI).

Every row stays editable and deletable — manual entry means typos are possible, so nothing is ever locked in.

Step 2

The trend is a table — and the average is honest arithmetic

Rows group by day, newest first. A 7-day and a 30-day average sit above them — plain means of exactly what you logged, labelled “average of logged readings”, never “your true BP”. The demo below is computed live by this page from the five demo rows, with the same formula the app uses.

7-day average
30-day average
Demo blood-pressure log: five dated readings; rows inside the 7-day window are marked.
Date & timeReading (mmHg)Cited bandWindow
Enable JavaScript to see the animated demo — or just open the app itself.
Rows marked in 7-day window are the ones the 7-day mean uses — dates on or after .

Step 3

Reference bands are quoted, not judged

Each reading can carry a chip with published wording only: the 2017 ACC/AHA blood-pressure categories, the ADA glucose target, WHO BMI classes — each with a source and a verified-on date (2026-07-23). When systolic and diastolic fall in two categories, the guideline's own rule applies: the higher category wins.

Out-of-cited-range is marked with a ▲ glyph and text — never colour alone, and never red/green traffic lights. One toggle hides all band tags. And because the ADA itself says glycemic goals should be individualized, the app repeats that caveat wherever a glucose band appears.

What it will never do: say “improving”, “worsening”, compute a risk score, or answer “is this bad?”. It is a log book, not a diagnosis.

118/79Normal
124/79Elevated
131/85Hypertension Stage 1
142/91▲ Hypertension Stage 2
126 mg/dL= 7.0 mmol/L (÷ 18.016)

Step 4

The handoff: an A4 sheet and an honest CSV

Print to A4 uses the browser's own print-to-PDF — no PDF library. The sheet has optional name/DOB fields (kept only on your device), a date-range filter, the averages block, a blank clinician-notes column, and a sources footer with verified-on dates.

CSV export is strict RFC-4180 — CRLF line endings, quoted fields — so it opens cleanly in any spreadsheet:

2026-07-23 07:10,bp,122,78,"left arm, seated"

A full JSON backup export/import and an erase-all control complete the loop: your data, portable and destroyable.

The guarantee

“Nothing leaves this device” is enforced by the browser, not promised by a policy

your log 122/78 connect-src 'none' ✕ request refused by the browser

vitalsheet ships this exact Content-Security-Policy in its <head> — and so does this page:

default-src 'self'; connect-src 'none';
img-src 'self' data:; base-uri 'none';
form-action 'none'; frame-ancestors 'none';
object-src 'none'

connect-src 'none' means the browser itself refuses every network request the page could attempt — fetch, XHR, WebSocket, all of it. No external fonts, no CDN scripts, no analytics, no service worker. Readings live in that browser's local storage and nowhere else; CSV/JSON export is the only way data moves, and you carry the file.

The honest flip side: clearing site data erases the log, and a static page cannot send reminders. Export a backup regularly; the twice-daily discipline stays with you.

Feature tour

Everything in the tool, in one glance

Three device modes

BP (with pulse, SpO₂, arm & seated tags), glucose (mg/dL ⇄ mmol/L display), weight (kg → BMI with one-time height).

Two-tap logging

Date & time prefilled, large numeric fields; every row editable and deletable.

Plain averages

7-day and 30-day arithmetic means of exactly what you logged — labelled as such.

Cited bands, verbatim

ACC/AHA, ADA and WHO wording with verified-on dates; ▲ + text, never colour-only; one toggle hides them all.

A4 print & CSV

Clinic-ready print sheet via the browser's print-to-PDF; RFC-4180 CSV per mode and combined.

Backup & erase

Full JSON export/import and an erase-all control. Your data, your file, your device.

What it deliberately is not

Not a medical device, and it gives no advice. No symptom or medication journaling, no reminders, no charts pretending to be insight, no Bluetooth import, no accounts, no cloud. Bands are dated population guidelines that may not apply to you — the ADA's own caveat is quoted in-app — and all interpretation belongs with your clinician.

Start your log before the next appointment

Free, open source (MIT), no sign-up, works offline from the first load.