MaxedHealth tracks your daily nutrition and uses AI to help you log meals — by text or photo. Connect your wearable devices later for the full picture.
Let's get you set up. Takes about 2 minutes.
🔒 Everything stays on your device. No accounts and no servers.
Try a demo first — explore with 30 days of sample data →
What's your name?
MaxedHealth will use this to personalise your dashboard and AI meal logging.
Skip
Your Body Stats
Used to calculate your calorie needs on the next screen.
Sex
Male
Female
Age
cm
ft / in
Height (cm)
kg
lbs
st/lb
Current weight (kg)
Target weight (kg) — optional
Skip for now
Your Calorie Target
Select your activity level and goal — we'll calculate your daily calorie needs automatically.
Activity Level
Sedentary— desk job, little exercise
Lightly active— light exercise 1–3 days/week
Moderately active— exercise 3–5 days/week
Very active— hard exercise 6–7 days/week
Goal
Lose
Maintain
Gain
YOUR ESTIMATED DAILY CALORIES
—
This is an estimate — adjust the fields below if needed.
Daily calories (kcal)
Protein target (g)
Aim for 1.6–2.2g per kg of body weight.
Daily carb ceiling (g) — optional
Leave blank for no limit. You can change this any time in Settings.
Your Health Context
Optional — MaxedHealth will set up sensible defaults for your situation. You can change everything later in Settings.
🧠 GBM / Therapeutic Ketosis
Sets a 50g carb ceiling, enables ketosis zone monitoring, and links to the GBM Patient Protocol Guide.
⚡ Epilepsy — Therapeutic Ketosis
Sets a 50g carb ceiling, enables ketosis zone monitoring. Classical ketogenic diet — proven evidence base.
🥑 Strict Ketosis — Metabolic Health
Sets a 50g carb ceiling for weight loss/insulin sensitivity. No fixed therapeutic fat ratio required.
🧠 Migraine — Ketogenic Trial
Sets a 50g carb ceiling. Real trial evidence, but an emerging approach — not established standard of care.
🧠 Cluster Headache — Ketogenic Trial
Sets a 50g carb ceiling. Genuine but earlier-stage evidence than migraine's own trial base.
💉 Type 1 Diabetes
Carb-aware tracking for glycaemic stability. Doesn't auto-set a ceiling — carb changes affect insulin dosing, so this needs setting with your diabetes team.
🩸 Type 2 Diabetes
Sets a 100g carb ceiling, enables blood sugar context in meal logging and trend analysis.
⚖️ Body Recomposition
Emphasises protein targets and lean mass tracking. No carb ceiling by default.
❤️ General Health
Standard defaults. Good starting point if none of the above apply.
GBM / Therapeutic Ketosis
A 50g daily carb ceiling is set. This reflects the very low carb approach used to exploit GBM's glucose dependency — the same protocol documented in the GBM Patient Protocol Guide →
The ketosis zone indicator on your dashboard will highlight when your carb intake is within the therapeutic range. You can adjust the ceiling at any time in Settings.
Type 2 Diabetes
A 100g daily carb ceiling is set as a starting point — your dietitian or diabetes nurse may recommend a different target. AI meal logging will include carbohydrate context relevant to blood sugar management. Adjust the ceiling in Settings at any time.
Skip — use standard defaults
What would you like to start with?
MaxedHealth does a lot. Pick a starting point and the screens will show just what matters; anything else can be switched on later, one card at a time (the Filter button on each screen). Nothing is lost.
🧠 Brain tumour tracking
A starting list of symptoms and treatments, with the metabolic cards folded into one-line bars you can open when you want them.
🌱 Keep it simple
Six everyday symptoms to begin with, and the advanced cards tucked away until you want them.
🧰 Show me everything
Every card on every screen from the start, and no ready-made lists. Best if you like to explore.
Skip — show me everything
How do you like to eat?
Your condition and goal set your requirements. A way of eating works inside them, shaping the split of carbs, protein and fat. You can skip this and change it any time in Settings. If you have a condition or take medication, check with a health professional first.
Skip
AI Meal Logging
✓ Works immediately — shared account
Log meals by text or photo with no setup — this uses a shared account (capped daily/monthly to keep it fair for everyone), not your own. Prefer your own API key instead? Choose it below — same features, unlimited use, billed to you rather than shared.
Want your own key instead of the shared account? Pick a provider below.
Shared account
Claude (own key)
OpenAI (own key)
API Key
Skip — I'll configure this later in Settings
MAXEDHEALTH
🔍
☁ CLOUD
👁 DEMO MODE — sample data only, nothing is saved · Exit demo →Premium, coming soon →
Today
Log
Insights
Settings
Dashboard
Move
Supplements
⚠️ Background sync has stopped Your watch and ring data will not update on its own. Tap to see the 4 phone settings that fix it.
✕
👋 Welcome to MaxedHealth
Start by logging a meal — tap Nutrition and describe what you ate. Everything else follows from there.
Longer is not better. A normal overnight gap of about 10 to 14 hours is ordinary physiology (proven). Extra benefits from fasting longer than that are small and still being studied (early stage), and routine fasts beyond about a day are speculative. The costs of going too long are real: lost muscle, low energy, poor sleep, low blood sugar if you take certain medicines, and under-eating, which matters most if you are trying to hold or gain weight. Aim for a gap you can keep up, not a record. Fasting is not for you if you are underweight, losing weight without meaning to, pregnant, under 18, or have had an eating disorder.
On a ketogenic diet? You are already close to a fasting state: low insulin, lower and steadier glucose and raised ketones (proven). So a longer fast adds less for you than for someone eating plenty of carbohydrate, and your GKI readings show where you are. Whether adding fasting on top improves outcomes is early stage.
Taking medicine with fat or protein? If a medicine must be taken with food, take it with food. A small amount of fat barely moves insulin or glucose, and protein moves them a little more (proven), so for ketones and blood sugar it does not undo your fast in any meaningful way. The setting ‘A meal breaks the fast at’ lets you decide what counts. Never skip or delay a dose to protect a fast.
Type your total for today. Your own typed total counts until your watch, ring or phone (through Health Connect) reports the same or more, then the device figure takes over; devices follow the order you set in Settings. A walk you log under Exercise today is already inside this total, so it is never counted twice.
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
Optional — also credits this session as Resistance activity (calories/protein), same as ticking it above. Leave blank to log progression only.
WHAT IF…▲▼👁▾ hide
EXERCISE OVER TIME▲▼👁▾ hide
Log a few sessions and your exercise summary appears here.
BODY COMPOSITION▲▼👁▾ hide
Needs smart-scale readings with fat and muscle. They appear here once you have some.
YOUR JOURNEY▲▼👁▾ hide
Needs at least two weigh-ins in the chosen range.
Your whole weight history, coloured by your carb target, with treatment markers. Add food, water or exercise lines with the chips (shown on the days you weighed). Tap a point for that day.
Weight over your whole tracked history · ● in ketosis ● over ceiling ▬ treatment day
Loading supplements…
✕
✕
Powered by Open Food Facts · 3M+ products✨ Try AI
Type to search…
←
Enter amount
HOW MUCH DID YOU HAVE?
This is for your shopping import: it saves to your library only and nothing is logged. You come straight back to your list.
g
Enter amount above
← Back
Log
History
Library
Shopping
MAXEDHEALTH
Ready to log.
Next meal idea
Balance my macros
Ketosis check
Today summary
×
AI reads the photo automatically — add a name/amount below if you know it
✕
Point at a barcode
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
▲▼
Trends
Statistics
Reports
Today
7 Days
30 Days
90 Days
All
Custom
✏️ Edit this day by hand
📊
Import wearable data to populate these charts.
Go to Import and load a combined.csv from your device pipeline — or drag in any CSV export from Withings, Garmin, Amazfit, or Oura.
Wellness Balance ▾ hide
Each score averages the real data found in your selected period —
not a single "today" figure, so don't expect it to match a wearable
app's own same-day score.
—
—
Sleep
—
—
Activity
—
—
Vitals
—
—
Nutrition
🔍 Patterns ▾ hide
What seems to go with what: early warnings if something is drifting, and differences between kinds of days. Needs a few weeks of logging.
⚖️ Compare Two Periods ▾ hide
⚖️
Weight
—
kg
—
+ Add or fix a day's weight
—
Current
—
Low
—
High
—
Avg
❤️
Heart Rate
—
bpm
—
—
Avg
—
Min
—
Max
🫁
Oxygen Saturation
—
%
—
—
Avg
—
Min
—
Max
💜
HRV
—
ms
—
—
Avg
—
Min
—
Max
🚶
Daily Steps
—
steps
—
—
Avg
—
Days >10k
—
Best
🌙
Sleep
—
—
hrs avg
—
Light
Deep
REM
Awake
—
Avg total
—
Avg deep
—
Avg REM
🔥
Calories
—
kcal avg
—
—
Avg
—
Min
—
Max
💪
Protein
—
g avg
—
—
Avg
—
Days below
—
Best
🌾
Carbohydrates
—
g avg
—
—
Avg
—
Days over
—
On target %
Ketosis Adherence
💧
Water
—
ml avg
—
Avg
—
Best
⏱
Overnight Fast
—
h avg
—
Longest
—
At goal
—
Eating window
Bars: fast ending that morning. Line: your goal. Measured from meal times in your log.
🍽
Meal times
—
last meal, avg
—
First meal
—
Meals a day
—
Carbs after 5pm
Lines: first and last meal (hour of day). From meal times in your log.
🩸
GKI
—
latest (target < 2.0)
—
Avg
—
Best
🧫
Fat %
—
%
—
Low
—
High
💪
Muscle %
—
%
—
Low
—
High
🦴
Bone Mass
—
kg
—
Low
—
High
💧
Hydration
—
kg
—
Low
—
High
📍
Distance
—
km avg
—
Avg
—
Best
🧭 Your routine ▾ hide
Ask your own data a question and keep the answer: top foods, calories per week, your biggest lifts, whatever you like. Save as many as you want, copy or download them to share, and delete what you no longer need.
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
7 Days
30 Days
90 Days
All
Custom
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
Loading…
Ask about this period ✨ Ask AI · Full Summary▾ hide
✨ Full Summary ℹ️
vs GBM Monthly Summary (above, GBM condition only): this is broader and personal — nutrition, weight, ketosis, plus sleep, HRV, and activity, none of which Monthly Summary covers — written for you and citing your actual data directly, not styled for clinical handoff.
For you — your own AI read of everything
Or ask a specific question about your data.
Suggested questions:
AI Response
Query Builder (build your own question from your data) ▾ hide
Filter your wearable and nutrition data for the selected period.
Available columns ▾
All values per day · sleep in minutes · HRV in ms · SpO2 in % · weight in kg (reports and exports always use kg)
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.
Whatever you've got selected in Compare Metrics right now, written up as text — works for any audience, since you're the one who picked what matters.
A specific week's numbers — for your own record.
Stats + treatment correlation, printable — hand this to your oncologist.
Sleep & Ketosis ▾ hide
Sleep
Sleep and your food
What seems to move what · Early Stage▾
Fasting ▾ hide
When you eat ▾ hide
Weight vs Protocol ▾ hide
Treatment Analysis & Sessions ▾ hide
Treatment days (from your occasion tags)
Comparing nutrition, carb adherence, and weight on 🧪 treatment days vs standard days. Based on occasion tags in your history.
Logged sessions
Real logged sessions (Settings → Treatment Tracking) — pick a treatment and a metric to compare the day before, the day of, and the day after each session.
GBM Monthly Summary ℹ️▾ hide
vs Full Summary (under Ask AI): this is a fixed, clinically-styled protocol review — ketosis, calories, weight, and evidence-tagged recommendations — meant for handing to your oncology team. Full Summary is broader and personal: everything including sleep, HRV, and activity, written for you and citing your actual day-by-day data directly.
A structured monthly review of your GBM protocol. Based on — days of data.
—
Carb Adherence
—
Avg Carbs
—
Avg Protein
—
Avg Fat
—
Fat % Calories
Evidence categories: Proven · Early Stage · Speculative
🔬 GBM Research Digest ▾ hide
Evidence categories: Proven · Early Stage · Speculative
Manage
Customise
Data
AI Provider ▾ hide
Premium licence
None
Provider
Local only
Claude
OpenAI
API Key
🌐 Language ▾ hide
Profile ▾ hide
⚠ Height, age, and sex power your real TDEE (calorie needs) calculation — used in Suggested Targets and your Monthly Summary. Currently missing, so those fall back to generic estimates instead of your own numbers. Takes 30 seconds to fill in below.
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
Fromkg
Tokg
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.
50g is genuinely ketogenic and is the current target here. The stricter sub-20g level is the more rigorously studied "classic" therapeutic threshold in the research literature — it's the level that would typically be moved to if recurrence or progression occurred, not the default starting point. It's not used as the baseline here because sustained adherence at that level is genuinely difficult: food and drink choices become significantly more restricted, and long-term sustainability becomes a real concern. Discuss any change to either target with your care team.
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
Daily calorie target
Daily protein target (g)
Daily fat target (g)
⚠ What changing these numbers actually does ▸ show
Calories set the pace, not the destination. Since protein and carbs stay fixed, moving your calorie/fat target changes how big your daily surplus is — that's what controls how fast you gain, not whether the weight is "good" weight. Roughly: ~250–400kcal/day surplus is a slow, controlled gain (~0.2–0.4kg/week); 500kcal+ is faster but increasingly likely to add more fat than lean tissue.
Fat % here is a ketosis requirement, not a body-composition lever.The high fat percentage exists to maintain therapeutic ketosis — it doesn't drive muscle growth. Protein plus resistance training does that. A ketogenic macro split isn't optimised for lean-mass gain the way a moderate-carb bulk would be; without a training stimulus, surplus calories default toward fat regardless of the macro split.
If you're logging Strength Training, that consistent stimulus is what shifts a given surplus toward more muscle and less fat — the macro numbers alone can't do that on their own.
If you're unsure, smaller changes are safer than bigger ones. A modest adjustment you can observe over a week or two beats a large jump you have to guess the effect of.
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?▲▼ moves a device up or down each metric's own list. The pipeline tries each source in order and uses the first one that actually has data for that day and field — a lower device only fills in when everything above it is missing, not just different. Saves automatically to your phone's server as you reorder — takes effect from the next sync, no manual file copying needed.
?Changes take effect on the next sync. A device you add yourself (via "+ Add a new device") can be reordered here for reference, but the pipeline only recognises RingConn, Withings, Zepp/Amazfit, Garmin, Health Connect and Manual — anything else is skipped when saving, without affecting the rest of that metric's order. "Manage devices" below removes a device you've stopped using from every metric's list at once — its past data in combined.csv is never touched, only future syncs stop consulting it, and it can be restored any time.
⚠ Advanced — Troubleshooting Tools ▸ show
Not needed for everyday use — only useful if something looks wrong and needs diagnosing.
⚖️ Body Comp Debug ▾ hide
🌙 Rollover Debug Log ▾ hide
💗 Wellness Score Debug ▾ hide
Raw data behind Trends → Wellness Balance card's 4 scores - each score
averages every real day of data within whatever period is currently
selected on Trends (Today/7 Days/30 Days/All/Custom), so it can
legitimately differ from a single-day figure shown elsewhere (e.g. a
wearable app's own "today" score). Added 28/09/2026 after Pete Spence
questioned Activity/Vitals looking wrong against his wearable's
same-day numbers - this panel exists so a "does the score match the
real data" question can be checked directly, without guessing.
Tap this section to load.
🔍 Log Mutation Debug ▾ hide
Watch a specific date on every save:
💾 Save Debug Trace ▾ hide
Not needed for everyday use — only useful if something looks wrong and needs diagnosing.
📋 Copy Diagnostics for Claude ▾ hide
Bundles the diagnostic sources below into one block, ready to paste into a chat with Claude. Each shows whether it currently has anything to contribute — unticked/empty ones are skipped automatically, but you can override either way before copying.
🩺 App Health Check ▾ hide
📝 Settings Change Log ▾ hide
🐛 JS Error Log ▾ hide
✍️ Manual Entry Log ▾ hide
🏷 Label Read Log ▾ hide
🧾 Pipeline & Health Connect Log ▾ hide
What the background import actually did: each run, which source filled which day, errors. Shows every log file the server keeps, where each one lives and when it was last written, so a log that has gone quiet is obvious.
📐 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:
Manual body fat % (fallback)
If a connected smart scale is syncing body fat data, that's used automatically and takes priority over this. Not everyone has one — this manual figure is the fallback for anyone who doesn't, and stays in effect until synced data appears. Leave both blank and this falls back to Mifflin-St Jeor entirely — Katch-McArdle needs a real body fat figure to mean anything, not a guess.
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.
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.
⚙️ Checkpoint times are set per-period (and can be left blank to skip one entirely) under Manage → Supplements, not here.
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.
Timeout after (minutes)
Default 5 minutes. A countdown appears once you're genuinely idle (not during active use), with a warning before the pause actually happens.
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 goalhours
A meal breaks the fast atkcal
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.
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
Replaces everything in the app (today's log, history, library, recipes, routines, supplements, symptoms, treatments, settings) with a backup. You are asked to confirm first. Use the export above to make a backup file; the app also saves one to the phone's server each day.
Sync Wearable Data ▾ hide
Checking local server…
Zepp zip detected — enter password
Your Zepp/Amazfit export is encrypted. Enter your Zepp app password to extract it automatically.
⚠ Local server not running
The MaxedHealth local server has stopped. This usually happens because:
Your phone restarted and Termux:Boot didn't auto-start it yet
The server process was killed to free memory
Still stuck? Start it by hand in Termux
mhstart
The sync button will go green within a few seconds. Important: Keep Termux open in the background — minimise it with the home button, don't swipe it away. Swiping Termux away stops the server.
On reboot, the server restarts automatically via Termux:Boot.
Run a device by hand (advanced)
▸ show
Run specific devices or trigger via the local server API:
Got a device not natively supported? Upload its CSV export and AI will map the columns automatically.
No file loaded yet.
Proposed Column Mapping — confirm before saving
Preview (first 3 rows after mapping)
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.
Choose which fields your Manual Entry form shows. Core fields are always included; add anything else you have data for.
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.
Saved Device Configs
Chart
✕
↻ Rotate for wider view
NEW RECIPE
❓
×
SERVINGS
ADD INGREDIENT
KCAL
PROT g
FAT g
CARBS g
FIBRE g
POLYOLS g
STEPS — drag order with ▲▼, e.g. move "boil pasta" earlier so it's not started too late
❓ What can I say? (voice command list)
TOTAL (whole recipe)
SELECT FROM LIBRARY
✕
✕
SEARCH EVERYTHING
✕
✕
SAVED PROMPTS
✕
✕
Sort:Most usedA–ZRecently added
ADD A NEW PROMPT
WHERE SHOULD THIS APPEAR?
📋 Today
📊 History
🔀 Both
🎙
Step 1 of 1
❓
×
▾ INGREDIENTS (tap to show)
00:00
VOICE COMMANDS
×
🆕 TRY SOMETHING NEW
×
A genuinely new recipe idea, full ingredients/weights/method — may need things you don't have yet. Surprise sweet or savoury gives you two: one made from what you have, and one new idea inspired by a recipe found on the web. For what's ready right now from what's already in, use "Next meal idea" instead.
Builds a recipe using ingredients you already have logged, sized to your macro targets — not something new to buy in.
GO TO DATE
×
‹
›
Missed dayLogged
LOG MISSED DAY
Enter a date you forgot to log. Describe what you ate and the AI will calculate the totals, or enter the numbers directly.
DATE (DD/MM/YY)
✨ Describe meals
✏ Enter totals
WHAT DID YOU EAT?
KCAL
PROTEIN g
CARBS g
FAT g
FIBRE g
POLYOLS g
NOTES (optional)
PASTE MEAL
Paste a line copied from Today's Log or History (📋) to add it as a new entry with these exact values — no AI re-estimate, since the numbers are already known.
DESCRIPTION
AMOUNT (optional)
KCAL
PROT g
FAT g
CARBS g
FIBRE g
POLYOLS g
DATE (DD/MM/YY) — defaults to today, change to add to a past day instead
TIME EATEN (optional)Leave empty for a past day and the meal is ignored when working out fasts
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)
VOICE ADD TO LIBRARY
Say each food with its amount, e.g. "ASDA mixed nuts, 100 grams". Say "done" when finished — nothing outside your library is affected.
UPDATE WEIGHT
Enter today's weight (kg)
Missed a day (e.g. no scales away from home)? Pick the date and enter that day's weight.