ForHosting KIT · Health & fitness

Cycling heart rate zones

With a maximum heart rate of 190, endurance rides sit at 114–133 bpm and threshold efforts at 152–171: five cycling zones from one measured pulse, either your peak or your lactate threshold. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Heart rate
190
Basis
Hrmax
You get
Zone count
5 bpm
Zone1 name
recovery
Zone1 pct lo
50
Zone1 pct hi
60

Cycling heart rate training zones turn one measured pulse — maximum heart rate or lactate threshold heart rate — into the beats-per-minute windows a rider should hold for recovery spins, endurance miles, tempo work, threshold efforts, and VO2max intervals. Percent of maximum is the chart most computers print when you only know a peak pulse. Percent of lactate threshold is the Coggan-style cycling layout coaches prefer after a twenty-minute time trial.

Why cyclists split intensity by heart rate and which anchor to send

Cyclists prescribe intensity with heart-rate bands because a power meter is not always on the bike and a perceived-effort scale is hard to log across a club. Two anchors dominate coaching practice, and they answer different questions. Maximum heart rate is the highest pulse recorded in a maximal effort, a lab ramp, or a well-executed hill repeat; zones are then simple percentages of that ceiling, which is what most head units print when the rider only typed an HRmax.

Lactate threshold heart rate — LTHR — is the pulse you can hold for about an hour, usually estimated from a twenty-minute time trial after a structured warmup, and it sits below the true maximum. Percent of LTHR is the Coggan-style cycling layout: recovery sits well below threshold, endurance occupies the aerobic base, tempo is the upper aerobic band, threshold straddles LTHR itself, and VO2max work lives above it, with the top of that fifth band capped at one hundred twenty percent of LTHR so the bpm range stays finite.

This calculator never estimates maximum heart rate from age and never subtracts a resting pulse; those are different search intents served by other products.

Where a cycling heart rate zone calculator earns its keep

Riders who already measured a peak pulse or a twenty-minute LTHR need bpm windows before they write next week's endurance and threshold sessions, not another age-predicted maximum or a reserve chart that also wants resting heart rate. A publisher ranking for cycling heart rate zones is targeting that intent: people who search as cyclists, who think in HRmax or LTHR, and who want recovery through VO2max in beats per minute.

Club coaches and gran-fondo programmes can send the same anchor for every member and print identical cards instead of rebuilding the percent table in a spreadsheet that drifts between coaches. Training logs, head-unit companion apps, and indoor-trainer platforms that already store one of the two anchors can request structured zone1 through zone5 bounds so a session that says stay in endurance has a numeric floor and ceiling. Failed validation does not consume balance.

Build next week's cycling sessions from a known HRmax

Send a measured peak pulse with basis hrmax and drop the five bpm windows onto endurance, tempo, and threshold workout cards without rebuilding a percent-of-max table.

Convert a 20-minute LTHR test into Coggan cycling zones

After a threshold time trial, send LTHR with basis lthr and get recovery through VO2max bands that sit around lactate threshold instead of around a guessed maximum.

Club programmes and trainer companion apps

Give every rider the same five cycling HR windows from one stored anchor so indoor sessions and group rides quote identical bpm ranges for the same zone name.

Should I use maximum heart rate or lactate threshold heart rate?

Use hrmax when you only know a peak pulse; the five bands are percent of that ceiling. Use lthr after a threshold test; the Coggan cycling table sits around lactate threshold, which is the intensity most endurance sessions actually care about.

How are the five cycling heart rate zones computed?

Each bound is the nearest integer of percent times the anchor you send. For hrmax the percents are 50–60, 60–70, 70–80, 80–90, and 90–100. For lthr they are 50–68, 68–83, 83–94, 94–105, and 105–120.

What happens if heart rate is zero, negative, or missing?

A training zone is a positive pulse in bpm; zero, negatives, empty strings, and non-finite values are rejected and are not billed.

Do I need resting heart rate or age?

No. This product does not estimate maximum from age and does not subtract rest. Send only the cycling anchor you have — HRmax or LTHR — plus optional basis.

What are my cycling zones with a maximum heart rate of 190?

Recovery 95–114 bpm, endurance 114–133, tempo 133–152, threshold 152–171 and VO2max 171–190. Each band is a percentage of the maximum, from 50 to 100 percent in steps of ten; neighbouring bands share their edge.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/sports/cycling-hr

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/sports/cycling-hr \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"heart_rate":190}'
{
  "heart_rate": 190
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "sports.cycling_hr",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

min_bpm1e-12
max_bpm250
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

This cycling heart rate zone calculator accepts a positive finite heart_rate in bpm and an optional basis of hrmax or lthr, then returns five adjacent training bands with percent edges and integer bpm ranges. Missing, non-finite, or non-positive heart rate fails with invalid_input and is not billed.

Why cyclists split intensity by heart rate and which anchor to send

You supply one positive finite heart_rate and a basis of hrmax or lthr, and you receive five bpm windows a session card can quote without a spreadsheet.

Input contract, the two percent tables, and how each bpm bound is computed

Heart rate must be a finite positive number greater than zero and at most 250 bpm. On the hrmax table the five bands are recovery 50–60 percent, endurance 60–70, tempo 70–80, threshold 80–90, and vo2max 90–100 of maximum. Adjacent bands share a boundary by design. POST a JSON body with one required finite number and one optional selector. heart_rate is the anchor pulse in beats per minute; aliases hr, bpm, pulse, hr_max, max_hr, hrm, lthr, lactate_threshold, and lactate_hr are accepted. basis selects the percent table: hrmax (default) uses percent of maximum heart rate; lthr uses Coggan percent of lactate threshold heart rate. If you omit basis and the value arrived under an lthr alias, the engine selects lthr so a coach posting only LTHR does not have to remember the selector. Each numeric field may arrive as a JSON number or as a numeric string. Missing fields, empty strings, non-finite values, zero, negatives, a pulse above the isolate ceiling, or a basis outside the published enum fail with invalid_input naming the field and are not billed. On the lthr table they are recovery 50–68 percent, endurance 68–83, tempo 83–94, threshold 94–105, and vo2max 105–120 of LTHR; zone 1 is floored at 50 percent so recovery is a usable band rather than a window that starts at zero bpm, and zone 5 is capped at 120 percent so bpm_hi is finite. Each bound is zone_bpm equals the nearest integer of percent times the anchor. On success the body echoes heart_rate and basis, sets unit to bpm, restates formula, reports zone_count of five, flattens zone1 through zone5 name, percent, and bpm fields for forms, and repeats the same five records in the zones array. Example: heart_rate 190 with basis hrmax yields recovery 95–114 bpm and vo2max 171–190 bpm. Pricing for a successful item is a flat $0.002.

Where a cycling heart rate zone calculator earns its keep

Keep requests small, pin zone1_bpm_lo through zone5_bpm_hi in tests, and you get stable cycling heart-rate windows for landing pages, club kiosks, and edge workers without standing up a physiology lab of your own. This is a planning and learning tool, not a diagnostic medical device; riders with cardiac conditions, medications that alter heart rate, or physician restrictions should follow professional advice rather than any single five-zone chart alone.

What does the cycling heart rate zone calculator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →