Friel Training Zones
{{ headlineZone }}
Threshold {{ effectiveThresholdDisplay }} · {{ thresholdSourceLabel }}
Discipline {{ disciplineLabel }} {{ testMethodLabel }} Offset {{ offset_bpm }} bpm Current {{ current_hr }} bpm {{ focusLabel }} · {{ session_minutes }} min
bpm
bpm
min
bpm
bpm
Zone Percent of LTHR BPM range Purpose Copy
{{ z.id }} {{ z.percent_display }} {{ z.bpm_display }} {{ z.cue }}
Zone Minutes Percent Intent Copy
Set a session duration to build a plan.
{{ row.id }} {{ row.minutes_display }} {{ row.percent_display }} {{ row.intent }}

                    
:

Introduction:

Heart rate training zones are intensity ranges that tie a pulse reading to how hard you are working and how it should feel over time. They are often anchored to a threshold heart rate, so lactate threshold heart rate zones for running and cycling stay personal even when pace varies. When the ranges are realistic, they help you keep easy days truly easy, place hard efforts with intent, and compare weeks without overthinking numbers.

Start with a threshold value and a sport, and the calculator converts that anchor into seven zones with beats per minute ranges plus a plain language purpose cue. If you know the average heart rate from a recent test, you can let it estimate the threshold for you and apply a small offset when switching sports. Optionally add a current heart rate to see which zone you are in right now, then add a planned duration to shape a simple session plan.

For example, a cyclist with a threshold around 165 beats per minute might see an endurance range near the mid 130s to mid 140s for steady long rides. With a 60 minute endurance focused workout, the plan can apportion about 33 minutes to endurance and 12 minutes to recovery, with the rest split across moderate zones.

Treat boundaries as guide rails rather than hard walls, since fatigue, heat, caffeine, altitude, and sensor fit can all shift readings on a given day. Retest your threshold periodically and keep the same strap or optical sensor placement when you want week to week comparisons to stay meaningful. If you share a screenshot or exported file, remember heart rate data can be personal.

Technical Details:

Lactate Threshold Heart Rate (LTHR) is a practical intensity anchor that approximates the highest heart rate you can sustain for a long steady effort before fatigue rises quickly. Because heart rate responds to heat, recovery, hydration, and pacing choices, anchoring zones to LTHR helps targets stay personal.

Friel Training Zones define each zone as a percentage band of LTHR, with slightly different bands for cycling and running. The UI note reflects this discipline difference by pointing out that running heart rates often trend a few beats higher than cycling for a similar effort.

The app computes an applied threshold by using either a manual LTHR value or an estimated LTHR derived from a field test average multiplied by a discipline specific factor. An optional offset in beats per minute is then added, and the applied threshold is clamped between 0 and 260 bpm.

Zone boundaries are computed by multiplying the applied threshold by each band limit and rounding to whole beats per minute. If you also provide a session duration and a focus preset, the session plan allocates minutes across zones using a fixed distribution.

Core equations

Tderived = HRtest × ftest override on and HRtest > 0 Tmanual Teffective = min ( 260 , max ( 0 , Tderived + obpm ) )
Symbols and units used in the heart rate zone calculations
Symbol Meaning Unit or Datatype Source
T_manual Manually entered threshold heart rate bpm Input
HR_test Average heart rate from a field test bpm Input
f_test Multiplier chosen by test method and discipline number Constant
o_bpm Offset added to the derived threshold bpm Input
T_effective Applied threshold used to compute zone ranges bpm Derived
p_low, p_high Lower and upper zone proportions of LTHR number Constant
HR_low, HR_high Zone boundary heart rates after rounding bpm Derived
HR_current Current heart rate used for zone lookup bpm Input
M_session Planned workout duration min Input
w_z Focus preset weight for zone z number Constant
m_z Allocated minutes in zone z min Derived

Zone boundaries and interpretation

The zone table is built by multiplying the applied threshold by each band limit, then rounding each boundary to the nearest whole beat per minute. The app uses percent bands to explain the intent of each zone, and uses the rounded bpm boundaries as the daily target.

HRlow = round(plow×Teffective) HRhigh = round(phigh×Teffective)
Friel zone percentage bands for cycling and running
Zone Cycling low % Cycling high % Running low % Running high % Training emphasis
Z1 65 81 65 85 Recovery and aerobic base
Z2 82 89 86 89 Endurance cruising and durability
Z3 90 93 90 94 Tempo and muscular endurance
Z4 94 99 95 99 Sub threshold race specific work
Z5a 100 102 100 102 Super threshold cruise intervals
Z5b 103 106 103 106 VO2 max (maximal oxygen uptake) intervals
Z5c 107 112 107 112 Anaerobic capacity and short sprints

Values close to a boundary are best interpreted with context, since heart rate can drift upward during longer efforts and can lag during short intervals.

Session plan allocation

The session plan is a time in zone template. It multiplies your planned duration by a focus preset distribution, then formats minutes to one decimal place.

mz = Msession × wz
Focus preset time distribution by zone
Focus preset Z1 % Z2 % Z3 % Z4 % Z5a % Z5b %
Recovery 70 30 0 0 0 0
Endurance base 20 55 15 10 0 0
Tempo 15 25 40 15 5 0
Threshold 10 20 25 25 15 5
VO2 and 5K 10 15 15 20 20 20

Test method multipliers

When test override is enabled and a positive test average is provided, the app converts the field test average into an estimated LTHR using a discipline specific multiplier.

Field test methods and their LTHR multipliers
Test method Cycling factor Running factor
20 minute field test 0.95 0.98
30 to 60 minute time trial or race 1.00 1.00
Long steady tempo 0.93 0.97
Lab or direct LTHR 1.00 1.00

Parameters

Key parameters and how they affect results
Parameter Meaning Unit or Datatype Practical range Sensitivity Notes
Threshold HR Your LTHR anchor for the zone model bpm 90 to 230 High Used directly when test override is off.
Test average Average HR from a steady field test bpm 0 to 240 High Used only when override is on and value is positive.
Test method Defines the multiplier that estimates LTHR enum tt20, tt30, steady, lab Medium Factors differ slightly by discipline.
Discipline offset Bpm adjustment applied after threshold estimation bpm Any number Medium Useful when running and cycling thresholds differ.
Current HR Instant HR used to label the current zone bpm 0 to 260 Low Zone lookup is inclusive on both boundaries.
Session duration Total minutes for the time in zone plan min 0 and above Low Minutes are allocated only when duration is positive.

Units, precision, and rounding

  • Heart rate values are expressed in beats per minute and zone boundaries are rounded to the nearest whole bpm.
  • Zone percentage bands are displayed as whole percent values.
  • Session minutes are rounded to 0.1 minute and trailing .0 is removed for whole minutes.
  • The decimal separator is a dot and rounding follows round(x) behavior for positive numbers.

Validation and bounds

Input validation rules and limits
Field Type Min Max Step or Pattern Error text Placeholder
Discipline enum cycling, running
Threshold HR number 90 230 step 1 Enter a threshold heart rate above 0 bpm. Threshold looks high. Keep it below 230 bpm.
Current HR number 0 240 step 1 Current heart rate must be 260 bpm or less.
Session duration number 0 step 1 Session duration cannot be negative. 60
Session focus enum recovery, endurance, tempo, threshold, vo2
Test average number 0 240 step 1 Test average cannot be negative.
Test method enum tt20, tt30, steady, lab
Apply test override boolean true or false
Discipline offset number step 1 Offset must be a number. 0

Outputs and formats

Supported output formats
Output Formats What it contains
Zones Table, CSV, DOCX Zone id, percent of LTHR, bpm range, and a purpose cue.
Session plan Table, CSV, DOCX Zone id, allocated minutes, percent, and intent text.
Zones chart PNG, WebP, JPEG, CSV Bar ranges plus reference lines for LTHR and optional current HR.
JSON summary JSON Discipline label, applied threshold, source label, zones, and session allocation.

Networking, storage, and determinism

The provided logic performs all calculations locally and does not call any network endpoints. It also does not write values to local storage or session storage, and identical inputs produce identical zone ranges and allocations.

Downloaded filenames include an ISO timestamp, so filenames differ even when the computed results are the same.

Performance and complexity

  • Zone computation is constant time and evaluates seven zone rows per discipline.
  • Session planning is constant time and evaluates the same seven zones against the chosen distribution.
  • Chart generation is proportional to the number of zones shown and uses an automatically chosen axis scale.

Security considerations

  • Inputs are numeric or enumerated, reducing exposure to untrusted text injection.
  • No secrets, tokens, or keys are requested by the UI in the provided package.
  • Copied or downloaded files can reveal training data, so share them thoughtfully.
  • If the charting file is loaded from a different origin in your environment, mixed content and policy rules can affect whether charts render.

Assumptions and limitations

  • The zone model assumes LTHR is a better anchor than maximum heart rate for steady endurance work.
  • Zones are defined as fixed percent bands, so they do not adapt to heat, altitude, or cardiac drift.
  • Running and cycling use different Z1 and Z2 bands, reflecting discipline specific heart rate patterns.
  • Heads-up Rounding each boundary can create 1 bpm gaps or overlaps near zone edges.
  • Heads-up A gap value between rounded boundaries may not map to a zone label.
  • The applied threshold is clamped at 260 bpm, so extreme values are truncated.
  • Session focus presets allocate minutes only to zones included in the preset distribution.
  • Heads-up The built in focus presets do not allocate any time to Z5c.
  • This calculator does not confirm fitness, readiness, or medical safety.

Edge cases and error sources

  • Non finite numbers like NaN or Infinity are treated as missing by some formatters.
  • Signed zero can appear in floating point math, although displayed values are formatted without it.
  • Denormal floating point values are unlikely within normal bpm ranges but can exist in theory.
  • Rounding ties follow the host language rules, which matters when a boundary lands exactly at .5.
  • Small floating point drift can appear when multiplying decimals such as 0.82 and 164.5.
  • Unicode normalization, grapheme clusters, and non ASCII byte issues do not apply because inputs are numeric.
  • IPv6 compression, wildcard DNS, and trailing slash edge cases do not apply because no address parsing is performed.
  • PRNG caveats do not apply because there is no randomness or sampling.
  • Rapid typing can briefly show intermediate states because recalculation is debounced.
  • Stale cached assets can affect the charting view if the chart file is unavailable or outdated.
  • Copy to clipboard can fail if the browser blocks clipboard access.
  • Download prompts can be blocked by restrictive browser settings.
  • Device heart rate sensors can lag during intervals, shifting the apparent zone during rapid changes.

Scientific grounding

The underlying concepts are the lactate threshold anchor used in endurance physiology, the lab assessed or time trial derived threshold estimates offered as inputs, and the Friel discipline guidance reflected in the zone bands.

Privacy and compliance

Heart rate values can be sensitive, and this page computes and formats results locally with no server side storage in the provided logic.

Step-by-Step Guide:

Heart rate zones turn a threshold anchor into clear intensity targets and a practical time split for a workout.

  1. Choose your Discipline to match cycling or running.
  2. Enter your Threshold HR in beats per minute.
  3. If you have a recent test average, enter Test average and pick a Test method to estimate threshold.
  4. Adjust Discipline offset if you want to translate a threshold between sports.
  5. Optionally enter Current HR to see the current zone label.
  6. Set Session duration and Session focus to generate a time in zone plan.
  7. Review the zone ranges and cues, then copy or download results if you need them for notes.
  • Use a steady test in similar conditions if you want week to week comparisons.
  • If you are near a zone edge, use perceived effort as a secondary check.
  • Heads-up A Threshold HR above 230 bpm triggers an error and blocks results.

Pro tip: retest threshold every few weeks during a training block, and avoid comparing hot weather rides to cool weather runs without adjusting expectations.

Once your zones look reasonable, use them to pace easy days and keep harder sessions inside the intended band.

FAQ:

Is my data stored?

The provided code computes results locally and does not send your values to a server or save them in local storage or session storage. If you copy or download outputs, those files live on your device.

How accurate are zones?

Accuracy depends on how close your threshold estimate is to a true sustained effort threshold. A mismatched test, fatigue, heat, or sensor noise can shift heart rate, so treat zones as guidance and retest periodically.

Boundaries are rounded to whole bpm, so values near an edge can feel ambiguous.
What units are used?

Heart rate is in beats per minute, zone definitions are percentages of LTHR, and session allocations are minutes. Minutes are rounded to 0.1 and shown without a trailing .0 when they land on a whole minute.

Can I use it offline?

Zone math and exports do not call any endpoints. The chart view relies on a separate charting file, so that file must be available in your environment for charts to render.

Is there a cost?

This package does not include payments, accounts, or licensing text in the UI. Any pricing or licensing terms are determined by the site that hosts the page.

How do I validate a CSR?

You cannot validate certificate signing requests here. This calculator focuses on heart rate training zones and time in zone planning.

If you meant a different type of check, look for a dedicated security utility.
What is borderline?

A borderline result usually means your current heart rate is near a zone boundary. Because boundaries are rounded to whole bpm, the safest interpretation is that you are straddling two zones and should use feel and breathing to decide.

Why did threshold change?

If test override is enabled and a positive test average is entered, the app replaces the manual threshold with the test average multiplied by the selected factor. The discipline offset is then added to the derived threshold.

Troubleshooting:

  • No results appear: confirm Threshold HR is above 0 and not above 230 bpm.
  • The plan is empty: set Session duration above 0 min and pick a focus preset.
  • Current zone looks wrong: verify you selected the correct discipline and that your sensor is stable.
  • The chart tab is blank: ensure the charting layer loaded successfully, then revisit the chart view.
  • Copy actions do nothing: allow clipboard permissions in your browser settings.
  • Downloads do not start: check whether pop up or download blocking is enabled.

Advanced Tips:

  • Tip Use the same sensor type and placement each test to reduce noise in threshold estimates.
  • Tip If you switch from cycling to running, start with a small offset and refine it after a few steady sessions.
  • Tip When training in heat, accept higher heart rates at the same perceived effort and avoid chasing exact bpm targets.
  • Tip Use Z2 for long steady work, and treat Z4 and Z5 as controlled doses rather than long blocks.
  • Tip If your current heart rate sits near a boundary, aim for the middle of the intended zone instead of hovering at the edge.
  • Tip Compare sessions by looking at time spent in each zone, not only average heart rate.
  • Tip Retest LTHR after major fitness changes, since stale thresholds can shift every zone target.

Glossary:

Lactate Threshold Heart Rate (LTHR)
Sustained hard effort heart rate used as the anchor for zone percentages.
Beats per minute (bpm)
Heart beats counted in one minute.
Zone band
Lower and upper percentage limits of LTHR that define an intensity range.
Applied threshold
Threshold used after optional test override, offset, and clamping.
Test factor
Multiplier that converts a field test average into an estimated LTHR.
Discipline offset
Bpm adjustment applied when translating thresholds between sports.
Time in zone
Minutes allocated to each zone using a focus preset distribution.
VO2 max
Maximal oxygen uptake, associated with short high intensity intervals.
Time trial (TT)
Hard steady effort used as a testing method option.