🔍
☁ CLOUD
Today
Log
Insights
Settings
Dashboard
Move
Supplements
▲ ▼ 👁
90.6kg
Last updated today
Target
92–93
+1.4kg to go
▲ ▼ 👁 ▾ hide
🟢 Standard
🟡 Occasion
🔴 Holiday
WHAT'S THE OCCASION?
🧪 Treatment 🏥 Hospital day 🤒 Illness 🥂 Social event ✈️ Travel ⏱ Fasting
Manage tags (rename, merge, delete)
▲ ▼ 👁 ▾ hide
⚡ KETOSIS ZONE — carbs on target
▲ ▼ 👁 ▾ hide
Calories
0
/ 3670
Protein
0g
/ 165g
Carbs
0g
/ 50g
Fat
0g
/ 247g
🗓 Meal plan ?
▲ ▼ 👁 ▾ hide
🌾 Fibre ?
▲ ▼ 👁 ▾ hide
0g
/ 30g
⏱ Fasting ?
▲ ▼ 👁 ▾ hide
—
💧 Water
▲ ▼ 👁 ▾ hide
0
/ 2000ml
+ Glass
250ml
+ Can
330ml
+ Pint
440ml
+ Bottle
500ml
+ Custom
ml
🎤 Voice
say amount
Reset
Today's Log 0 entries▲▼👁▾ hide
No meals logged yet
Guides & Docs
▲▼👁▾ hide
STEPS▲▼👁▾ hide
steps so far today ?
EXERCISE TODAY▲▼👁▾ hide
Your usual exercise. Type the time, and the distance if it has one. Calories and effort are worked out for you.
🏋️ SESSIONS & ROUTINES ▸ show
WHAT IF…▲▼👁▾ hide
EXERCISE OVER TIME▲▼👁▾ hide
BODY COMPOSITION▲▼👁▾ hide
YOUR JOURNEY▲▼👁▾ hide
Loading supplements…
✕
✕
Powered by Open Food Facts · 3M+ products ✨ Try AI
Type to search…
←
Enter amount
HOW MUCH DID YOU HAVE?
g
Enter amount above
← Back
Log
History
Library
Shopping
MAXEDHEALTH
Ready to log.
Next meal idea
Balance my macros
Ketosis check
Today summary
✕
Nutrition History
Daily nutrition logs from meal tracking. Wearable data is in Trends.
This Week
Month
All
No history yet.
Start logging meals.
Recipes
▾ hide
▲ ▼
No recipes yet — tap + New Recipe to create one.
A–Z
▾ hide
▲ ▼
Food Library
▾ hide ▲ ▼
✕
Tap any food to quick-log it.
Library Tools
▾ hide
▲ ▼
📋 Ingredients
▸ show
▲ ▼
Statistics
Reports
Period Analysis ▾ hide
Reports is for period analysis — looking across days, weeks and months to find patterns. Use the Query Builder to filter any column from your wearable and nutrition data. Save queries to re-run with fresh dates.
Date Range
Summary ▾ hide
Log meals for 3+ days to see your summary.
Insights ▾ hide
Automated analysis of patterns in your data for the selected period.
Select a date range to see insights.
Activity Credit Balance ▸ show
Ask about this period ✨ Ask AI · Full Summary ▾ hide
✨ Full Summary ℹ️
For you — your own AI read of everything
Or ask a specific question about your data.

Suggested questions:
Query Builder (build your own question from your data) ▾ hide
Filter your wearable and nutrition data for the selected period. Available columns ▾
SAVE THIS QUERY
Make a report to hand to someone ▾ hide
Generate a summary to keep as a record or share with your doctor or care team. Want your raw data or a full backup instead? Settings → Data.
A specific week's numbers — for your own record.
GBM Monthly Summary ℹ️ ▾ hide
A structured monthly review of your GBM protocol. Based on — days of data.
—
Carb Adherence
—
Avg Carbs
—
Avg Protein
—
Avg Fat
—
Fat % Calories
🔬 GBM Research Digest ▾ hide
Evidence categories: Proven · Early Stage · Speculative
Manage
Customise
Data
AI Provider ▾ hide
Premium licence
None
Provider
Local only
Claude
OpenAI
🌐 Language ▾ hide
Profile ▾ hide
Name
Height
cm
Age
Sex
Male
Female
Weight unit
kg
lbs
st + lb
Display only. Your data is always stored in kg, so switching never changes or loses anything. With st + lb, type weights as stones and pounds, e.g. 14 st 2.
Weight target
From kg
To kg
TDEE
kcal
Only used for the Lose goal (TDEE − 500). Maintain and Gain use your own confirmed figures below, not this.
Goal / Phase
Lose
Maintain
Gain
Preview weight status under a different goal — uses your real current weight and trend, changes nothing:
Diet protocol
This sets your carb target and how reports are framed. What you track (symptoms, treatments, screens) comes from 27 starter packs: Change my focus.
Activity Level
Weight Phase History
Tell the AI about intentional weight phases so it interprets trends correctly.
Example: first line 2026-03-12 loss means intentional loss from data start. Second line 2026-06-21 gain means gaining phase from that date.
Condition History
Logs automatically whenever you change condition above. Lets reports filter to a specific condition period using that period's own real targets, rather than today's, when it differs.
Example: first line 2026-01-15 general means General Health from data start. Second line 2026-06-01 migraine means Migraine protocol from that date onward.
Activity Level History
Logs automatically whenever your Activity Level changes, whether you change it above or it auto-switches from sustained real step data. Keeps later changes from retroactively distorting how old logged days get interpreted.
Example: first line 2026-01-15 moderate means Moderately Active from data start. Second line 2026-06-01 active means Very Active from that date onward.
Auto-Switch Threshold
days
⚡ Suggested Targets
Enter height, age, sex and weight to generate suggestions.
✏️ Set my own numbers instead (advanced, e.g. from a dietitian) ▸ show
⚠ What changing these numbers actually does ▸ show
Carb Ceilings ▾ hide
Set your carb ceiling for each day type.
🟢 Standard
< g
🟡 Occasion
< g
🔴 Holiday
< g
Carb counting method
Total (the default) shows the raw carbs figure exactly as printed on the label — polyols (sugar alcohols like erythritol, xylitol) are still counted in full, since that's how UK/EU labels state the number. Net subtracts polyols from that figure, giving the lower, physiologically-relevant number — this is what a "keto" product with, say, 16g total carbs is actually relying on: most of that is polyols the label counts but your body barely responds to. Fibre isn't subtracted separately here, unlike US-style net carb calculations — UK/EU labels already exclude fibre from the printed carbs figure before it reaches this app (fibre is its own separate line on the label, not part of the carbohydrate total the way US labelling includes it), so subtracting it again would double-count something already excluded. If Total ever looks too high for something clearly marketed as keto/low-carb, that's the sign Net is what you actually want to be looking at. Switching only affects today's ceiling check reliably; older logged days may not have polyol data recorded, so this can't be safely applied retroactively.
Exercise Offset for Carb Overage ▾ hide
Enable this distinction
Offset threshold
%
Device Precedence ▾ hide
Priority order when more than one device reports the same metric on the same day?
?
⚠ Advanced — Troubleshooting Tools ▸ show
Not needed for everyday use — only useful if something looks wrong and needs diagnosing.
📐 Formulas & Technical Reference ▾ hide
Exercise energy
Calories = MET × weight (kg) × hours. For walks, runs and rides with a distance and a time, the MET follows your real speed (2011 Compendium of Physical Activities, level ground); otherwise it follows the Easy / Moderate / Hard level. Counted net of resting energy (MET minus 1), because your daily target already includes what you would burn sitting still. Once your watch has calibrated a kind of exercise, its measured ratio replaces this. Pick Gross to count the full MET value instead.
BMR (Basal Metabolic Rate)
Formula used:
Mifflin-St Jeor —
Men: 10 × weight(kg) + 6.25 × height(cm) − 5 × age + 5
Women: 10 × weight(kg) + 6.25 × height(cm) − 5 × age − 161

Harris-Benedict (revised) —
Men: 88.362 + 13.397 × weight(kg) + 4.799 × height(cm) − 5.677 × age
Women: 447.593 + 9.247 × weight(kg) + 3.098 × height(cm) − 4.330 × age

Katch-McArdle —
370 + 21.6 × lean body mass(kg), where lean body mass = weight × (1 − body fat% ÷ 100)
All three need height, age, and sex set in Profile (Katch-McArdle also needs body fat %) — falls back to a generic estimate otherwise.
TDEE (Total Daily Energy Expenditure)
TDEE = BMR × activity multiplier
Multiplier derived from your 30-day average steps:
>12,000 steps/day → ×1.725 (very active)
>8,000 steps/day → ×1.55 (active)
>5,000 steps/day → ×1.375 (lightly active)
≤5,000 steps/day → ×1.2 (sedentary)
Recalculated fresh every time — always reflects your current 30-day average, not a fixed setting.
Exercise Calories (MET-based)
kcal = MET value × weight(kg) × duration(hours)
MET values by activity and effort (Easy / Moderate / Hard):
Walking: 2.8 / 3.5 / 4.5  ·  Resistance: 3.0 / 5.0 / 6.0
Cycling: 4.0 / 6.8 / 10.0  ·  Running: 8.3 / 9.8 / 11.8
Swimming: 6.0 / 8.3 / 9.8  ·  Rowing: 4.8 / 7.0 / 8.5
Once you've logged enough sessions alongside real wearable calorie data, a personal calibration factor is applied on top of the raw MET formula — the raw, uncalibrated figure is always kept separately so the calibration itself never drifts against an already-adjusted number.
Walking Pace Bands (fitness-adjusted)
Effort = pace ≤ easyMax ? Easy : pace ≤ moderateMax ? Moderate : Hard
Bands by your Activity Level setting (Profile → Activity Level):
Sedentary: Easy ≤2.0mph, Moderate ≤2.75mph
Lightly active: Easy ≤2.5mph, Moderate ≤3.25mph
Moderately active: Easy ≤3.0mph, Moderate ≤3.75mph
Very active: Easy ≤3.5mph, Moderate ≤3.75mph, above is Hard
No single universal mph threshold for "brisk" walking actually exists — the AHA (≥2.5mph) and CDC (≥3.5mph) officially disagree, explicitly because it depends on individual fitness. The active tier here is anchored on the CDC figure, light on the AHA figure. Used both to auto-suggest an effort label from a logged pace, and in reverse to estimate calories/steps when only an effort label (not exact pace) is available — previously these were two separate, inconsistent hardcoded values; now both read from the same source. Long-duration walks (4+ miles, scaling with activity level) get bumped up a level, since sustained effort is harder than pace alone suggests.

Known limitation: the MET calorie values above (2.8/3.5/4.5 for walking) are not yet adjusted the same way — they were calibrated assuming something close to the old universal pace scale, so calorie estimates specifically for non-"moderately active" tiers may be slightly off until this gets addressed too.
Activity Level Auto-Switch
Tier = 30-day avg steps >12,000 active · >8,000 moderate · >5,000 light · else sedentary
Same thresholds the existing TDEE activity multiplier already uses — one definition of each tier, not two that could disagree. For each of the last N days (Auto-Switch Threshold, default 14, shared with the weight/goal auto-switch above), computes what the rolling 30-day step average would have suggested as of that day. If all N of those daily-computed averages agree on one tier that differs from your current Activity Level setting, it switches automatically — walking pace bands and calorie/TDEE targets update immediately.

Deliberately checks the smoothed 30-day average at each point rather than each single day's raw step count — steps are naturally far noisier day-to-day than a weight trend, so requiring every individual day to match would let one low-step rest day break an otherwise genuine, sustained improvement.

A move to a more active tier shows a celebration (matching streak milestones); a move to a less active tier is a plain, factual notification only — informed either way, celebrated only when it's genuinely something to celebrate. Every switch is logged to Activity Level History (Profile), so a later change never retroactively distorts how older logged days get interpreted.
Macro Ratio %
Protein kcal = protein(g) × 4
Fat kcal = fat(g) × 9
Carb kcal = carbs(g) × 4
Each macro's % = its kcal ÷ total kcal × 100
Fat (when not directly recorded)
fat(g) = max(0, (kcal − protein×4 − carbs×4)) ÷ 9
Back-calculated from the balance of calories once protein and carbs are accounted for — only used when a logged item genuinely has no fat value of its own.
Net Carbs (optional setting)
net carbs = total carbs − polyols
Off by default (shows total/gross carbs). Deliberately does not also subtract fibre — UK/EU labels already exclude fibre from the printed carbs figure before it reaches this app (fibre is its own separate line, not part of the carbohydrate total the way US labelling includes it), so subtracting it again would double-count something already excluded. Only reliably applied to recent days with real polyol data recorded — older days may not have it.
Carb Ceilings & Ketosis Adherence
Every day is judged against its own logged mode's ceiling — Standard, Occasion, or Holiday — each independently configurable above. A holiday day within its own (wider) ceiling counts as fully compliant; it is never compared against the Standard ceiling.
Exercise Offset for Carb Overage
overage kcal = (actual carbs − ceiling) × 4
addressed if: exercise kcal that day ≥ overage kcal × threshold%
Off by default. Never changes whether a day counts as over ceiling — purely an additional, separate classification. See the Exercise Offset settings card above.
Non-Walking Steps & Baseline
Your daily step baseline (default 7,500, set above) represents ordinary day-to-day movement assumed already accounted for. Steps beyond a logged walk's own estimated count, and beyond this baseline, are credited as additional "Easy effort" activity calories — steps within the baseline add nothing extra, since that's the assumption already built into your calorie target.
💧 Water Target & Weather
Water target = base target + exercise + heat
Base: your Water Target setting (default 2000ml)
Exercise: +500ml for every hour of activity logged today
Heat: from the day's "feels like" high (forecast, or your own figure if you've adjusted it):
  under 25° → +0ml
  25-29° → +250ml
  30-34° → +500ml
  35° or more → +750ml
Suggested exercise effort:
  25-29° → ease about 5%
  30-34° → ease about 10-15%
  35° or more → ease 20%, or go indoors
  -5° or colder → indoors, or ease 10%
Tips also appear for rain (60%+ chance, or marked wet), UV 7+, freezing and cold days.

Best time for outdoor exercise: the longest run of remaining hours (06:00-21:00) where feels-like is 27° or under, rain chance is under 40% and UV is 5 or under. If you've adjusted today's feels-like, every hour is shifted by the same difference.
Weather comes from the free Open-Meteo service for the town you choose on Today (only rounded coordinates are sent). These are rule-of-thumb guides, not clinical advice or measurements, and your own "Not right? Adjust" figure always overrides the forecast. Weather never changes your calorie, protein or carb targets.
🧩 Layout, Filter & Starter Packs
Filter row — the first thing on Today, Trends, Reports and Settings → Manage / Data: Filter opens one panel with the topic chips and your hidden cards (tap one to bring it back), Open all and Close all fold or unfold everything in view, and Default puts that screen back to its standard layout. Nothing you have logged is ever touched.

Starter packs (Settings → Data → Starter packs) — ready-made symptom and treatment lists plus a screen layout for a condition, so a new user does not begin with an empty app. A pack can be shared from your own phone too (tick Screen layout in the export list). Once a pack layout is applied, Default returns to that layout.

Gentle nudges — if a pack tucked a Today card away, a week later the app offers it back once, with Show it, Not now and Don't ask again. It is always optional.

By voice or typing — "Hide the fasting card", "Show the ketosis card", "Close all cards", "Open all cards", "Reset my layout".
✨ Where AI is used
Every place this app actually calls out to an AI, and what happens to its answer — checked directly against the code, not written from memory.
Meal & photo logging — typing a description, or using the camera/photo-library buttons in Log, sends it to the AI for parsing. This is the same path used for reading a nutrition label photo — the AI is instructed to read the panel, not guess. Once matched to an existing library item, the AI's numbers are discarded entirely — "From library — values locked" means exactly that; only your own explicit edits change a locked item. A genuinely new, unmatched item stays an AI estimate until you save or correct it.

Tableware & portion sizes (Settings → Tableware) — the set you have in use (plate, bowl, mug and spoon sizes) is added to the photo/meal prompt and the 3-AI check as context for judging portions, and only for an item that is visible or named. It improves the estimate; it never replaces a weight you type, and Home's sizes are typical until you change them.

Barcode scanning — the AI's only job here is reading the digits off the barcode photo. The actual nutrition data comes from Open Food Facts, a real independent database — not an AI guess.

Ingredient search fallback — only triggered when an Open Food Facts search comes up empty. A clearly-marked AI estimate, not a database value.

Verify across 3 AIs (Library edit, Log/History edit, Recipe add) — queries Claude, Gemini, and ChatGPT independently for the same food. On a logged meal an amount is only sent if you typed or said it; a guessed amount is left out so each AI judges the portion itself (the answers are scaled back to the logged amount to compare and average). Where you entered the amount yourself (library or edit forms), it is sent, shows where they agree or disagree, and only applies a value if you choose to.

Balance my macros / Next meal idea — the AI is given today's real remaining macro budget and your actual library, and picks or combines from it — it isn't estimating new nutrition data here, only choosing and composing from figures that are already real.

Reports — Ask a question / Full Summary — free-text answers and narrative summaries generated from your own logged history. Informational, not used to change any stored value.

GBM Research Digest / Monthly Summary — narrative generation only, explicitly categorised Proven / Early Stage / Speculative rather than presented as one undifferentiated answer.

Clinical narrative (Full Report Package) — generates the narrative text for a clinician-facing export from your logged data and any reference dates you've entered.
By default, all of this runs through a shared proxy. Settings → AI Provider lets you connect your own API key instead, so requests go directly rather than through anyone else's account.
Carer & Clinician ▾ hide
What this link shows
Email address for reports (e.g. Treatment Sessions → Email this) — pre-fills the recipient, nothing is sent automatically:
Notifications ▾ hide
Enable daily reminders and weekly summaries.
Idle Timeout ▾ hide
Pauses the app's own background activity (notification checks, chart updates) after a period with no taps, scrolls, or typing - genuinely reduces what the app is doing while you're not actually using it, rather than it quietly running in the background the whole time the tab is open. Nothing you've typed or logged is ever lost - it's a pause, not a reset.
Water Target ▾ hide
ml/day
Fibre Target ▾ hide
Daily fibre target. The UK guideline for adults is 30g. The Fibre card on Today compares your day, and your last 14 days, with it. Days where no food carries a fibre figure are left out rather than counted as zero.
g/day
Fasting ▾ hide
Fasts are measured from the times on your logged meals, so there is nothing extra to enter. Your goal is your own: there is no medical target built in. Tag a day Fasting for a fast that runs over several days.
Overnight fast goal hours
A meal breaks the fast at kcal
Anything logged under this (a black coffee, a supplement) does not break a fast.
Do you take medication with fat or food (for example MCT oil to help tablets absorb)? Name it here and it will not break your fast. Never delay a dose to protect a fast.
Taken with meds
Usual amount (from your food log) kcal
Tableware & Portion Sizes ▾ hide
Incidental Steps Baseline ▾ hide
Lifestyle changed? Pick the level that matches your TDEE assumption now, not when you first set it:
Easy
~5,000
Moderate
~7,500
Hard
~9,500
steps/day
Premium (local version) ▾ hide

You are using the free web version. It does the logging, nutrition tracking, imports, reports and manual entry. The Premium local version runs on your Android phone and adds:

  • Automatic wearable sync through Health Connect, in the background, with no manual exports.
  • Full offline mode: log, review, charts, PDF reports and read-aloud with no signal; meals saved for later are sent when you are back online.
  • Extractors for Withings, RingConn, Zepp / Amazfit and Garmin files, and the ability to add one for a new device.
  • Choose which device wins for each measure, with sleep conflicts flagged for you.
  • Your data stays on your own phone and in your backups, with self-checks and automatic updates.
  • Setup help.

Premium is not on sale yet. Register your interest and you will be contacted when it is. Only your own details go to the form; nothing from this app is sent.

Register interest ›
About ▾ hide
Health Connect sync
Checking…
System health
Checking…
Version
MaxedHealth v3.10.855
Developed by
Pete Spence
MaxedHealth normally checks for a new version on its own — use this if you want to check right now instead of waiting.
Built by a GBM patient who needed it. Given freely to everyone who does.
❤️ WHY THIS APP IS FREE — PETE'S STORY
API keys are stored locally on your device only. They are sent directly to your chosen AI provider and nowhere else.
Shows the first-visit tips again on your next visit to each tab.
Explore with 30 days of sample data — nothing you do in demo mode touches your real data. Exit anytime from the banner at the top.
Opens a GitHub report already filled in with your app version, device and a health check. Add a screenshot by dragging it into the box or using the image button. No GitHub account? Copy the report text instead and send it however you like.
Opens GitHub Issues — no account needed to read, account required to post.
Setup ▾ hide
Advanced
Lost your way? This puts the cards back to their standard open/closed state, order and visibility on every screen. Nothing you have logged is touched. Each screen also has its own ↺ Default button beside Open all / Close all.
Supplements ▾ hide
Reminder checkpoint times — leave any blank to skip that period entirely (e.g. no late-evening reminder). Fires only if something for that period is still unchecked when the time hits.
Morning
Midday
Evening
Bedtime
Loading…
Symptom Tracking ▾ hide
Track whatever's actually relevant to you day to day - energy, cognitive clarity, sleep quality, headaches, mood, or anything else. Logged 1-5 daily from the Today dashboard. Nothing is tracked by default; add what you actually want to watch.
Loading…
Treatment Tracking ▾ hide
Track sessions of anything you do outside normal daily logging — PEMF, physio, massage, or anything else — with a real timestamp per session, not just a daily yes/no. That's what makes "how did I do in the days around this session" a question Reports can actually answer later. Nothing tracked by default; add what's actually relevant to you.
Loading…
🩸 Lab Results ▾ hide
Loading…
Report Profiles ▾ hide
Set up a reusable report for sending to a treatment provider, clinician, coach, or anyone else you're sharing regular progress with — pick the treatment it's about, which metrics matter, and an optional reminder. Nothing is sent automatically; you review and send it yourself each time.
No report profiles yet.
Appearance ▾ hide
Text Size
A
Normal
A
Large
A
Larger
Visual Style
✦
Classic
Original
⬡
Vital
Clinical
◉
Pulse
Organic
▲
Forge
Intense
Icon Pack
📊 🍽️
Classic
Outline
Organic
Bold
Neon
Mono
Base
Dark
Light
Auto
Custom Accent Colour
Pick any accent colour
Overrides the theme accent. Works on any theme.
Organisation Branding ▾ hide
If this copy of MaxedHealth is run on behalf of a provider or organisation (e.g. a clinic, or a company like PEMFit), add their logo and name here. It replaces the MaxedHealth wordmark in the header and appears on generated report PDFs. The name is also the default for new report profiles. Stays local to this device — nothing is uploaded anywhere.
🏢
PNG/JPG, resized automatically. Small file, stays on this device.
Organisation Name
Export, import & backup ▾ hide
A backup that only lives on this phone is lost with the phone. Every so often, share a copy to your email, a cloud drive or your computer.
⚠ Your data lives in browser storage
History entries
—
Today's entries
—
Phone to phone (QR) ▾ hide
The quickest way to move your data to another phone: scan codes, no files, no internet.
More: clear today's log
Restore from backup ▸ show
Sync Wearable Data ▾ hide
Checking local server…
Run a device by hand (advanced) ▸ show
Wearable History ▸ show
Add New Device / Data Source ▾ hide

Got a device not natively supported? Upload its CSV export and AI will map the columns automatically.

No file loaded yet.
Missing Data & Coverage ▾ hide

Finished days in the last two weeks that have no steps, heart rate or sleep recorded. Tap a day to fill it in by hand. Today is left out because it is still in progress.

Checking...
How much of your history has meals, steps, sleep, heart rate, HRV, SpO2 and weight, and where the gaps are. Read from what is already in the app.
Manual Entry ▾ hide

Type in readings by hand for a date — works like importing a device's CSV, feeding the same pipeline every other device uses. A value entered here always wins for that date, whatever a device already recorded.

Filling in many days at once? Download a blank CSV with your current fields as columns, fill it in (a spreadsheet app, or any export you can copy values from), then upload it back — no device mapping needed, since the column headers already match this app's own.
Chart
✕
↻ Rotate for wider view
SAVE TO LIBRARY
Save this food to your library for instant one-tap logging.
The name should include the amount — e.g. "sausage roll (x1)" or "chicken breast 150g" — so you know exactly what one tap logs.
KCAL
PROT g
FAT g
CARBS g
FIBRE g
POLYOLS g
CATEGORIES (optional, comma-separated)
ADD TO LIBRARY
Enter confirmed macros and save to your library.
PORTION SIZE
VALUES ARE PER
KCAL
PROT g
FAT g
CARBS g
FIBRE g (optional)
POLYOLS g (optional)