Phone Dyno (Beta)

FXR Archive Phone Dyno · Free beta

Your phone is the dyno.

Mount it. Tap Record. Roll on. Phone GPS becomes a rear-wheel horsepower and torque curve, and every pull ends and trims itself.

Phone-app estimates from GPS, not a drum dyno. Free while in beta.

The app's finished graph for the Stroked FXR pull: RWHP 75 at 4,118 rpm, torque 98 foot-pounds at 3,050 rpm, SAE J1349.

Real app footage: a Stroked FXR pull replayed in FXR Archive Phone Dyno.

  • GPS only
  • Pull stacking
  • SAE J1349 corrected
  • Auto-end on roll-off
  • Auto-trim
  • Drum-dyno basis
  • PDF and Excel export
  • No account
  • Pulls stay on your phone

Pull stacking

Stack your pulls. Beat the GPS limit.

Phone GPS only updates speed about once a second, so a single pull is just a handful of dots. Stack a few pulls and the app pools all those dots into one dense, sharper curve.

  1. Make a few runs. Same bike, same gear. Short pulls count too.
  2. Tap Stack pulls. Tick 2 or more in Saved pulls, then hit Stack.
  3. Get one sharper curve. Every point lined up by rpm, the oddballs thrown out, and a band that shows how well your runs agree.

Pro move: run your pulls both ways on the same road. Opposite runs cancel most of the wind and grade, and the app tells you when every pull ran the same way.

Under the hood: each pull is worked out on its own, with its own weather and SAE J1349 correction. Its points are then lined up by engine rpm (not time), pooled with the other pulls, and one smooth curve is fitted through them all. Points far off the other pulls are dropped, and with 3 or more pulls, a pull that disagrees can be dropped whole. The curve covers only the rpm range where at least 2 pulls overlap, and the shaded band is ±1 standard deviation between pulls. Stacks can be saved on your phone and shared as PDF or Excel.

Why it's different

Built for real pulls on real roads.

Shift-proof roll-off detection

Tap Record once and ride. The pull arms on the roll-on and ends itself about 2 seconds after you roll off. A one-second gear-shift dip won't cut it short, and a lazy partial lift still ends it.

Auto-trim, every time

Every saved pull is cut to the roll-on to roll-off window by the same fixed rules, so the cruise lead-in and the slowdown never bend your curve.

A drum-dyno basis

A Dynojet-style drum never sees the rear tire's rolling loss and the front wheel doesn't turn. So the app counts only the front tire's rolling drag, and your numbers read like a drum-dyno sheet. SAE J1349 corrected with real weather.

Works on your phone

Open it in Safari on an iPhone, tap Share, then Add to Home Screen. It launches full screen, keeps the screen awake, and stays on your bars. No login, no server storing your pulls.

Inside the app

One pull, start to finish.

Real screens from the Stroked FXR pull: its recorded GPS fixes replayed in the app.

The app's live screen 11 seconds into the Stroked FXR pull: SAE corrected 72 horsepower, max 72, 95 mph, correction factor 1.03, GPS elevation 190 feet, recording with 11 GPS fixes, and a red Stop button.
Live, mid-pullSAE corrected hp, max hp and speed update with every GPS fix. The pull arms itself on the roll-on.
The app's finished graph for the pull: SAE J1349 correction factor 1.026, density altitude 2,650 feet, then the horsepower and torque curve against engine rpm, RWHP peak 75 at 4,118 rpm, torque peak 98 at 3,050 rpm, and the trim saved with the pull.
The finished graph75 hp at 4,118 rpm and 98 ft-lb at 3,050 rpm, SAE J1349, with the correction factor and density altitude above it.
The app's results for the pull: peak corrected 75 horsepower at 4,118 rpm and 98 foot-pounds at 3,050 rpm, uncorrected 73 and 96, correction factor 1.026, conditions 91.8 degrees F, 44 percent humidity, 29.67 inches of mercury, and Share PDF and Share Excel buttons.
Results to sharePeaks corrected and uncorrected, the weather used and the part of the pull that counted, ready as a PDF or Excel file.

Screens and footage show the app replaying the real recorded GPS fixes of that pull on a computer, not a capture from the phone. On-screen clock times are from the replay. Phone-app estimates, not a drum dyno.

Results

Real pulls. Real FXRs.

Two Evo FXRs, shown as the app computed them.

Stroked FXR

Evo stroker · 5th gear

Phone-app pull · not a drum dyno
75hpat 4,118 rpm, where the pull ended (still rising)
95 to 96ft-lbnear 3,080 rpm (measured points)
The FXR Archive Dyno app's finished chart for the Stroked FXR, 5th gear, SAE J1349, rear wheel: RWHP peak 75 at 4,118 rpm, still rising where the pull ended; torque line peak 98 foot-pounds at 3,050 rpm, then a shelf of about 91 to 94; dashed stock Evo hp and torque reference lines below; grey dots are the fit points. Engine rpm 2,600 to 4,200 on the x axis, 0 to 110 on a shared hp and ft-lb scale.
The app's own finished chart of this pull, as captured on the phone. SAE J1349 corrected, rear wheel. The smoothed torque line touches 98 at 3,050 rpm; the measured points read about 95 to 96.

FXR w/ cam

1340 Evo · 4th gear

Phone-app pull · not a drum dyno
64hpat 4,515 rpm
74ft-lbat 4,414 rpm
FXR w/ cam, 1340 Evo: rear-wheel horsepower and torque from the FXR Archive Dyno appA fourth-gear pull from about 3,690 to 4,745 rpm. Torque climbs to about 74 foot-pounds at 4,414 rpm and holds about 71 to 74 to 4,500 rpm. Horsepower peaks at about 64 at 4,515 rpm. Faint dots are the 8 fit points; dashed lines are a stock Evo reference.001010202030304040505060607070808090903,6004,0004,4004,800Engine rpm (from GPS speed, gearing and tire size)HP / ft-lb (same scale)

RWHP (SAE J1349)Torque ft-lb (SAE J1349)Fit pointsStock Evo (dashed)

FXR Archive Dyno app pull, SAE J1349 corrected, rear wheel, 8 fit points. Uncorrected, the app's sheet reads about 62 hp and 73 ft-lb.

Single pulls on phone GPS, not validated against a roller dyno yet: expect about 5 to 15% difference from a drum dyno. A peak at the end of a pull is where the run stopped, not necessarily the engine's peak. Dashed stock Evo: Cycle World's rear-wheel run of a stock 1994 Road King (Cycle World, May 1994).

Free beta

Get the Phone Dyno on your bars.

The Phone Dyno is a free beta, and access is by request while it's being tested. Tell us a little about you and your bike. Requests are reviewed by hand; if yours is approved, you'll get a personal access link by email that works on your phone and in the installed app.

Your personal access link goes here if you're approved.

Beta terms

  • The beta is free.
  • It is for personal, non-commercial use only.
  • Your access link is just for you. Please don't share it or post it.
  • The app is provided as is, with no warranty of any kind.
  • Results are estimates, not roller-dyno measurements. Don't rely on them for safety, tuning or buying decisions.
  • Access can be changed or revoked at any time.
  • Ride safely and within the law. You are responsible for how and where you ride.

What you send (name, email, bikes and your note) is used only to handle your request and run the beta. It is never sold or shared. See Privacy, and ask us to delete it any time through the Contact page.

A note from FXR Archive

Why I built it

The FXR deserves to be remembered. Riders still love it decades after the last one was built, but much of what people know about it is scattered across old magazines, manuals, forums and garages. I built FXR Archive to memorialize the FXR and to gather as much FXR information as possible in one place, as an archive. The Phone Dyno is one part of that. Period road tests show what these bikes made when they were new. The dyno helps riders see what their FXRs make today, so that knowledge stays together with everything else here.

The specsHow it worksMethodology, detection rules, testing, limits and sources

How the FXR Archive Dyno app measures power

The app reads GPS speed about once a second. Each pair of back-to-back readings becomes one data point: the change in speed divided by the time between them gives acceleration, at the average of the two speeds. The force at the rear tire is total weight (bike, rider, cargo) times that acceleration, plus air drag from the bike preset's drag area, plus the front tire's rolling drag, which rises with speed. Force times speed gives rear-wheel horsepower. Engine rpm comes from road speed, tire size and the gear you pick, and torque is horsepower × 5,252 ÷ rpm. Results are corrected to SAE J1349 using weather looked up automatically.

Tap Record pull and roll on. The pull arms once acceleration stays up for two readings, then auto-ends on roll-off: about 2 seconds of low acceleration while speed stops rising and the bike clearly slows. A quick gear change doesn't end it. Automatic trim then keeps only the rising part, from where acceleration climbs above 60% of the pull's peak to the first sustained drop below 30%, so cruising and coasting can't bend the curve.

Only the front tire's rolling drag is counted because a drum dyno such as a Dynojet never sees the rear tire's loss and the front wheel doesn't turn. So the numbers read like a drum-dyno sheet.

Stacking lines up several pulls of the same bike and gear by rpm, pools their points and drops ones that disagree. Pulls run both ways on the same road cancel most wind and grade.

Limits: each pull assumes a level road and still air, and drag and tire values are estimates. Expect about 5 to 15% agreement with a drum dyno. One reading a second can't catch quick changes, and the curve is smoothed over roughly ±200 rpm.

What it is

The FXR Archive Phone Dyno is a web app for your phone. It estimates rear-wheel horsepower and torque, corrected to SAE J1349 standard conditions (SAE J1349), from GPS speed and a physics model of the loads on the bike.

A roller dyno is still the best way to measure power, and this is not meant to replace one. The idea is a repeatable, low-effort way to see a power curve on the road, compare before and after a change, and learn something about your bike between dyno sessions.

It is not an app-store app. You open it in Safari on an iPhone, tap Share, then tap Add to Home Screen. After that it launches from its own icon, runs full screen, keeps the screen awake, and updates itself when you reopen it. Once it is installed it works without a signal. Only the weather lookup needs a connection, and the app tells you when it has to do without one.

Each bike preset carries the gearing (primary, transmission and final drive), the rear tire size, an estimated drag area (CdA), a rolling-resistance base (Crr) and an estimated share of weight on the front wheel. You can edit total weight and tire radius in Settings; drag area and rolling resistance come from the preset. The beta ships with a small set of presets, including two Evo FXRs and a few modern touring and sport-touring bikes. There is no custom-bike option yet.

Runs on
iPhone, as a web app you add to your Home Screen
Sensor
GPS only, about one fix per second
Output
Rear-wheel horsepower and torque, SAE J1349 corrected
Account
None. Pulls stay on your phone
Status
Free beta, access by request
Design choices

GPS only

The app asks iOS for high-accuracy location with no cached fixes, reads the Doppler speed the GPS chip reports, and falls back to distance between fixes divided by time when a fix has no speed. Every fix is placed at its own timestamp, not at the moment it happened to arrive in the app. That matters, because acceleration comes from speed changes over time, and arrival times can be uneven.

Earlier test versions also read the phone's motion sensors and had a coastdown mode for measuring drag. Both were removed. There is no accelerometer and no calibration step: you mount the phone and ride. Drag and rolling numbers always come from the bike preset, so every pull on a given bike is computed on the same basis.

A drum-dyno basis

The number most riders know is the one on a sheet from a drum (inertia) dyno such as a Dynojet, so the app is built to produce a number on that same footing.

On a drum dyno the rear tire's rolling loss happens before the power reaches the drum, so the drum never sees it, and the front wheel does not turn at all. On the road both tires roll. Counting both would report more power than a drum dyno shows for the same bike, so the app counts only the front tire's rolling drag. In the words of the source code: to match a drum dyno, the road-to-wheel force counts ONLY the front tire's rolling resistance.

Semi-automatic

You tap Record pull once. Recording never starts from motion alone. After that tap the app does the rest:

  1. It watches for the roll-on and arms when it sees one.
  2. It ends the pull by itself when you roll off.
  3. It saves the pull with every raw GPS fix.
  4. When you open the pull, it trims the data to the roll-on to roll-off window, looks up the weather and fits the curve.

A 30 second limit and a Stop button are always there as backstops. The point is safety and consistency: you should not be looking at or tapping a phone during a full-throttle run, and a detector that uses the same rules every time gives more repeatable pulls than a thumb on a screen.

How it works out power

Power at the rear wheel is the force needed to push the bike down the road times the road speed. The app adds that force up from four parts:

F = m × a  +  aero drag  +  front-tire rolling drag  +  grade
power = F × speed
  • Mass times acceleration. Mass is the bike plus rider and cargo (default 200 lb, adjustable). Acceleration comes from GPS speed changes.
  • Aerodynamic drag. ½ × air density × CdA × speed². Saved pulls use the actual air density from the weather at the time of the pull.
  • Front tire rolling drag. Crr × front weight share × total weight, with Crr rising with speed (below). The front share is a per-bike preset value, 0.40 unless the preset says otherwise.
  • Grade. Road slope, entered by hand or estimated from GPS altitude, on the live screen only. The saved-pull analysis assumes level ground, which is one reason a flat road matters.
Crr(mph) = base Crr × (0.01632 + 0.0000018625 × mph²) / 0.020

That speed shape was fitted to tire research values of 0.018 at 30 mph, 0.029 at 82.5 mph and 0.035 at 101.5 mph. The research was on bias-ply tires, so for radial-tired bikes the shape is an estimate. There is no allowance for rotating inertia (wheels, driveline) in the model.

RWHP = force (lbf) × mph / 375        (same as N × m/s ÷ 745.7)

Engine rpm from speed, tire and gearing

GPS knows road speed, not engine speed, so the app works rpm out from the tire and the gearing:

wheel rpm  = speed ÷ (2π × effective tire radius) × 60
overall    = primary × gear × final drive
engine rpm = wheel rpm × overall

The effective radius is 0.97 × the unloaded radius from the tire size, to allow for squat under load. You pick the gear for each pull in the analysis (4th by default on five-speeds). On a dual-clutch bike you have to hold it in manual mode, because an automatic upshift mid-pull breaks the rpm math.

Torque

Torque follows the usual dyno-sheet convention, torque (ft-lb) = RWHP × 5252 ÷ rpm. When the curve is drawn, horsepower is re-derived from the fitted torque curve, so the two curves always agree.

SAE J1349 correction and the weather

Engines make less power in hot, humid or thin air. To compare pulls from different days, every pull is corrected to the J1349 reference day of 77 °F, 29.23 inHg of dry-air pressure and 0% humidity:

CF = 1.18 × (29.23 / Pd) × √((T°F + 459.4) / 536.4) − 0.18
Pd = station pressure − water vapor pressure (inHg)
corrected HP = raw HP × CF;  corrected torque = raw torque × CF

When you open a pull, the app asks Open-Meteo for temperature, humidity and station pressure at the pull's start location and hour. If station pressure is missing, it derives it from sea-level pressure and an elevation chosen automatically. Offline, or if the lookup fails, it uses the J1349 standard day (CF 1.00) and says so. All the weather fields stay editable, and the analysis also shows density altitude.

The live screen gets its own correction factor from current conditions, refreshed every 30 minutes. Without one, the big tile says Unadjusted Raw HP, and the MAX HP tile resets whenever the basis changes, so corrected and raw numbers are never mixed.

Roll-on and roll-off detection
Anatomy of a pullTwo stacked traces over time. Top: speed flat during cruise, rising through the pull with a brief flat step at a gear shift, then falling after the roll-off. Bottom: acceleration rising at the roll-on, a short dip at the shift, then dropping below zero after the roll-off. Marks show Record tapped, Armed, Peak accel, the ignored shift dip, Roll-off and Pull ends about 2 seconds later. The shaded band marks the data used for the curve, between 60 percent of peak on the way up and 30 percent of peak on the way down.Data used for the curve (auto-trim)607080901000.30.20.10-0.1Speed (mph)Accel (g)60% of peak30% of peak-0.08 gRecord tappedPeak accelArmedShift dip (~1 s): ignoredRoll-offPull endslow 1.8 s + speed not rising + below -0.08 g0 s5 s10 stime; 30 s limit is the backstop
Anatomy of a pull (an illustration, not real data). Top: GPS speed, one dot per fix. Bottom: acceleration. The shift dip recovers by the next fix, so it does not end the pull. After the roll-off, the pull ends once acceleration has stayed low for 1.8 s, speed has stopped rising and the latest interval is clearly decelerating. The shaded band is the auto-trim window used for the curve.
RuleValueWhat it does
Armabove 0.05 g for 2 intervals in a rowDetects the roll-on (about three fixes at 1 Hz)
Minimum pull3 s armed, 0.08 g peak, 5 mph gainedKeeps GPS noise while cruising from ending anything
Lowbelow 30% of the peak so far, or negativeStarts timing a possible roll-off
Endlow for 1.8 s, speed not rising, latest interval below −0.08 gA real roll-off
Backstoplow for 3.8 sEnds a lazy partial roll-off
Bad gapfix spacing outside 0.2 to 3.5 sIgnored, and counts start over

After you tap Record, every raw fix goes into a small state machine. Acceleration is the speed change since the previous fix divided by the time between their own timestamps. The pull arms on the roll-on, keeps track of the highest acceleration so far, and watches for a low stretch. The pull ends only when it has been armed for at least 3 s, has reached a real peak and speed gain, and then either passes all three end tests or stays low for 3.8 s.

Gear shifts and partial lifts

A quick shift makes acceleration dip for about a second, but speed is rising again by the next fix, so the low stretch resets before it can pass the not rising and clearly decelerating tests. As the code comment puts it: A gear-shift dip (~1 s) recovers in the next interval, so it doesn't meet all three; a roll-off does. A shift still breaks the rpm calculation, because the analysis assumes one gear, so shifting mid-pull isn't recommended; the detector just won't cut the recording short because of it.

If you only roll part of the way off, the bike may not slow hard enough for the −0.08 g test. The 3.8 s rule covers that case. If the pull never arms, it records to the 30 s limit, and Stop always works. Each saved pull records why it stopped: roll-off, the 30 s limit, or the rider.

Auto-trim and the curve

A recording includes some cruising before the roll-on and some slowing after the roll-off. Those parts would bend the ends of the curve, so the analysis trims them automatically:

  1. It smooths the speed trace with a local fit over about ±2.5 s. This smoothed trace is used only to find the window, never to build the curve.
  2. It finds the peak acceleration, which must be at least 0.3 m/s² or there is no clear pull.
  3. Start: it walks back from the peak while acceleration stays above 60% of the peak. That marks the roll-on.
  4. End: it walks forward and stops at the first sustained drop: below 30% of the peak for 2 samples in a row, negative acceleration, or speed no longer rising.

The window needs at least 5 samples. If there is no clear run, the app says so (need about 4+ seconds of steady throttle) and offers two sliders to pick the window by hand. A manual trim is saved with the pull, and Reset to auto goes back to the automatic one.

Building the curve

Inside the window, each pair of consecutive fixes gives one point: the speed change over the time between them, placed at the average of the two speeds. At one fix per second that is 1 s of averaging, with no separate speed smoother. A point is kept only if its rpm is higher than every point before it, so the curve can never fold back, and at least 4 points are needed.

Corrected torque is then fitted against rpm with a local weighted fit (LOESS): a window of about ±200 rpm, widened where needed to take in at least 4 points, nearby points weighted most, a lean toward a straight line at the one-sided ends so they don't hook on one noisy point, values held within the points' range plus 10%, and nothing drawn past the first or last point. The individual points are drawn as faint dots behind the curves, so you can see the scatter. Horsepower and torque always share one y-scale.

Pull stacking

Phone GPS gives about one speed reading a second, so a single pull has only a few points, often 150 to 300 rpm apart. Stacking combines several pulls of the same bike in the same gear into one result, so the points from one pull fill the gaps between the points of another.

  1. On Saved pulls, tap Stack pulls, tick 2 or more pulls of the same bike in the same gear, then tap Stack. Pulls of another bike or gear are grayed out. A pull too short to graph on its own is marked as one that can still be stacked.
  2. Each pull is worked out exactly like a single pull: its raw GPS fixes, its own weather and SAE J1349 correction factor, its own trim.
  3. The points of all the pulls are lined up by engine rpm, not time, and pooled. One smooth corrected-horsepower curve is fitted through them (a local weighted fit), and torque = HP × 5252 ÷ rpm.
  4. Every point is checked against the curve of the other pulls. Points far off it are dropped, and a pull whose points are mostly off is dropped whole, with the reason shown. Telling which pull is off needs 3 or more pulls.
  5. The curve covers only the rpm range where at least 2 pulls overlap. The shaded band shows ±1 standard deviation between pulls at each rpm.

The result also says whether the pulls ran in both directions. Pulls run both ways on the same road cancel most of the wind and grade; if every pull ran the same way, a steady wind or a slope is baked into the result. A stack can be named and saved on the phone (it keeps its own copy of the pulls) and shared as a PDF or Excel file.

What it does better

Automatic start and stop is not new in itself, and it's fair to say so. Other phone apps have it too: True Power starts a timed run automatically when its trigger detects movement (True Power (Google Play)), and Clockwatts has an automatic measurement mode that can end a run without input (Clockwatts). What the Phone Dyno does better is the combination:

  • Roll-off detection that ignores shifts. The end rules look for a sustained low stretch with no speed gain and real deceleration, so a one-second shift dip doesn't end the pull, and a lazy partial roll-off still does.
  • Auto-trim. Every saved pull is cut to the roll-on to roll-off window by the same fixed rules, so the cruise lead-in and the slowdown never bend the curve, and every pull is trimmed the same way.
  • A drum-dyno basis. Counting only the front tire's rolling drag, with rolling resistance that rises with speed, puts the numbers on the same footing as a Dynojet-style sheet.
  • Built for real gearing. Live J1349 correction, rpm from each preset's full gearing, and a stock Evo reference curve for the Evo FXR presets.
Sample results in detail

Two pulls on Evo FXRs, shown as the app computed them. Bike details are kept general on purpose.

Stroked FXR, Evo stroker

Pull
5th gear, about 2,750 to 4,118 rpm
Peak HP
About 75 hp at 4,118 rpm (rear wheel, J1349)
Peak torque
About 95 to 96 ft-lb near 3,100 rpm
Notes
Horsepower was still rising when the pull ended. The smoothed line tops out at 98 ft-lb; the measured points on either side read about 92 and 95 to 96.

FXR w/ cam, 1340 Evo

Pull
4th gear, about 3,690 to 4,745 rpm
Peak HP
About 64 hp at 4,515 rpm (rear wheel, J1349)
Peak torque
About 74 ft-lb at 4,414 rpm
Notes
8 fit points. Both peaks come before the end of the pull, and torque holds about 71 to 74 ft-lb from 4,100 to 4,500 rpm. Uncorrected, the app's sheet reads about 62 hp and 73 ft-lb. From about 4,100 rpm up, torque runs about 10 to 14 ft-lb above the stock Evo reference.

Estimates from a phone, not validated against a roller dyno. Peaks at the end of a pull are where the run stopped, not necessarily the engine's peak.

The dashed stock Evo reference is Cycle World's rear-wheel dyno run of a bone-stock 1994 Road King with the 1340 Evo, digitized from the published chart (Cycle World, May 1994). It is a reference to eyeball against, not a calibration, and it came from a CV-carb engine.

Testing and limits

Simulated pulls

The roll-off rules were tuned on a physics simulator that uses the same road-load model as the app: about one GPS fix per second with timestamp jitter, Doppler speed noise of 0.08 to 0.2 m/s, optional receiver lag of 0.6 s, a cruise lead-in, gear shifts and partial lifts, across three different bike models.

Scenario (240 runs each)EndedEarly endsDelay after roll-off
Normal pull240/2400median 2.0 s, 90th percentile 2.6 s, max 3.25 s
Pull with a 1 s gear shift240/2402median 1.9 s
Partial lift240/2400median 2.3 s, 90th percentile 4.1 s
Cruising only, no pull0/240 false endsn/a8/240 armed by noise at 0.30 m/s noise and ran to the 30 s limit

The two early ends both came in runs with a gear shift, and both ended shortly before the simulated roll-off (by about 0.1 s and 1.8 s), not at the shift itself.

The curve method was tested the same way. With 0.12 m/s of simulated GPS noise it recovered 95.8% of a known torque dip when points were about 160 rpm apart, but only 45.2% when they were about 280 rpm apart, and it read peak horsepower about 3.8% high (median). Those are simulation results, and a fair picture of what 1 Hz GPS can and can't resolve.

Not yet validated against a roller dyno

This is the most important limit. The app has been tested in simulation and sanity-checked against published stock data, but it has not been compared head to head with a roller dyno yet. Treat every number it gives as an estimate.

What 1 Hz GPS can and can't do

  • Phone GPS reports about one fix per second, so over a typical pull the points are often 150 to 300 rpm apart. Sharp, narrow dips and bumps get softened.
  • A short pull gives very few points. The analysis wants about 4 or more seconds of steady throttle. Stacking several pulls of the same bike and gear pools their points into one denser curve.
  • The model depends on inputs you supply or the preset estimates: total weight, tire radius, drag area, rolling resistance and front weight share.
  • There is no wind term and no grade term in the saved-pull analysis, and no rotating-inertia allowance.
  • GPS elevation on the live screen is for reference only. Web apps can't read the iPhone's barometer.
Getting good pulls
  • Ride safely and legally. Use a closed course or a place where the speeds involved are legal, with clear sight lines and no traffic. Use a solid, lockable phone mount, and don't touch the phone in traffic.
  • Pick a flat, straight road and a calm day. The analysis assumes level ground and has no wind correction.
  • Stay in one gear for the whole pull, and choose that gear in the analysis afterward. On a dual-clutch bike, use manual mode.
  • Set your real total weight. Enter rider and cargo weight, and check the bike weight and tire radius. They feed straight into the force and rpm math.
  • Tap Record, then roll on firmly and hold it for at least 4 seconds. The status line should switch to armed.
  • Roll off cleanly. The pull ends by itself about 2 seconds later and saves.
  • Stay under open sky. Buildings and trees make GPS worse.
  • Check the weather fields when you open the pull, and look at the dots behind the curve. A tight cluster means a cleaner pull.
Your data and exports

There is no account, no login and no server that stores your pulls. Settings live in the phone's local storage and pulls in its built-in database. Up to 20 pulls are kept; when a new pull would make 21, the oldest pull that isn't starred is deleted. Starred pulls are never deleted automatically.

Apart from loading and updating its own files, the only network call the app makes is the weather lookup. To get the weather it sends Open-Meteo the location and time of the pull. Nothing else leaves the phone unless you share an export.

Each pull can be shared through the iPhone share sheet as a PDF dyno sheet or an Excel workbook (summary, raw GPS data, calculated points and chart). Privacy tip: exports include location. The PDF shows the pull's start location and the workbook has every fix's latitude and longitude, so think before posting a raw export in public.

Sources

  1. SAE International, J1349 Engine Power Test Code, Spark Ignition and Compression Ignition, Net Power Rating. Link
  2. Open-Meteo, free weather API (forecast and historical archive). Link
  3. Cycle World, "Harley-Davidson Road King" road test (stock Evolution rear-wheel dyno run), May 1994. Link
  4. True Power: Dyno & Accel, Google Play listing (describes an automatic run trigger). Link
  5. Clockwatts, virtual dynamometer app website (describes an automatic measurement mode). Link

Full bibliography and image credits: Sources & Credits. Magazine pages are linked, never copied or hosted here. Spot an error? Tell us.