Your account

Profile

Loading...

Loading profile...

{{ loadError }}

Public profile

A page anyone can see, like a GitHub profile: your name, the details below, your year of training as squares, your achievements and the activities you publish. Private until you turn it on. Your email, notes and health metrics are never on it, and your weight and training activity only if you switch them on.

Public Private
hq.training/

Up to six, separated by commas. Each is a badge on your profile.

View profile

Also at {{ publicDomainLabel }}

See other profiles

{{ publicNotice }}

{{ publicError }}

Fitness activity

{{ activityHeading }}

{{ activityTotals.active_days }} active days {{ activityTotals.hours }} hours {{ activityTotals.load.toLocaleString() }} load Longest streak {{ activityTotals.longest_streak }} {{ activityTotals.longest_streak === 1 ? 'day' : 'days' }} Current streak {{ activityTotals.current_streak }} {{ activityTotals.current_streak === 1 ? 'day' : 'days' }} {{ activityTotals.week_streak }} {{ activityTotals.week_streak === 1 ? 'week' : 'weeks' }} in a row
  • Squares are shaded by training load — duration × intensity² — against your own busiest days, so an hour of intervals outweighs an hour of walking.
  • Intensity comes from your device's TSS when it recorded one, then IF or RPE, then average heart rate against your threshold (or the highest heart rate you have recorded), and only then the sport.
  • Only completed sessions count. The same session from two sources — say Garmin and TrainingPeaks — counts once.
  • A day without a workout still counts at 10,000 steps or more.

Put this chart on your blog

A live copy of this chart for any web page. It shows training load per day, the sports and the totals — never workout titles, notes, health metrics or your name — and anyone who can see the page can see it.

Loading…

Preview of the embedded fitness activity chart
Web component — HTML, with a tooltip
{{ embed.snippets.html }}

Optional attributes: year="2025", theme="light|dark", years for GitHub's year list beside the graph (or years="top" for tabs above it), color="green" or a hex colour, heading="false", legend="false", source="Garmin" for a line naming where the data comes from (or note="…" in your own words).

Image — Markdown, READMEs, newsletters
{{ embed.snippets.markdown }}
Either one stops every existing embed on its next load.

Weight

Last weigh-in {{ weightLatest ? weightLatest.weight.toFixed(1) : '' }} {{ weightUnit }} on {{ weightLatest ? weighInDate(weightLatest.date) : '' }} Body fat {{ weightLatest ? weightLatest.bodyFat : '' }}% Range {{ weight && weight.lowest !== null ? weight.lowest.toFixed(1) : '' }}–{{ weight && weight.highest !== null ? weight.highest.toFixed(1) : '' }} {{ weightUnit }} {{ weightCount.toLocaleString() }} weigh-ins

No weigh-ins yet. Connect a smart scale — Withings or Renpho — and its whole history comes across on the first sync.

Connect a scale

Put this chart on your site

A live copy of your weight chart for any web page: each weigh-in, its body fat and the trend, and nothing else. Anyone who can see the page can see your weight. It has its own token, so the activity chart's embed never shows it.

Loading…

Preview of the embedded weight chart
Web component — HTML, with a crosshair
{{ weightEmbed.snippets.html }}

Optional attributes: range="3m|1y|5y|all", unit="kg|lb", theme="light|dark", heading="false", align="center", source="Withings" for a line naming the scale (or note="…" in your own words); drop ranges to hide the range tabs.

Image — Markdown, READMEs, newsletters
{{ weightEmbed.snippets.markdown }}
Either one stops every existing embed on its next load.
Profile saved successfully!
{{ saveError }}
{{ memberNotice }}

Account

Emergency Contact

HQ.training member

{{ membershipCard.member_name }}

{{ membershipCard.organization_name }} · {{ membershipCard.plan_name }}

{{ membershipCard.membership_status }}
Membership check-in QR code

Show this code at the front desk or kiosk to check in.

Required agreement · v{{ waiver.version }}

{{ waiver.name }}

{{ waiver.signed ? 'Signed' : 'Signature required' }}
{{ waiver.content }}
Signed by {{ waiver.signature.signer_name }} on {{ dateLabel(waiver.signature.signed_at) }} · Document {{ waiver.signature.document_hash.slice(0, 12) }}…

Public progress link

Off unless you turn it on. While it is on, anyone with the link sees the last {{ share.window_days }} days of whatever you tick below — and, with workouts on, your planned sessions for the next {{ share.upcoming_days }} days plus weekly planned hours up to {{ share.plan_weeks }} weeks out. No login needed. Your name, email, gym, coach, body weight and private workout notes are never included.

Live Private

The only name the page shows. Blank means visitors just see “This athlete”.

Your link

{{ share.url }}

Preview Copied

The link stops working immediately for everyone who has it. Turning sharing back on issues a different link.

Tick at least one thing to share first.

{{ shareNotice }}

{{ shareError }}

Athlete Profile

{{ weightKgError }}

{{ heightCmError }}

{{ weeklyHoursTargetError }}

Coach Profile

{{ maxAthletesError }}