Hairspring

A timegrapher for mechanical watches.

Any app can print a rate. Hairspring measures again, tells you whether the two readings agree, and saves the evidence.

Run 1+2.1 ± 0.4 s/d
Run 2+2.3 ± 0.4 s/d
VerdictThe readings agree
Every rate carries its statistical fit uncertainty. When the signal won't support a number, Hairspring says so — and names the fix — instead of printing something plausible.
Download on the App Store

One upfront purchase. No subscription, no account, no automatic uploads —
your data stays on your iPhone unless you choose to export it.

New to timing a watch by sound? Read the practical iPhone watch timegrapher guide for placement, measurement, and result-reading advice. If the app cannot hear or lock onto the watch, use the signal troubleshooting guide. See what changed in Hairspring 1.0.2, or subscribe to the Hairspring updates feed. If two tests give you different numbers, see why timegrapher readings change and compare them with the free timegrapher repeatability calculator. For the numbers and timing diagram themselves, use the step-by-step guide to reading a timegrapher. Choosing between the phone and dedicated hardware? Use the iPhone timegrapher vs WeiShi comparison protocol. Choosing among current iPhone apps? See the source-linked iPhone timegrapher app comparison. Choosing between a zero-install browser check and a native measurement workflow? Read free online timegrapher vs iPhone app. For a long-run check against a clock, use the free mechanical watch accuracy calculator.

What it reports

Lay the phone flat, set the watch beside it, and Hairspring listens to the escapement itself:

It needs a mechanical (not quartz) watch. Rate is the measurement this method does best; amplitude and beat error are reported with their limits stated. If a reading can't be defended — too much scatter, an implausible result, timing too disturbed to number the beats — Hairspring refuses it and names the cause, because a plausible-looking wrong number is worse than no number.

Support

Email moganes@gmail.com for help with app issues, to report bugs, share general feedback, or suggest feature enhancements. Include your iPhone model and, if a measurement went wrong, the diagnostic log — see below. Replies usually within a couple of days.

Getting a good measurement

Where to put the watch

Beside the phone, not on it. Lay the phone flat on a hard surface — wood or stone, not cloth or a cushion — and set the watch dial-up about 5 cm from the bottom edge, crown toward the phone. The microphone is at the bottom edge, and a watch resting on the handset muffles it.

Wind the watch first

A watch running on the last of its reserve reads low and ragged. Give it a full wind and a minute to settle before measuring.

A quiet room helps more than you'd think

A ticking wall clock nearby can genuinely defeat the beat detection — its ticks arrive at a steady period too. If a measurement will not lock in a room with another clock in it, move one of them.

Common questions

It says "steady ticking, but its beat cannot be confirmed"

Hairspring can hear something periodic but cannot establish which beat rate it is. Almost always placement: re-seat the watch on a harder surface, closer to the bottom edge, and make sure nothing is covering the microphone.

Why is amplitude shown as a range?

Because that is what the method honestly supports. Amplitude is derived from the gap between two escapement noises, and there are several defensible ways to define exactly where each one begins — they differ by tens of degrees. Reading the range keeps you from over-trusting a single figure. The measurement underneath it is repeatable to a fraction of a degree.

Why does it sometimes refuse to show a rate?

Because it could not measure one it would stand behind. Too much scatter in the detected ticks, a result no mechanical watch could produce, or timing so disturbed the beats cannot be numbered at all. Each refusal names its cause and what to change. This is deliberate: a plausible-looking wrong number is worse than no number.

Does it work on quartz watches?

No. Hairspring measures a mechanical escapement. A quartz watch's stepper motor ticks once per second, which this is not built to analyse.

Does it need the internet?

No. The measurement engine makes no network requests. Live audio is analysed on your device and Hairspring never transmits it automatically. If you enable Raw Capture, the recording remains on your device unless you explicitly export it.

Sending a diagnostic log

Hairspring writes a log of the last measurement to its own folder. Open the Files app → On My iPhoneHairspringdetector.log. It contains signal levels and timing statistics, not microphone audio. Review it first and share it by email only if you choose.