Rowing — what this is, where every number came from, and what it gets wrong
An independent browser reimplementation of flat-water rowing. Rowing is a sport, not a game somebody published, so there is no original author, year or publisher to credit for a design. What there is to credit is the rules and the physics, and all of it is below with a source. This app is not affiliated with, endorsed by, or connected to World Rowing, any national federation, any boat or oar manufacturer, any club, or any athlete or researcher named here.
The mechanism this is built around
A racing shell weighs less than its crew. When the crew slides toward the stern on the recovery, the hull is pushed the other way, and it speeds up with every blade out of the water. The engine's hull equation is one line:
M · ahull = Fblade − Fdrag(v) − mcrew · s”
where s is the crew's centre of mass measured along the hull. Nothing tells the hull when to be fastest. That is an output, and the instrument panel plots it live.
What this gets wrong — the limits, stated plainly
- The sweep classes are the model's clear failure. Kleshnev (1999) measured blade efficiency rising with crew size — 78.5 % single, 81.9 % pair/double, 83.5 % four/quad, 85.3 % eight. This engine's quasi-steady foil blade reproduces the sculling numbers and gets the sweep boats badly wrong, at about 0.63–0.70, and it gets the trend backwards. The most likely missing physics is the unsteady, added-mass force as the blade loads, which a quasi-steady model has no way to produce.
- Each boat class carries one calibrated number. The per-class oar arc is fitted to that class's published prognostic time, because nobody publishes per-class rigging. The fitted arcs land at 99.6–114.3° for sculling and 83.1–94.2° for sweep, which are ordinary real arcs, but they are a fit and are counted as such below.
- The model needs more power than the erg score says — 2 % more for the sculling classes and 12–31 % more for the sweep ones. That gap is the sweep failure above, made visible in watts.
- The stroke is prescribed, not solved. The crew's slide and the oar's angle are shaped functions of the stroke phase, taken from measured curve shapes. No muscles, no joints, no force-velocity relation. The rower's power is an output of those kinematics, not an input.
- One dimension of hydrodynamics. The hull only moves along the course. Pitch, roll, heave, wash from the next lane, and the bow wave are all absent. Steering is a token model with no published basis, and its drag cost is invented.
- No wind, no stream, no water temperature, all of which change real rowing speed by several per cent.
- The blade is a flat plate. Normal force only, coefficient proportional to the sine of the angle of attack. Real blades are cambered, generate lift, ventilate, and shed vortices.
- Critical power and W′ are invented. Nobody publishes them for on-water rowing crews, so the anaerobic capacity is a guess and critical power is derived from it.
- The opponents are simple controllers with a skill factor and a rate plan. They do not race you tactically.
- No sound.
Where every number came from
Every model constant in js/rowing.js carries exactly one of five tags, and the
engine exports the ledger so it can be counted by machine rather than by hand. These counts are
re-derived from that ledger by the page harness and by this page itself when it loads; if they drift, the
harness fails.
| Tag | Count | Meaning |
|---|---|---|
| DOCUMENTED | 36 | stated in a rulebook or official specification |
| MEASURED | 10 | a published experimental measurement |
| DERIVED | 5 | computed from other tagged constants; the derivation is in the comment |
| CALIBRATED | 18 | chosen so the model reproduces a published outcome, which is named |
| RECONSTRUCTED | 25 | this app's own choice; nobody published it |
| Total model constants | 94 | sourced (documented or measured): 46 of 94 |
Separately, the boat table carries 66 published values used verbatim — six per class for eleven classes: World Rowing's minimum boat weight, and Kleshnev's crew mass, 2 km ergometer score, racing stroke rate, world best time and prognostic time. Counting those, 112 of 160 numbers in this app come from a source you can open.
Of the 18 CALIBRATED constants, 11 are the per-class oar arcs described above. The other seven are the blade's force coefficient (fitted to Kleshnev's 78.5 % single-scull blade efficiency), the crew's centre-of-mass excursion (fitted to his 93.8 % boat efficiency), the drag constant (one number, fitted across all eleven prognostic times at once), the sweep-to-scull arc ratio, and three shape numbers for the oar's path through the drive.
Sources
- World Rowing Rules of Racing, final 24 February 2021 — course length, number of lanes, coxswain minimum weight and deadweight allowance, lightweight limits, and Rule 28 "Free Construction", which is why no hull dimension in this app comes from a rulebook. d2cx26qpfwuhvu.cloudfront.net/worldrowing/wp-content/uploads/2021/02/04162055/2021-World-Rowing-Rules-of-Racing-Final-240221.pdf
- World Rowing Appendix R3 — Weight of Boats — the minimum weight of every class. worldrowing.com → Appendix R3, Weight of Boats
- World Rowing Appendix R4 — Regatta Courses — lane width 12.5–15 m, water depth, Albano buoy spacing. worldrowing.com → Appendix R4, Regatta Courses
- Hofmijster, Landman, Smith & van Soest (2007), "Effect of stroke rate on the distribution of net mechanical power in rowing", Journal of Sports Sciences 25(4):403–411 — the drag law P = k·v2.7, the drive durations, the oar arcs, and the propelling / velocity / net efficiency framework this engine's power budget is written in.
- Kleshnev (1999), "Propulsive Efficiency of Rowing", Proceedings of the XVII ISBS Symposium, Perth, 224–228 — blade and boat efficiency by boat class, and drag coefficients by boat class.
- Kleshnev, Rowing Biomechanics Newsletter — No. 166 (Jan 2015) for where the boat's speed peaks and for the loss law El = 2.5 Cv²; Vol. 4 No. 7 (2004) for the rate dependence; Vol. 3 No. 3 (2003) for drive and recovery durations; and the row2k article "The Biomechanics of the Recovery Phase" (n = 25 658) for the 50–70 % band every velocity-curve shape in this engine is held to.
- Kleshnev / BioRow, "Rowing Biomechanics and Race Analysis", hosted by World Rowing — racing stroke rates from the 2019 World Championship A-finals, crew masses, ergometer scores, world best times and the BioRow prognostic times.
- Kleshnev / BioRow (3 July 2026), "Effect of boat mass on rowing biomechanics" — the added-mass experiment this engine is tested against and was not fitted to.
- Greidanus, Delfos, Picken & Westerweel (2016), "Drag and Power-loss in Rowing Due to Velocity Fluctuations", Procedia Engineering 147:317–323 — a measured table of velocity efficiency against fluctuation amplitude, used as an oracle.
- Martin & Bernfield (1980), "Effect of stroke rate on velocity of a rowing shell", Medicine & Science in Sports & Exercise 12:250–256 — the 1976 US Olympic eight: minimum shell velocity 27 % into the leg drive, maximum during the recovery, −24.4 % and +18.6 % of the mean.
- Buckmann & Harris (2014), "An experimental determination of the drag coefficient of a Mens 8+ racing shell", SpringerPlus 3:512 — a measured drag constant for a real eight of known mass, used as an oracle.
- Holt, Ball, Siegel, Hopkins & Aughey (2021), PLoS ONE 16(8):e0249122 — race boat velocities, stroke rates and boat-acceleration landmarks.
- Hill & Fahrig (2009), "The impact of fluctuations in boat velocity during the rowing cycle on race time", Scandinavian Journal of Medicine & Science in Sports 19:585–594 — drive durations for elite pairs and the rate dependence of the recovery speed-up.
- Filippi moulds list v.5 r.1 and Concept2's published oar and rigging tables — hull lengths and widths, oar lengths, inboards, span, spread and blade dimensions. Concept2 does not publish blade area; the areas here are computed from the published length and width with an assumed shape factor, which is tagged RECONSTRUCTED.
Two things the sources do not say, and one they say wrongly
- The widely circulated sentence "maximum velocity is achieved at the start of the recovery phase, while the minimum was registered during the catch phase", attributed to Kleshnev's 2010 Proc IMechE Part P paper, could not be verified: that paper's own abstract does not contain it. The claim used here instead is Kleshnev's own wording in RBN No. 166, which is sharper — the peak is at the finish below about 24 spm and moves through the recovery toward the catch above it.
- There is no separate women's coxswain minimum weight. Rule 21 sets one figure, 55.0 kg, and says the coxswain's sex is open. The often-quoted 50 kg does not appear in the rules.
- The Greidanus abstract prints its own result as "about 0.92 − 0.95 %". The stray per-cent sign is a typesetting slip; the body and the conclusions both give 92–95 %.
Controls
Space or a touch on the water: hold for the drive, release at the finish. Wait for the slide before the next catch — rushing it costs you speed, and the instrument panel will show you why. ← and → steer; on a touch screen, touch and hold the left or right edge of the water. Esc or the Pause button pauses. V or the View button switches to the side view. L opens the laboratory.
Technology
Hand-written WebGL2. No framework, no library, no CDN, no web font, no analytics, and no network request of any kind. The icons and the social card are drawn from the engine's own geometry. Settings and personal bests are kept in this browser's local storage and nowhere else.