PowerTrace.
Private saves
DUAL RECORDING ANALYSIS

Align and compare FIT files automatically

Drop up to three power recordings, including two streams from one TrainingPeaks Virtual FIT. Indoor-platform recordings become the reference automatically; you can reorder them. Timelines and detected devices are matched automatically. Compare power, intervals, data quality and relative drift. No account needed for analysis.

Import FIT recordings

Drop FIT recordings here

Choose 1–3 recordings, or one TrainingPeaks Virtual dual FIT, and browse files

.FIT files · up to 25 MB each · processed on your device
Page layout
Analysis functions

Inspect aligned recordings, compare power and follow assessment findings back to the ride data.

01 / ALIGNMENT

Automatic timeline alignment

Files align on import using power patterns, including different offsets across ride sections when stops change the timeline. Supported sections align together; select a section or adjust decimal offsets beside the graph.

02 / POWER ANALYSIS

Power and interval comparison

Inspect exact points and selected-range statistics. Compare full-file power-duration curves and custom key intervals in W and %, using each device’s own best or the same reference effort.

03 / DEVICES & SOURCES

Device and same-source detection

Automatically identifies recording devices and power sensors from FIT metadata, recognized mappings and shared device names, and flags recordings that may share one power source, including ANT+ / Bluetooth recordings.

04 / COMPARISON QUALITY
ApprovedAttention neededSignificant concern

Automatic categorization

Automatically assesses percentage deviation and recording quality using recognized device specifications, the standard ±2% screen or your own limit. Each attention or concern rating explains its cause. Missing optional device information does not lower a category.

05 / CADENCE & POWER

Cadence versus power

Automatically checks power above 0 W against zero cadence from the same or another aligned recording. Reports severity, repeated stop-transition tails and the proportion of ride time affected. Optional cadence and heart-rate panels add context to the power graph.

06 / SAVE & SHARE
▤
Saved comparison3 recordings · Saved privately
✓

Save, share and export

Optionally sign in to save privately or create a read-only share link, viewable without an account. Export a JSON backup or power-curve CSV. Reorder recordings at any time to change the reference.

Automatic checks and interpretation

Native dual recordings

Automatically extracts trainer and power-meter streams from a TrainingPeaks Virtual dual FIT. Shared cadence, heart rate and terrain are labelled as ride context.

Conditions and relative accuracy

Automatically checks for repeated deviation patterns with power, cadence, gradient level and direction, recorded resistance, temperature and pedaling dynamics. Matches other recorded conditions where possible; missing or confounded evidence stays unassessed.

Recording quality

FIT integrity / CRC, coverage, gaps, unexpected zero power, inconsistent patterns, local timing changes and shared-stop response differences. Persistent power steps after coasting are checked at comparable power and cadence, with other recorded conditions controlled where possible.

Power and device consistency

Mean and interval deviations, relative drift at comparable power, power-level-dependent offsets and possible outliers in three-file comparisons. Automatically checks for relative power differences across cadence, power, gradient, elevation, recorded resistance and crank torque. Repeated cadence-stop tails, zero-cadence time proportions and unusual crank settings are also flagged. Device specifications, firmware, battery and crank details appear when available.

Source and processing evidence

Shared sensor identities, near-identical dynamic samples, unusually exact scaling / offset or averaging relationships, and recorded source selection or switching. Ambiguous power sources are marked for confirmation.

Source, timing and cadence findings support follow-up; they can reflect normal recording or processing and do not establish manipulation. Categories distinguish these clues from measured deviation and recording-quality failures. “Approved” is an automated assessment of the assessed section, not a certification of absolute accuracy.

YOUR PRIVATE HISTORY

Saved analyses

COME BACK TO THE DETAILS

Save this analysis

Saves the decoded recordings, device information, time shifts, graph zoom, and view settings privately to your account. Original FIT files are not retained.

Share analysis

Anyone with the link can view and export this snapshot, including ride samples, heart rate and device details. Your other saved analyses stay private. Visitors can explore their own view without changing yours.

The link uses the last saved version. Later saves stay private until you choose Update shared snapshot. Revoke the link to stop future access; copies already downloaded remain available to their recipients.

Remembered device names

Your name history links edits to the original FIT filename, content reference and available device codes. Exact file/device matches can fill future imports; filename-only matches remain suggestions. Shared model-name contributions are available to everyone. Conflicting or single-user contributions remain unverified suggestions.

Sign in · optional

Continue with ChatGPT

How the comparison works

Alignment

Files initially use their FIT timestamps. When you add recordings, automatic alignment searches for matching power patterns across their complete timelines, refines the best match to one-second resolution, and shifts the other recordings against your reference. Correlation is unaffected by a constant power multiplier. Steady rides, repeated intervals and repeated stops can be ambiguous. Alignment first searches with powered correlation (65%) and whole-pattern correlation (35%). When at least three changing 120s sections qualify, final candidates average the whole-pattern score and median section correlation equally, then weight that result by the square root of paired coverage relative to the shorter file. This limits the influence of one large sprint and penalizes matching only a small fraction of the ride. Whole-pattern correlation is retained and used when segment evidence is limited. Up to six separate matches are offered when correlation is at least 0.75, unweighted pattern score is within 0.025 of the best and matched coverage is at least 80% of the best. These are app heuristics, not verified timing probabilities. Compare alternatives across the ride. Manual seconds and timing choices are also beside the graph and keep its current view. A positive shift moves a recording later; a negative shift moves it earlier. Choosing an offset never changes the recorded watt values or warps individual segments. Stopping or calibrating does not itself prove that file timestamps changed. Drag an imported recording to reorder it; the far-left recording is always the reference, including when reopening older analyses.

A low whole-ride correlation can still support a partial match when at least 80% of the shorter recording is paired, at least three raw-power windows support the offset across 180s or more, and unique supported raw seconds reach max(180, min(300, 20% of the shorter file)). This allows a clear later match despite a different opening section. Partial matches remain labelled for inspection.

Assessment range and calibration sections

Automatic mode selects the longest common timing-supported section when local checks identify a different timing regime or an unresolved leading section. Section suggestions are determined from timing evidence across every file pair, never from the smallest percentage error. They require at least 3 minutes with at least 2 minutes of common raw timing support. An unresolved leading boundary can reflect warm-up/calibration, but the cause is not inferred. A mid-ride dropout or ordinary missing samples do not themselves create a new timing section: those issues stay inside the selected section and can lower its grade.

You can select another suggested section, enter start/end times, use the current graph range, or explicitly choose Whole summary range. The assessed timestamps and excluded durations are always shown. The chosen section controls mean deviation, recording-quality checks, drift, weighted duration assessment, metric anchors and triple comparisons over common seconds. Power-duration curves and source-independence checks retain full recordings. Graph zoom, issue inspection and clicking intervals do not change categorization unless you choose Assess this range. A grade describes the assessed period, not the excluded warm-up or the entire ride. Full FIT integrity warnings remain applicable. If timing is unresolved and no qualifying common section exists, automatic mode assigns no grade and asks for alignment or an explicit range choice. It never falls back to grading the unresolved opening. Use Align & assess automatically beside the graph to rerun alignment and section selection together. New and reopened legacy analyses default to automatic; explicit saved choices persist.

Recording overlap and local alignment

Recording overlap means the file timestamps intersect after applying their offsets. It does not prove that all power sections line up. Local checks independently inspect 120s raw-power windows every 60s, including the final complete window. At least 90 paired raw seconds are required. A different offset is supported only when its magnitude is at least 2s (search ±60s), correlation is ≥0.96 with a gain ≥0.08 over the current offset, and both 60s halves have at least 40 pairs and correlation ≥0.90. Conflicting-zero periods of at least 12 seconds and more than 10% of powered seconds, or varying patterns below r 0.90, remain unresolved even when no alternate offset is established. This can reflect a dropout or differing source behaviour, not necessarily a timestamp error. Identified shared-stop transition edges are omitted from this local screening.

Sections with r ≥0.95 support the current offset; flat or insufficiently sampled sections give limited evidence. Conflict windows take precedence over nearby supported windows, and missing/paused/unverified sections break supported spans. “Show recording overlap” shows the timestamp intersection. “Show unresolved sections” highlights the local checks with surrounding context; “Show longest supported section” selects only a graph view. Checks use full pairwise overlap independently of graph zoom and optional device details. Unresolved timing within summary coverage requires follow-up without an additional timing penalty. Original watts and complete curves remain intact; the separate assessment-range control determines category scope; the app does not warp segments or silently discard mismatched data. A single global offset cannot resolve every file containing different internal timing relationships.

Every second of the curve

Each recorded power sample represents a one-second bin on an elapsed-time grid. The curve uses exact maximum rolling means for every whole-second duration from 1 second to the longest continuous valid segment. It includes genuine zeros and excludes windows with missing power or timer pauses. It does not join separate efforts across pauses. Power-duration curves always use each full ride file, including valid efforts outside the current graph view. Key intervals use the current time range shown on the ride graph; their rolling windows must fit entirely inside it. Durations without a continuous valid window show a dash. Reset zoom restores full-file Key intervals. Overall agreement and drift use the explicit assessment range. Use Reset zoom, double-click the graph, or press Escape while the graph is focused to show the full ride again.

Gaps & common overlap

By default, linear interpolation fills gaps between adjacent valid records no more than 5 seconds apart. It never bridges an explicitly missing-power record or a timer pause. Select “Recorded samples only” for strict analysis. Power curves always use each file’s own complete coverage, so independent peaks may come from different parts of the ride. The Summary statistics setting controls whether whole-ride summary metrics use the common recording overlap or full coverage. Pair statistics always use seconds valid in both recordings; graph zoom does not affect them.

Own best versus the same effort

New comparisons show the full ride without selecting an effort. Choose a duration to highlight the reference’s highest average over that duration. The highlight colour indicates selection, not an agreement rating. Clear effort highlight, Entire ride or Reset curve removes the selection. Overall agreement and drift always use the summary coverage independently of effort selection.

In Key intervals, “Each device’s own best” compares independent maximum averages within the graph range. “Same reference-best effort” compares all devices over the exact interval of the reference’s maximum within that range. Clicking a table interval highlights its reference-best effort in that range while keeping your place at the table and preserving graph zoom. Shift-click selects all available intervals between the first and last choice; Ctrl/⌘-click or checkboxes add/remove individual intervals. Selected rows, a selection count and coloured duration/time labels on the graph identify every highlight. Show on graph is optional; duration controls and curve clicks inspect full-file best efforts. Percentage differences are (comparison − reference) ÷ reference × 100. The selected reference is a denominator, not a claim about which device is accurate.

Colour grading & accuracy claims

Each pair receives a power-agreement assessment and a data-quality assessment. The overall colour follows power agreement and category-limiting recording quality. Suspected timing problems remain visible as follow-up findings, without an extra category penalty. Missing names, accuracy claims, measurement settings or source confirmation never lower the rating; neutral prompts invite you to add useful details. Expand “Every data check & practical meaning” on each card to see measurements, thresholds and consequences. Green means the mean percentage deviation lies within the entered accuracy band (or provisional screen) and category-limiting data checks pass; a separate timing follow-up may still be required. Amber means caution is warranted; red means large deviation or serious data/consistency problems; gray means there is too little usable data. Names, settings and ratings are saved with the analysis.

The combined band uses worst-case manufacturer bounds, not a statistical confidence interval. For reference accuracy a and comparison accuracy b as fractions, the lower limit is (1−b)/(1+a)−1 and the upper limit is (1+b)/(1−a)−1. Two ±1% claims therefore give approximately −1.98% to +2.02%. It does not add an arbitrary drivetrain allowance. Manufacturer claims can depend on operating conditions; agreeing within the band does not prove either device is accurate.

Outside the band is amber. A mean deviation larger than the relevant band edge plus the greater of 1 percentage point or half that edge is red. Without both specifications, a provisional ±2% screen is used and green remains possible. Ratings reflect the measured comparison, not whether optional fields are complete. Entering accuracy claims replaces the provisional screen with the device-specific band. A head unit’s identity is never treated as a power-meter accuracy specification.

Paired coverage below 99%, a gap over 5 seconds, more than 2% interpolation, or less than 90% recording overlap requires caution. Recording overlap uses that pair’s file extents; a shorter third file or a cropped summary range does not turn intact samples into poor data. Coverage below 95%, a gap over 30 seconds, less than 70% overlap, or a FIT integrity failure can make data quality red. Timer pauses are excluded from the coverage denominator. At least 60 paired seconds, 30 seconds at 100 W or more in either file, and a reference mean of at least 50 W are required to grade.

Timing correlation is checked when reference power has at least 20 W standard deviation. A finite r below 0.95 is a timing follow-up, with stronger concern below 0.80; correlation alone does not lower the category. A frozen comparison against varying reference power still counts as a data failure. Steady traces provide limited timing evidence. Unexplained zeros and inconsistent powered 30-second windows outside suspected timing periods can still lower the rating, so opposite errors cannot earn a green result merely by cancelling in the mean. A short zero mismatch can be timing context when both files have a zero run with at least three raw zero samples and three seconds of shared zero time, and both stop boundaries are within 10 seconds. Only conflicting-zero edge seconds are classified this way. They do not count as unexplained zeros; pattern screening omits these edge seconds and consistency screening omits affected 30-second windows. The UI discloses those counts and offers a graph jump to inspect the stops. Zeros resolved by a supported alternative timing offset are also disclosed as timing context. Isolated zeros without either form of evidence remain data issues. Consistency and drift flags are rechecked outside suspected local timing windows before they can lower a category. If too little timing-clear data remains, those checks are unassessed and the raw finding remains advisory; that is not proof of stability. Coverage, missing samples, integrity failures and genuine dropouts still count. No watts or timing are silently changed for grading. Raw means, percentages, RMSE, correlation, power curves and the displayed 30-second difference percentile keep all original samples. A matched stop may reflect coasting, stop/restart response, calibration or imperfect alignment; it does not identify the cause. Single-sided measurement is explanatory context: doubling one leg can make left/right imbalance relevant, but the setting alone does not lower the rating.

Power-source names can be suggested from FIT sensor messages, but multiple connected sensors do not prove which one supplied power. When present, Garmin’s vendor-specific source message 22, field 6, is interpreted as a power-device index and linked to the device list. This mapping is undocumented: the UI labels it as FIT-reported evidence, retains its raw messages, and shows possible source changes. A single listed candidate remains a suggestion. You can explicitly confirm a listed sensor; user confirmation is kept separate from FIT evidence. Older saved comparisons may require reimporting the original FIT to recover source-selection messages. Identified power-source names are matched automatically against a researched catalogue of manufacturer specifications. Each applied value shows its source link and check date. Exact model/family matches are required; generic names or numeric product IDs are never guessed, and multiple possible sources need confirmation. This is a local catalogue lookup, not a live internet search for arbitrary new models. Unmatched names offer a search link and neutral requests for details. Users can select a model, disable automatic accuracy, or enter a manual override. Supported models include Wahoo, Favero, ROTOR, Elite, Tacx, Garmin, Quarq, power2max and 4iiii. Example sources: Wahoo KICKR v6, Favero Assioma DUO and Favero Assioma UNO (checked 19 October 2026).

Finding a recording issue

Go to issue opens the power-over-time graph with the affected period highlighted in amber and raw 1s readings. Separate occurrences can be selected or stepped through. Unexpected zeros are labelled as start of file, end of file or during the ride; all remain counted. Gaps, interpolation and inconsistent 30s windows also have timed links. Pattern alignment opens the full assessed overlap because a single responsible instant cannot be inferred. Drift inspection highlights the early and late assessment periods together. Issue jumps update Key intervals to the resulting graph range; full power curves, grades and summary scope remain unchanged. Full ride / clear issue removes the highlight. File integrity failures have no reliable per-second location.

Time drift & three-device outliers

Relative drift uses complete powered 30-second windows across summary coverage. Windows containing 0 W in one trace while another reports ≥100 W are excluded from drift. These samples remain visible; unexplained zeros count under data quality and identified shared-stop transitions are shown separately as timing context. Early and late values are medians of the first and last thirds of usable windows. At least 12 usable windows spanning 10 minutes are required. A fixed 0.50 percentage-point early/late change is screened independently of device accuracy claims. A consistent trend needs matching direction and |time correlation| ≥0.60 across up to 12 consecutive median blocks (at least three windows per block). A sustained early/late level shift can also flag when ≥75% of each third lies on its expected side of the midpoint and the change is at least twice the sum of their median absolute deviations. Level shifts are labelled separately from consistent trends. An early/late change ≥0.50 pp without enough persistence is shown as possible drift with noisy evidence, not a clear trend, and is not used to identify a three-device drifting outlier. “Agreement worsens” means absolute deviation grows. The displayed slope is the descriptive median-block trend in pp/hour. These are app screening rules, not validated drift probabilities or proof of which sensor is accurate. Intensity, response lag and temperature can contribute.

For three recordings, all pairs are reassessed on the exact same shared valid seconds and complete powered 30-second windows. A candidate outlier requires a stable agreeing pair and a third trace that either differs persistently outside both pairwise bands in the same direction, or changes in the same direction against both peers. The table shows the common-time evidence; a closest pair alone is insufficient. Causes are labelled as observed issues or possible explanations, never a proof of absolute accuracy. A strong pattern needs known specifications, good peer-pair data, and large sustained differences from the third. Multiple plausible patterns produce no clear outlier. An agreeing pair that appears to use the same physical sensor cannot establish an independent three-device outlier. Two agreeing devices can share a bias; the candidate is a direction for investigation, not an absolute accuracy verdict.

Shared sources & processing clues

Matching manufacturer and sensor serial / ANT+ IDs are a direct shared-device flag. The UI distinguishes a sensor listed in both files from an identified active source in both. Model names and file-local device indices alone are not physical identity. Device metadata can be stale, exported or edited; it is not authenticated provenance.

Indirect checks use full shared coverage, excluding interpolation, timer pauses, coasting and power below 100 W. They require at least 600 raw paired powered seconds, reference variability of 30 W SD, comparison variability of 20 W SD and at least 30 distinct rounded watt levels in each. Near-identical streams require ≥99.5% exact powered matches and a continuous exact run of at least 120 seconds. An affine scale/offset fitted on the first half must predict ≥99.5% of second-half samples within 0.55 W with RMSE ≤0.4 W. Scale is screened between 0.5 and 1.5 and offset within 100 W. Averaging checks examine 3, 5, 10 and 30-second windows with trailing or centred alignment. These are app heuristics, not validated manipulation probabilities.

Simultaneous gaps are supplemental evidence only. No finding proves intent or authenticity; legitimate shared sensors, duplicate exports, calibration transforms and device averaging may explain matching streams. A peer pair with strong shared-stream evidence is not used as independent corroboration of a third-device outlier. These source-independence findings are separate from power/data-quality colours, so missing identity information does not reduce the agreement grade.

Reference behaviour: Wahoo documents how external power-meter control can influence trainer readings; this is a legitimate possible dependency and does not directly replace the trainer signal. Garmin documents the FIT CRC; it is a checksum, not an authenticity signature.

Category settings

Automatic mode uses both devices’ combined worst-case accuracy claims when available, otherwise the provisional ±2% screen. Standard mode always uses ±2%, even when device specifications are known. The collapsed Category settings control also offers a user-defined symmetric percentage limit from 0.1% to 100%. This is the acceptable comparison-minus-reference mean deviation, with the reference as denominator; it does not change device accuracy claims or measured power. Green power agreement is inside the selected band. Caution extends from the band edge by the larger of 1 percentage point or 50% of that edge; greater deviation is red. For example, a custom ±3% limit gives caution beyond ±3% through ±4.5%, and red beyond ±4.5%. The base band applies consistently to pairwise categories, percentage badges, agreement anchors and triple-comparison bands. The optional duration-aware setting adds the allowances described below to duration-specific badges and a separate weighted assessment; ride mean anchors and triple outlier diagnosis retain the base band. Drift keeps its separate 0.50 pp screen; coverage, gaps, integrity and unexplained-zero checks remain active. Window consistency uses a fixed ±2% signal screen with residual-variation thresholds of 3 pp for caution and 6 pp for poor; it does not use the selected category band or any device specification. The data-quality grade never falls because a name, accuracy claim, battery level, crank length or sensor confirmation is absent. These optional details are neutral information requests. Overall categories can therefore remain caution or poor even when mean deviation falls inside a custom limit. The chosen mode and limit are saved with analyses and backups. Source-independence findings remain separate from these colour categories.

Optional duration-aware categories

Enable “Account for effort duration” under Category settings to allow more short-effort disagreement while retaining the selected device, standard or custom band as the base. The extra allowance is additive in percentage points on both sides: +5 pp at 1s, +3 pp at 5s, +2 pp at 15s, +1 pp at 30s, +0.50 pp at 60s, +0.25 pp at 120s and zero from 180s onward. Intermediate durations interpolate on log time. For example, a base ±2% band becomes ±7% at 1s, ±5% at 5s, ±3% at 30s and ±2% from 3min. These allowances are transparent app heuristics, not research-validated limits or widened manufacturer claims. Short-duration comparisons are more sensitive to sampling and timing; longer averaging can reduce disagreement. See the SRM-referenced validation study discussing averaging. That study does not establish this app’s allowances or weights.

For each standard interval, the score compares both files over the reference’s highest-power complete paired window within summary coverage. This avoids comparing independent peaks at different times. Windows cannot include missing power or timer pauses; the reference mean must be at least 50 W and either mean at least 100 W. The score is sqrt(sum(weight × (abs(Δ%) / signed-side band edge)²)). Taking magnitudes before averaging prevents cancellation. The 1–30s group receives 25%, 1–5min 35%, and 10–60min 40%, shared equally among available durations in each group. Unavailable groups are omitted and weights renormalize to 100%; missing intervals never cause a penalty.

A score at or below 1.00× is green, above 1.00× through 1.50× amber, and above 1.50× red. Any single interval above 1.50× imposes at least amber. The power grade is the worse of this duration result and the mean-deviation grade within the assessed period. Data-quality and drift checks remain independent and can further limit the overall category. The model uses the assessed period. Graph zoom, displayed table mode, selected intervals and the curve’s duration zoom do not change it unless you explicitly use the graph range for assessment. Duration-specific badges use their own duration allowance; independent peak badges are still descriptive. Full-ride mean anchors and triple-device outlier diagnosis retain their original base bands. The option is off by default and saved with each analysis. Durations are correlated and overlapping; the weighted score is descriptive, not a statistical confidence level.

Limited power variation alone does not lower a category. Pattern alignment is unassessed when reference power SD is below 20 W; the other measured checks remain active. A category can still be caution with mean deviation inside the applied band when a measured data or drift check fails. The compact summary identifies each limiting check.

Agreement metric anchors

In automatic category mode, mean bias has a mathematical zero and a claimed-accuracy envelope derived from sourced or manually entered device specifications. The watt envelope is that same percentage band multiplied by the matched reference mean. Without both specifications, the ±2% app screen stays provisional.

RMSE is normalized here by the root mean square of reference power over matched seconds. Its zero is exact agreement; it has no universal good/bad watt limit. Removing the mean offset gives centred RMS mismatch, and a separate RMSE of complete non-overlapping 30-second means provides averaging context. Neither is a manufacturer accuracy certification. The share of squared mismatch from mean offset is bias² / RMSE².

Correlation and coverage cutoffs are explicitly labelled app screening guides and match the data-quality checks. The fixed ±2% or 5 W diagnostic has 100% as its mathematical ideal; its powered-seconds result helps expose coasting effects. Paired seconds are not independent statistical trials, and no confidence interval is inferred from their count. Drift anchors reuse the early/late 30-second-window screen described above. Definitions and anchors remain separate so the benchmarks stay visible when definitions are hidden.

Statistical background: Bland & Altman on method agreement and correlation; NIST on RMS. These sources explain the statistics; they do not validate the app’s screening thresholds.

ANT+ and Bluetooth source matches

Matching manufacturer plus serial or ANT+ ID remains a source-identity clue. If one manufacturer is missing, an exact serial across an ANT+ and a BLE power-sensor entry is retained as a possible match. A serial longer than the 16-bit ANT+ identifier range can become a likely match only with corroborating changing raw power: at least 600 paired powered seconds, reference SD ≥30 W, comparison SD ≥20 W, 30 distinct rounded watt values in each, correlation ≥0.98, ≥20% exact watts and a ≥10s exact run. Each half must also have correlation ≥0.95 and ≥10% exact watts. A diagnostic-only ±2s local offset checks transport timing; displayed alignment and power stay unchanged. Short identifiers, conflicting known manufacturers, unrelated heart-rate IDs and truncated serial guesses do not establish this match. Unused listed sensors are distinguished from selected or suggested sources. Neither serials nor FIT source messages authenticate a device, and matching sources cannot independently establish that a third meter is wrong. Bluetooth manufacturer and serial fields are optional: Bluetooth SIG Device Information Service.

What the device details mean

The recording computer and connected sensors are distinct. Reported battery voltage and status are not converted into an invented charge percentage. Crank length comes from recorded FIT settings when present; it may describe a bike profile and does not prove what a power meter used. Unknown product IDs are shown as IDs. Battery history and all decoded device fields remain available to inspect.

Recorded setup notices are advisory only: crank lengths below 150 mm or at least 180 mm, differing recorded crank profiles, power calibration factors different from 100%, and low/critical device battery status or charge at or below 10%. These can be intentional settings or inactive bike profiles. Check the actual crank marking and active sensor configuration; 180 mm is not automatically incorrect. Battery notices identify the accessory role, so a heart-rate warning is not assigned to the power meter. Missing settings are neutral and no setup notice changes data quality or categories. Garmin: setting crank length for pedal power.

Aligning a selected graph range

Select a graph period and choose Align this view. The search checks the entire other recording, including offsets larger than two minutes. It matches complete 3s waveform averages, with at least 20s of changing data, 85% sample coverage and correlation ≥0.90. Ambiguous matches or conflicting timing keep the current offsets and offer supported subsections. A selected section applies its own offsets to the full traces and becomes the assessment range. Use the section selector beside the graph to switch between them. Detailed thresholds and fractional-offset handling are under In-depth checks & technical details.

Selected-range maximum and normalized power

The graph inspector compares maximum 1s power and normalized power over the same shared, unpaused seconds across all loaded recordings inside the current graph range. Each maximum can occur at a different instant within that common support. Individual observed peaks excluded by missing peer data are shown separately. Normalized power uses every complete overlapping 30-second mean, raises each to the fourth power, averages them, then takes the fourth root. Gaps and pauses break windows; no window borrows power outside the selected range. Genuine zeros remain included. Configured interpolated seconds are included and disclosed. Graph smoothing does not change these calculations. Deviations are relative to the primary recording; a zero reference has no defined percentage. Maximum-power colours use the optional 1s allowance; normalized-power colours use the base comparison band. These colours describe deviation, rather than establish device accuracy. Normalized power needs at least one complete shared 30s window and has limited physiological interpretation for selections shorter than 10 minutes. See TrainingPeaks: calculation and interpretation.

Cadence and heart-rate traces

Enable either auxiliary channel beside Ride traces. Aligned panels use a shared time axis and separate vertical scales. Overlay mode uses labelled right-hand rpm/bpm scales; heights across units do not represent agreement. Each file keeps the same colour throughout the analysis: blue, gold or rose. All device traces are solid. Power, cadence and heart rate panels have labelled scales; identical values can overlap. Zoom, highlighted intervals and the pinned cursor apply across all channels. Range averages include recorded zeros and use valid seconds per channel. Missing channels stay missing; the same file-level time offset applies to power, cadence and heart rate.

Power during zero cadence

The advisory cross-check compares every power file with every available cadence file, using current time offsets. It counts every raw power reading above 0 W at explicit 0 rpm, including low residuals and stop-transition tails. Missing or interpolated data and timer pauses are excluded. Small residuals (peak ≤5 W), brief readings (≤2s), short settling tails (≤5s followed by at least 3s at 0 W), sustained readings and high inconsistencies are distinguished. High inconsistency means ≥30 consecutive seconds averaging ≥50 W, or nonzero power during ≥90% of at least 30 valid zero-cadence seconds with a mean above 5 W; lower residuals remain amber. A recurring short-tail pattern requires ≥3 cadence drops and settling tails at ≥80% of them. These are app heuristics. The proportions use assessed time, valid zero-cadence seconds, and full power-file duration, with paired coverage shown. Whole-file context never changes the selected section’s grade.

Cadence can be faulty, calculated, delayed or supplied by a different sensor. Cross-file timing conflicts are identified, and this check cannot establish that power is wrong. Same-file cadence and power can share sticky reporting, so cross-file comparisons provide useful additional context. These findings have their own severity labels and do not change comparison/data grades or watts. Wahoo documents calculated trainer cadence. Heart rate is contextual and is not used to validate power accuracy.

Privacy & saved analyses

Decoding and calculations run in a worker on your device. Files are uploaded when you save an analysis or enable automatic imports. Historical summary features may be cached in this browser; only comparisons still accessible to your signed-in account are listed. Rider labels are stored privately on your account. Automatic imports retrieve original recordings server-side, decode and compare them, and save the resulting private comparison. Disconnecting stops future imports; existing comparisons can be deleted from Saved analyses. Saves contain decoded power, cadence, heart rate, timing, device data, and settings, not original FIT binaries or GPS tracks. Saved analyses are account-scoped and can be deleted from Saved analyses. Exported backups contain the same analysis data and are readable JSON. Sign-in is optional. Comparing, aligning, assessing and exporting files, opening backups, using the shared device lookup and viewing shared links work without an account. Sign in to save analyses, create or manage share links, and sync device names or interval defaults. Saved analyses remain private unless you create a share link.

Independent comparison tool. Not affiliated with Garmin, Zwift, MyWhoosh, TP Virtual, or DCR Analyzer.

The time-drift penalty requires a persistent change at comparable reference power: repeated 25 W bands with early/late windows paired one-to-one within 5 W, at least two windows per band per phase, six per phase overall and at least 40% phase coverage. Fixed offsets at different power levels are treated as power-dependent disagreement, with no drift penalty. Agreement moving closer at comparable power is advisory. Mean deviation and independent recording-quality failures still count. A relative drift flag cannot identify absolute accuracy.

CONNECTIONS & NOTIFICATIONS

PowerTrace settings

Appearance

Choose a color scheme. Result colors and device trace colors keep their meaning in every theme.

Language

Choose your app language. Automatic follows your device or browser, with your approximate country as a fallback.

Intervals.icu

Automatically compare recordings of the same riding and keep them in your private saved history.

Find your key in Intervals.icu → Settings → Developer settings. It is encrypted on the server and never returned to the browser. Open Intervals.icu settings ↗

Original recordings are required

Strava-sourced activities cannot be imported. Connect Intervals.icu directly to the platforms that record your files, such as Zwift, Wahoo, MyWhoosh or Garmin, or upload originals there. Availability is checked for each activity. Garmin access may be restricted under its updated API terms. A direct connection does not guarantee downloadable files.

PowerTrace pairs files by overlapping UTC recording times, then checks the actual power traces. Matching start times alone do not verify alignment or independent sensors.

Your signed-in email is already verified. Verify any different address before enabling notifications. Notices link to a private comparison; public share links are created separately.

ADD RIDES TO YOUR HISTORY

Batch import recordings

Select original FIT files from several rides. Files with at least 90 seconds of shared time and 80% overlap with the shorter recording are grouped automatically. Each set can contain two or three recordings. A TPV FIT with two native power streams forms a set on its own.

50 files maximum12 MB per file100 MB per batch

Unmatched or ambiguous files are listed for review. Import processes one set at a time; decoded sets must fit the 18 MB save limit. Exact files and already imported sets are skipped. Saves are private and become available for historical analysis immediately.

Choose files to start.

PPT / baseline comparison report