Privacy Policy
Last updated: July 19, 2026
Gearing Calculator is a gearbox/diff/engine simulator, available as a website and as native iOS and Android apps. This one policy covers all three — they share the same no-collection design, described per platform below.
Short version
We don't collect anything, on any platform. There are no accounts, no forms, no analytics, and no advertising. The inputs you enter — gear ratios, tire size, engine curves — are calculated on your device and never leave it.
Web
What runs where
The calculator's math runs in your browser via Pyodide, a Python runtime compiled to WebAssembly. The server's only job is to hand your browser the page, script, and data files; after that, nothing you type is sent back to it. There is no backend that processes, stores, or transmits your inputs.
Local storage
The site remembers one thing on your device: your light/dark theme
preference, stored in your browser's localStorage. It
never leaves your device and is not readable by us or anyone else.
Export / import
The "Export inputs" and "Import inputs" buttons save and load a JSON file directly through your browser's file picker. That file goes wherever you choose to save it on your own device — it is never uploaded anywhere.
Third-party requests
To run Python in the browser, the page loads the Pyodide WebAssembly runtime from the jsDelivr CDN. That request is subject to jsDelivr's own privacy practices, and like any network request it exposes standard technical information (such as your IP address) to jsDelivr. No other third-party services are contacted, and the calculator itself sends nothing to jsDelivr or anywhere else beyond that one file fetch.
Server logs
Like most web servers, ours may record basic technical details of each request — such as IP address, browser type, and time of access — for operational purposes like diagnosing errors and preventing abuse. These logs are not used to identify individuals or track behavior across visits.
iOS and Android apps
What runs where
The apps use the same gearing math as the website, but nothing is fetched from the web to run it. The iOS app is a native SwiftUI interface backed by a full copy of CPython — not the WebAssembly build the website uses — embedded directly in the compiled app binary, along with a trimmed copy of the Python standard library. No interpreter or runtime is downloaded at install time or launch time; it all ships inside the signed app bundle.
The interpreter starts once, in an isolated configuration that
ignores any PYTHONPATH/PYTHONHOME
environment variables or user-level site configuration a normal
Python install would read, with its own PYTHONHOME
pointed at that bundled standard library and bytecode caching turned
off (the app's install location is read-only and signed, so nothing
is written back to it). It then runs for the rest of the app's
lifetime on a single dedicated background thread, kept separate from
the UI thread throughout. The SwiftUI layer talks to it by encoding
your inputs as JSON and calling one bridge function directly through
the Python C API in-process — never a socket, pipe, XPC connection,
or any other inter-process channel — and gets a JSON string back on
that same thread. The Android app follows the same on-device design.
There is no server component and no network call involved in
producing a result — the app works with no internet connection at
all, including in airplane mode.
Local storage
Anything the app remembers between launches is saved locally, split
across two on-device mechanisms depending on what it is. A couple of
small interface preferences (such as your light/dark mode choice)
are saved via iOS's standard UserDefaults. Your actual
drivetrain data — the setups you've entered, anything saved to the
Garage, and any saved laps (including an imported RaceChrono GPS
trace) — is saved as plain JSON files in the app's sandboxed
Application Support directory, a location private to this app that
no other app can read. Neither is transmitted anywhere, and both are
removed if you uninstall the app.
Permissions
The apps do not request access to your camera, microphone, location, contacts, photos, or any other device permission. None are needed to calculate gear ratios.
Two features read a file you pick yourself — importing a setup shared as a QR code image, and importing a lap from a RaceChrono CSV export — and neither needs a permission grant to do it. Both go through iOS's system pickers (the Photos picker and the Files picker), which run outside the app's process and hand back only the specific item you select; the app is never given standing access to your whole photo library or file system. Reading the QR code out of a picked image happens entirely on-device, using Apple's Vision framework — there is no camera preview, no live scanning, and no network call involved.
Third parties
The apps do not use analytics, advertising, or crash-reporting SDKs, and make no network requests of any kind. Nothing is sent to us or to any third party.
Children's privacy
None of the three — website, iOS app, or Android app — collects personal information from anyone, including children.
Changes to this policy
If this policy changes, the updated version will be posted on this page with a new "last updated" date.
Contact
Questions about this policy can be sent to engineering@kranky.dev.