← Back to Gearing Calculator

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.