package icon

iSpindle Plotter

Collect and plot fermentation data from an iSpindel hydrometer.
New in version 0.5.23
Detects the yeast-settling stage at the end of a ferment.

Once fermentation finishes, the yeast flocculates and drops out of suspension. Because the iSpindle floats in the clearing upper layer, the gravity reads a small step down — a couple of points — at steady temperature, before any cold crash. The graph now labels this as a Clarifying stage, shades it on the chart, and treats the clarified gravity as the final gravity: suspended yeast inflates a reading, so the settled value is closer to th
iSpindle Plotter is a self-hosted companion app for the iSpindel — an open-hardware floating hydrometer used by home brewers to track specific gravity through a fermentation. The app runs a small HTTP server on your phone that the iSpindel posts its readings to over your local Wi-Fi network, then stores, charts, and analyses those readings without ever sending your data to a third-party cloud service.

Pairing and configuration:

* Auto-pair flow that joins the iSpindel's configuration access point, sets the phone as the HTTP target (Generic HTTP / selAPI=3), reads the device's existing cubic calibration polynomial off the firmware, and reconnects to your home network — without losing pre-existing fields like the calibration on subsequent saves.
* mDNS-style hostname discovery so the iSpindel can find your phone again after either device's IP changes.
* Pushes the app's own calibration polynomial back to the iSpindel when you re-calibrate.

Calibration:

* Fit cubic / quadratic / linear polynomials from your own sucrose-dilution measurements.
* Imports the iSpindel's pre-installed factory calibration on first pairing.
* Setup guide with a sucrose-step-dilution recipe for 1.000–1.080 SG.

Plotting and analysis:

* Tilt angle, temperature, specific gravity, and battery voltage charts with a 24h / 7d / 30d / All time-window switcher.
* Potential-alcohol secondary axis on the SG chart.
* Robust phase classifier (Lag / Active / Slowing / Conditioning / Stuck / Cold crash) using a modified-Gompertz Levenberg-Marquardt fit (Zwietering et al. 1990), with fallback to an attenuation-prior when the data is too early to constrain the asymptote.
* Predicted final gravity overlaid on the chart with a tapering uncertainty band derived from short-time noise estimation and the calibration polynomial's residual.
* Battery runway estimate: linear discharge fit projecting time-to-cutoff at the current sample rate.
* Trim-before-date-and-time to drop pre-fermentation noise; CSV export via the system file picker.

Privacy:

* No analytics, no telemetry, no third-party network connections.
* Data is held only on your phone and only sent to your iSpindel's local IP for configuration writes.
* The app's HTTP server listens on the phone's local network address only.

Hardware: built and tested with an MTB iSpindel PCB 4.0; should work with any iSpindel firmware that supports the Generic HTTP target.

Versions

Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.

Download F-Droid
  • Version 0.5.23 (28) suggested Added on Jun 20, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 7.0 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • access precise location only in the foreground
      This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • view Wi-Fi connections
      Allows the app to view information about Wi-Fi networking, such as whether Wi-Fi is enabled and name of connected Wi-Fi devices.
    • change network connectivity
      Allows the app to change the state of network connectivity.
    • connect and disconnect from Wi-Fi
      Allows the app to connect to and disconnect from Wi-Fi access points and to make changes to device configuration for Wi-Fi networks.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "connectedDevice"
      Allows the app to make use of foreground services with the type "connectedDevice"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • interact with nearby Wi-Fi devices
      Allows the app to advertise, connect, and determine the relative position of nearby Wi-Fi devices
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • com.ispindle.plotter.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 16 MiB PGP Signature | Build Log

  • New in version 0.5.22
    A more robust original-gravity estimate.

    Original gravity is read from the settled plateau at the very start of the ferment. That level now uses the median of those readings rather than the mean, so it shrugs off an early krausen / CO2 spike inside the window no matter how large — OG stays anchored to the true settled value rather than being nudged up by the rise. On a clean start the two agree; the median just holds up better when the start is messy.
  • Version 0.5.22 (27) - Added on Jun 18, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 7.0 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • access precise location only in the foreground
      This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • view Wi-Fi connections
      Allows the app to view information about Wi-Fi networking, such as whether Wi-Fi is enabled and name of connected Wi-Fi devices.
    • change network connectivity
      Allows the app to change the state of network connectivity.
    • connect and disconnect from Wi-Fi
      Allows the app to connect to and disconnect from Wi-Fi access points and to make changes to device configuration for Wi-Fi networks.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "connectedDevice"
      Allows the app to make use of foreground services with the type "connectedDevice"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • interact with nearby Wi-Fi devices
      Allows the app to advertise, connect, and determine the relative position of nearby Wi-Fi devices
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • com.ispindle.plotter.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 16 MiB PGP Signature | Build Log

  • New in version 0.5.19
    Remove a false-positive ferment in one tap.

    Sometimes the chart flags a ferment that wasn't one — the iSpindle was knocked, bumped, or lifted out for cleaning, and the brief tilt change reads like the start of a brew. Select that ferment and tap the new trash button to delete just its readings; a confirmation shows how many points and the date range first. The rest of the device's history stays untouched.
  • Version 0.5.19 (24) - Added on Jun 16, 2026

    arm64-v8a armeabi-v7a x86 x86_64

    This version requires Android 7.0 or newer.

    It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.

    Permissions
    • access precise location only in the foreground
      This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.
    • view network connections
      Allows the app to view information about network connections such as which networks exist and are connected.
    • view Wi-Fi connections
      Allows the app to view information about Wi-Fi networking, such as whether Wi-Fi is enabled and name of connected Wi-Fi devices.
    • change network connectivity
      Allows the app to change the state of network connectivity.
    • connect and disconnect from Wi-Fi
      Allows the app to connect to and disconnect from Wi-Fi access points and to make changes to device configuration for Wi-Fi networks.
    • run foreground service
      Allows the app to make use of foreground services.
    • run foreground service with the type "connectedDevice"
      Allows the app to make use of foreground services with the type "connectedDevice"
    • have full network access
      Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
    • interact with nearby Wi-Fi devices
      Allows the app to advertise, connect, and determine the relative position of nearby Wi-Fi devices
    • show notifications
      Allows the app to show notifications
    • run at startup
      Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
    • prevent phone from sleeping
      Allows the app to prevent the phone from going to sleep.
    • com.ispindle.plotter.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION

    Download APK 16 MiB PGP Signature | Build Log