# Pulse > Open source, self-hosted health scores from Google Health API data, built and tested on Fitbit Air. This is the public project site, not a user's private health dashboard. Scores are estimates for wellness, not medical diagnoses. Product comparisons state when outside facts were checked. The optional AI coach uses the provider configured by the user. Every page below is also available as Markdown at the linked .md URL; the whole site in one file is at /llms-full.txt. ## Start here - [Pulse overview](https://pulse.portlabs.in/index.md): Features, hosting and privacy. - [Setup guide](https://github.com/adityaongit/pulse/blob/main/docs/setup.md): Install and configure your instance. - [Glossary](https://pulse.portlabs.in/glossary/index.md): Wearable and scoring terms. - [All metrics](https://pulse.portlabs.in/metrics/): Every score Pulse computes, with its method. - [All comparisons](https://pulse.portlabs.in/compare/): Pulse, Google Health and other wearables, dated. - [Blog](https://pulse.portlabs.in/blog/): Wearable metrics explained, newest first. ## Metrics - [Recovery](https://pulse.portlabs.in/metrics/recovery/index.md): How ready your body is to take on strain today, from 0 to 100%. - [Strain](https://pulse.portlabs.in/metrics/strain/index.md): The cardiovascular load of your day, on a scale from 0 to 21. - [Strain Target](https://pulse.portlabs.in/metrics/strain-target/index.md): A Strain range for today, set by your Recovery and recent load. - [Sleep Performance](https://pulse.portlabs.in/metrics/sleep-performance/index.md): How well last night’s sleep met your need, from 0 to 100%. - [Sleep Planner](https://pulse.portlabs.in/metrics/sleep-planner/index.md): Tonight’s sleep need, and the bedtimes that meet it. - [Pulse Age](https://pulse.portlabs.in/metrics/pulse-age/index.md): How old your body behaves, and how fast that is changing. - [Stress Monitor](https://pulse.portlabs.in/metrics/stress-monitor/index.md): How far your heart rate sits above your calm level, from 0 to 3. - [Energy Bank](https://pulse.portlabs.in/metrics/energy-bank/index.md): An estimate of how much energy you have left today, 0 to 100%. - [Health Monitor](https://pulse.portlabs.in/metrics/health-monitor/index.md): Last night’s five vitals against your own normal ranges. - [Fitness level](https://pulse.portlabs.in/metrics/fitness-level/index.md): Your VO2 max compared with people of your age and sex. - [Training balance](https://pulse.portlabs.in/metrics/training-balance/index.md): Whether your recent strain is above or below what you are used to. - [Behaviour insights](https://pulse.portlabs.in/metrics/behaviour-insights/index.md): How each behaviour you log goes with your next day’s scores. - [Sleep consistency](https://pulse.portlabs.in/metrics/sleep-consistency/index.md): How closely your sleep and wake times repeat from day to day. - [Fitness, fatigue and form](https://pulse.portlabs.in/metrics/fitness-fatigue-form/index.md): Your long-term and short-term training load, and the gap between them. - [Heart rate recovery](https://pulse.portlabs.in/metrics/heart-rate-recovery/index.md): How far your heart rate drops in the minute after a workout. - [Heart rate variability (HRV)](https://pulse.portlabs.in/metrics/hrv/index.md): The night-to-night signal Recovery leans on most, read from your Google Health data. - [Resting heart rate](https://pulse.portlabs.in/metrics/resting-heart-rate/index.md): Your lowest sleeping heart rate, and the vital most scores lean on. ## Comparisons - [Does the Fitbit Air have strain and recovery scores?](https://pulse.portlabs.in/compare/fitbit-air-recovery-and-strain/index.md): The Google Health app gives Fitbit Air owners Readiness and Cardio Load, not a 0-100% Recovery or a 0-21 Strain. How to get both, free and self-hosted. Facts checked 2026-10-09. - [Pulse and subscription recovery wearables, compared](https://pulse.portlabs.in/compare/pulse-vs-subscription-wearables/index.md): Pulse on a Fitbit Air next to a recovery wearable sold with a membership: which scores each has, how you pay, where the data lives, and who each suits. Facts checked 2026-10-03. - [Recovery and strain tracking without a subscription](https://pulse.portlabs.in/compare/recovery-tracking-without-subscription/index.md): Open-source, subscription-free ways to get recovery, strain and sleep scores: Pulse for the Fitbit Air, plus noop, Hælan and fitbit-grafana. Facts checked 2026-10-03. - [Google Health Premium, WHOOP and Pulse: what each adds](https://pulse.portlabs.in/compare/google-health-premium/index.md): What a Fitbit Air does free, what Google Health Premium adds, how a WHOOP membership compares on price, and what Pulse computes on top. Facts checked 2026-10-09. - [Fitbit Air vs Garmin Cirqa: the scores compared](https://pulse.portlabs.in/compare/fitbit-air-vs-garmin-cirqa/index.md): Two screenless bands: what Garmin's Body Battery and Training Readiness and Fitbit Air's Readiness and Cardio Load measure, and where they differ. Facts checked 2026-10-09. - [Fitbit Air vs Amazfit Helio Strap: the scores compared](https://pulse.portlabs.in/compare/fitbit-air-vs-amazfit-helio-strap/index.md): Two screenless, subscription-optional bands: what Fitbit Air's Readiness and Cardio Load and Amazfit's BioCharge and PAI measure, and where they differ. Facts checked 2026-10-09. - [Fitbit Air vs Oura Ring: sleep and readiness](https://pulse.portlabs.in/compare/fitbit-air-vs-oura-ring/index.md): Oura's Readiness and Sleep scores against Fitbit Air's Daily Readiness and Sleep Score: what goes into each, how they are explained, and the cost of each. Facts checked 2026-10-09. - [Google Health app vs Garmin Connect, as dashboards](https://pulse.portlabs.in/compare/google-health-vs-garmin-connect/index.md): The Google Health app and Garmin Connect as dashboards: which scores each shows, what is free, what is paid, and where a separate app like Pulse adds to them. Facts checked 2026-10-09. - [Pixel Watch vs WHOOP: scores, cost and data](https://pulse.portlabs.in/compare/pixel-watch-vs-whoop/index.md): A smartwatch with Google Health scores against a recovery band on a membership: what Readiness and Cardio Load do, what Recovery and Strain do, and the cost. Facts checked 2026-10-09. - [How each brand builds its recovery or readiness score](https://pulse.portlabs.in/compare/recovery-scores/index.md): Google Health, WHOOP, Garmin, Amazfit, Oura, Samsung, Apple and Pulse: the recovery or readiness score each builds, and the inputs each vendor says it uses. Facts checked 2026-10-09. ## Blog - [Does Apple Watch have a recovery score?](https://pulse.portlabs.in/blog/apple-watch-recovery-score/index.md): Since September 2026, yes on two models: Readiness, 0-10. Older watches have Vitals, Training Load and Sleep Score but no single daily score. - [Which Fitbit and Pixel devices track which metrics](https://pulse.portlabs.in/blog/fitbit-pixel-metrics-by-device/index.md): Which Fitbit and Pixel Watch models track Readiness, Cardio Load, Active Zone Minutes, HRV, SpO2 and skin temperature, from Google's own help pages. - [Google Health API for self-hosters: scopes and user cap](https://pulse.portlabs.in/blog/google-health-api-for-self-hosters/index.md): What a self-hosted app needs from the Google Health API: the OAuth scopes Pulse asks for, the 100-user cap on unverified apps, and the Cloud project steps. - [WHOOP membership cost: One, Peak and Life in 2026](https://pulse.portlabs.in/blog/whoop-membership-cost/index.md): WHOOP One, Peak and Life cost $199, $239 and $359 a year in the US, and from ₹21,990 in India, as of October 2026. What each includes and what is unconfirmed. - [Pixel Watch readiness or sleep score missing? Checks](https://pulse.portlabs.in/blog/pixel-watch-readiness-sleep-score-missing/index.md): Why a Pixel Watch shows no readiness or sleep score: the 7-night baseline, 3-hour sleep minimum, missing sleep stages, fit and sync, in order of likelihood. - [Google Health vs Health Connect vs Apple Health](https://pulse.portlabs.in/blog/google-health-vs-health-connect-vs-apple-health/index.md): What the Google Health app, Android's Health Connect, Apple Health and the Google Health API each do, how they sync, and what to check when data goes missing. - [Why WHOOP, Garmin and Oura scores disagree](https://pulse.portlabs.in/blog/whoop-recovery-vs-body-battery-vs-oura-readiness/index.md): WHOOP Recovery, Garmin Body Battery and Oura Readiness can tell you different things on the same morning. Why, and how to read them side by side. - [Fitness Age vs Pulse Age vs WHOOP Age](https://pulse.portlabs.in/blog/fitness-age-vs-pulse-age-vs-whoop-age/index.md): Garmin Fitness Age, WHOOP Age and Pulse Age all put a number of years on your body, but they measure different things. How each works and how far to trust it. - [Open-source WHOOP alternatives: what exists in 2026](https://pulse.portlabs.in/blog/open-source-whoop-alternatives/index.md): A survey of open-source and source-available projects that stand in for a WHOOP subscription: licences, supported devices and activity, checked October 2026. - [Oura Readiness explained, and how Recovery differs](https://pulse.portlabs.in/blog/oura-readiness-explained/index.md): The nine contributors behind Oura's Readiness score, what each one measures, why it dips, and how it differs from a morning Recovery percentage. - [WHOOP alternatives with no subscription (Oct 2026)](https://pulse.portlabs.in/blog/whoop-alternatives-no-subscription/index.md): WHOOP alternatives with no subscription, dated and priced: Fitbit Air, Garmin Cirqa, Polar Loop, Amazfit Helio Strap, Apple Watch apps and Pulse. - [Garmin Training Status 'Unproductive': what to do](https://pulse.portlabs.in/blog/garmin-training-status-unproductive/index.md): Unproductive means your fitness estimate is falling despite training, and Garmin says that is not always overtraining. What feeds it and what to check first. - [Fitbit dashboard on your own server: Grafana or Pulse](https://pulse.portlabs.in/blog/fitbit-grafana-vs-pulse/index.md): fitbit-grafana draws your raw Fitbit data in Grafana. Pulse computes scores like Recovery and Strain. What each needs, does and leaves out. - [Is Google Health Premium worth it?](https://pulse.portlabs.in/blog/google-health-premium-vs-free/index.md): What stays free in the Google Health app and what moves behind Premium: scores, Target Load, sleep insights and the coach, with prices as of October 2026. - [WHOOP Strength Trainer vs heart-rate-only strain](https://pulse.portlabs.in/blog/whoop-strength-trainer-vs-heart-rate-strain/index.md): Why heart rate alone underrates weightlifting, how WHOOP Strength Trainer adds muscular load, and what that means for any strain score built on heart rate. - [Garmin VO2 max accuracy: watch vs lab](https://pulse.portlabs.in/blog/garmin-vo2-max-accuracy/index.md): What peer-reviewed studies found when Garmin's VO2 max was compared with lab gas analysis: errors of roughly 3 to 10%, and worse for highly trained runners. - [Fitbit VO2 max and Cardio Fitness: how accurate?](https://pulse.portlabs.in/blog/fitbit-vo2-max-accuracy/index.md): What Fitbit's Cardio Fitness Score is built from, what the one lab validation found showed, and how to read the number you get. - [How to export your Fitbit data in 2026](https://pulse.portlabs.in/blog/export-fitbit-data/index.md): Three ways to get your Fitbit data out: Google Takeout, the Fitbit Data Export page and the Google Health API, with what each gives you and its limits. - [Garmin stress level always high? What it measures](https://pulse.portlabs.in/blog/garmin-stress-level-always-high/index.md): Garmin's stress score is a 0-100 reading of heart rate variability while you are still, not a measure of feelings. Bands, why it runs high, and what to check. - [WHOOP Journal: which behaviours move your recovery](https://pulse.portlabs.in/blog/whoop-journal-behaviours/index.md): How WHOOP Journal turns yes/no entries into Behavior Insights, how many entries it needs, which behaviours to log first, and why the results are correlations. - [Active Zone Minutes: what your Fitbit really counts](https://pulse.portlabs.in/blog/fitbit-active-zone-minutes/index.md): How Fitbit's Active Zone Minutes are earned, how they differ from Cardio Load and active minutes, and why a number can look off after a workout. - [Garmin sleep score explained, and a published alternative](https://pulse.portlabs.in/blog/garmin-sleep-score-explained/index.md): Garmin's 0-100 sleep score blends duration, quality and HRV-based stress, with unpublished weights. The bands, a typical score, and a published alternative. - [Amazfit BioCharge vs Garmin Body Battery](https://pulse.portlabs.in/blog/amazfit-biocharge-vs-garmin-body-battery/index.md): Both are 0-100 energy gauges. What Amazfit and Garmin actually publish about each, why BioCharge is now HybridCharge, and what a score can't tell you. - [WHOOP Healthspan and Pace of Aging, explained](https://pulse.portlabs.in/blog/whoop-healthspan-pace-of-aging/index.md): WHOOP Age is a six-month estimate from nine habits and vitals. Pace of Aging is the 30-day speedometer. What goes in, what it means, and what it can't tell you. - [Fitbit resting heart rate high? Likely causes](https://pulse.portlabs.in/blog/fitbit-resting-heart-rate-high/index.md): A higher Fitbit resting heart rate usually has an ordinary cause: alcohol, caffeine, poor sleep, illness, a hard week. How to tell, and when to see a doctor. - [How to improve your sleep regularity](https://pulse.portlabs.in/blog/sleep-regularity-index/index.md): What moves your Sleep Regularity Index, with worked examples of late weekends and naps, and the research on why a regular schedule matters. - [Garmin Load Ratio and Acute Load: the ACWR link](https://pulse.portlabs.in/blog/garmin-load-ratio-acute-load/index.md): How Garmin's Acute Load and Load Ratio work, how they relate to the acute:chronic workload ratio (ACWR) from sports science, and why that idea is contested. - [Does Fitbit Air have Body Battery? The closest match](https://pulse.portlabs.in/blog/fitbit-air-body-battery/index.md): No. Body Battery is Garmin's metric. Here is what Google Health gives you instead, why it isn't the same, and how to get a running energy figure. - [WHOOP sleep need and sleep performance, explained](https://pulse.portlabs.in/blog/whoop-sleep-need-explained/index.md): How WHOOP sets your nightly sleep need, what Sleep Performance scores, why 100% is hard to hit, and what is and isn't published about the weights. - [Fitbit Target Load too high or low? How it is set](https://pulse.portlabs.in/blog/fitbit-target-load/index.md): How Google sets Target Load on free and Premium plans, why it can feel wrong, and what to do. Plus how a daily Strain Target built from Recovery works. - [Garmin HRV Status unbalanced: what it means](https://pulse.portlabs.in/blog/garmin-hrv-status-unbalanced/index.md): Unbalanced means your seven-day HRV average has left your personal baseline range, high or low. What Garmin says it means and what to check before worrying. - [Fitbit Resilience replaced the stress score. Now what?](https://pulse.portlabs.in/blog/fitbit-resilience-stress-score/index.md): Google Health swapped the 0-100 Stress Management Score for Resilience on 19 May 2026. What Google documents, what it doesn't, and how to read a Low day. - [Fitbit sleep score: the six parts and what is good](https://pulse.portlabs.in/blog/fitbit-sleep-score-explained/index.md): Google lists six parts of the sleep score and four bands. What each part rewards, what counts as good, and what the help page leaves unsaid. - [What is a good Body Battery? Garmin's bands explained](https://pulse.portlabs.in/blog/good-body-battery/index.md): Garmin's four Body Battery bands, what counts as good in the morning and evening, why yours may sit low, and what the manual says does and doesn't move it. - [What a WHOOP Recovery score actually measures](https://pulse.portlabs.in/blog/whoop-recovery-score-explained/index.md): WHOOP Recovery is a 0-100% morning score from overnight HRV, resting heart rate, respiratory rate and sleep. What it can tell you, what WHOOP does not publish. - [Fitbit Daily Readiness explained, and how Recovery differs](https://pulse.portlabs.in/blog/fitbit-daily-readiness-explained/index.md): What Daily Readiness is built from, what its bands mean, what Google doesn't publish, and how a 0-100% Recovery with published weights differs. - [What is Amazfit PAI? Points, target and daily strain](https://pulse.portlabs.in/blog/amazfit-pai-explained/index.md): PAI is a weekly heart-rate score from Norwegian research: reach 100 over any rolling seven days. How it works and how it differs from a daily strain score. - [HRV 0 or "not tracked" on Fitbit Air? What to check](https://pulse.portlabs.in/blog/fitbit-air-hrv-zero/index.md): HRV showing 0 or blank on a Fitbit Air usually means too little sleep, unstaged sleep or a loose fit. What Google says, what forums report, what to do. - [Garmin Training Readiness always low: causes](https://pulse.portlabs.in/blog/garmin-training-readiness-always-low/index.md): Why Garmin Training Readiness sits at Low or Poor: the six inputs Garmin lists, which ones usually hold it down, and what to check first. - [WHOOP Strain explained: scale, levels, what is good](https://pulse.portlabs.in/blog/whoop-strain-explained/index.md): WHOOP Strain is a 0-21 score of a whole day's cardiovascular load. What the bands mean, why it is logarithmic, and how to get a similar number from a Fitbit. - [Cardio Load vs Strain: what the numbers mean](https://pulse.portlabs.in/blog/cardio-load-vs-strain/index.md): Fitbit's Cardio Load is an open-ended daily total with no published scale; Strain is a capped 0-21 score. What each measures and why they don't convert. - [What is a good HRV by age? Your baseline matters more](https://pulse.portlabs.in/blog/good-hrv-by-age/index.md): Real RMSSD and SDNN averages by age decade from a study of 1,906 healthy adults, why wearable HRV differs from lab values, and how to judge your own. - [Fitbit readiness always low? Check these 6 things](https://pulse.portlabs.in/blog/fitbit-readiness-always-low/index.md): A low or stuck Daily Readiness score usually traces back to sleep length, a raised resting heart rate, a short baseline or missing HRV. Six checks, in order. ## Optional - [Everything in one file](https://pulse.portlabs.in/llms-full.txt): Every page above as Markdown, concatenated. - [Source code](https://github.com/adityaongit/pulse): Implementation, tests and license. - [Privacy policy](https://pulse.portlabs.in/privacy/): Public website and self-hosted app data handling. - [Terms](https://pulse.portlabs.in/terms/): License and use of Pulse.