SpokeSpan

Spoke lengths that update while you lace.

Offline workshop calculator. ERD, flange PCD, and center-to-flange — left and right rewrite as you change cross and dish.

Android12 hubs · 12 rims0–4 crossmm / in
Product

A triangle on the stand, not a spreadsheet.

Stand a hub and a rim, set hole count and cross, read two lengths plus dish before you open a spoke box. Drive side reads brass; non-drive stays steel. A 1 mm CTF error moves dish more than the same ERD error — the app keeps that visible.

Three intro cards, then a bench that is never empty: twelve hubs, twelve rims, twelve kits. Seeded numbers are typical shop values. Confirm ERD with a nipple seated. Planning aid, not a machine-shop print.

Bench

Live geometry

Lacing stage

The wheel drawing updates with crosses and holes. Nudge left CTF, right CTF, and dish on the canvas. Length chips sit under it: non-drive L, drive R, dish offset, Δ L−R.

Sliders

ERD 500–640 mm. Flange 28–80. CTF 8–55 each side. Cross 0–4x. Dish toward rotor or cassette — 0.5 mm Boost is a shop choice.

Save kit

Name, gauge, nipples, notes. Writes to Room. Header shows hole count and cross so you know which lace you are editing.

Catalog

Parts already on the bench

Filter hubs Road / MTB / Dynamo / Cargo. Rims 26 / 27.5 / 29 / 700c. Search brand. Detail → use on bench.

HubsRims
DT 350 Road CL, 105 R7000, Ultegra front, Hope Pro 5 Boost, XT M8100, I9 Hydra, SON Delux, SP PV-8, Novatec D791SB, Phil Wood ISO, White CLD, Formula DC-22RR 411, Kinlin XR-31T, Velocity A23 OC, Archetype, M 542, Arch MK3, XR 391, Rhyno Lite, Andra 40, DM18, GR 531, XM 481
Kits

Compare, then cut

Filter saved builds by cross. Compare A vs B: Δ left, Δ right, Δ dish. Flange or CTF off by more than ~1.5 mm → recut. Front-to-rear spare almost always needs new drive-side spokes. Cut card lists hub, rim, rounded lengths, counts, gauge, nipples. Share uses the system sheet only when you tap it.

Seeded: commuter 700c 3x, trail 29 Boost, cargo 26 4x, gravel dynamo 2x, city front, XC spare, 27.5 XT, bakfiets steel, endurance 32h, shop 26, 105 offset A23, winter dynamo.

Math

Space diagonal, then dish

Per side: rim R = ERD/2, hub R = PCD/2, CTF, even holes 8–48, crosses 0–4. Also: dish from the CTF split plus target, bracing angles, tension ratio, spokes per side. Rounding exact / 0.5 mm / 1 mm. Units mm or inches. Nipple head is not added — published ERD already assumes one. 24h rears want a tighter band than 36h cargo. Never radial the cassette side.

Guide: tension by count, cross primer, 90-second dish check, gauge, nipples, hub-swap recut. Settings: units, default cross, rounding. Local Room + DataStore only.

Support

anhelina-ats-agro

Lengths that look wrong, a catalog card that does not match the hub in your hand, a cut card that failed to share: harviespectord8182@gmail.com. Send kit name, holes, crosses, ERD, both PCDs, both CTF, and the two lengths shown. Replies in order, usually a few business days. No accounts. Not a parts counter.

Frequently asked questions

Does it work offline?

Yes. Network only if you tap Share and pick a destination.

Why don’t lengths match another calculator?

ERD with or without a seated nipple, diameter vs PCD, tape on or off. Re-measure the parts in your hand.

Reuse spokes after a hub swap?

Compare first. More than ~1.5 mm on flange or CTF → recut. Front-to-rear almost always needs new drive-side spokes.

Which rounding when I order?

Half-millimetre default. Exact while checking. Whole mm if the vendor sells 1 mm steps.

Is the seed catalog a guarantee?

No. Typical values. Coating, eyelets, strip, or a re-spaced axle move the triangle.

Is anything uploaded?

No. Uninstall clears Room and DataStore.

Who do I write?

harviespectord8182@gmail.com — full geometry plus both lengths. Recheck CTF first.