# E-bike range calculator

- Human page: https://happytails.ai/en/calculators/e-bike-range-calculator/
- Markdown: https://happytails.ai/en/calculators/e-bike-range-calculator.md
- Structured JSON: https://happytails.ai/agents/en/calculators/e-bike-range-calculator/index.json
- Visibility: public

## Tool capabilities

| Property | Value |
| --- | --- |
| Tool ID | `e-bike-range-calculator` |
| Category | calculators |
| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |
| Browser execution | Automatic updates after valid input or file selection. |
| Browser processing | Browser; see tool notes for network behavior. |
| HTTP API | Not callable through HTTP. |
| Browser-agent interface | run_current_tool |

### Implementation notes

Calculated on your device for batteries from 50 to 5,000 Wh and energy use from 1 to 100 Wh/km. The range is an estimate from your inputs, not a guarantee.

### Inputs and settings

No free-text input is required. Use the file inputs and/or settings below.

| Setting | Meaning | Control type | Default | Constraints |
| --- | --- | --- | --- | --- |
| `capacityMode` | Battery rating given as | select | "Watt-hours" | Allowed: Watt-hours, Volts and amp-hours |
| `capacityWh` | Battery capacity (Wh) | number | 500 | min=0 step=any |
| `voltage` | Nominal voltage (V) | number | 36 | min=12 max=120 step=any |
| `ampHours` | Capacity (Ah) | number | 14 | min=1 max=100 step=any |
| `usableShare` | Usable share of rated capacity (%) | number | 90 | min=10 max=100 step=any |
| `start` | Starting charge (%) | number | 100 | min=1 max=100 step=any |
| `reserve` | Arrival reserve (%) | number | 10 | min=0 max=99 step=any |
| `distanceUnit` | Distance unit | select | "km" | Allowed: km, mi |
| `consumptionMode` | Energy use from | select | "Energy use per distance" | Allowed: Energy use per distance, From a measured ride |
| `consumptionUnit` | Energy use unit | select | "Wh/km" | Allowed: Wh/km, Wh/mi, kWh/100 km |
| `consumption` | Energy use | number | 10 | min=0 step=any |
| `rideDistance` | Distance of the measured ride | number | 30 | min=0 step=any |
| `rideUsed` | Battery used on that ride (%) | number | 40 | min=0 max=100 step=any |
| `conditions` | Extra consumption for conditions (%) | number | 0 | min=-50 max=200 step=any |
| `trip` | Planned trip distance (optional) | number | "" | min=0 step=any |

### Browser-agent workflow

1. Open the human page in a browser that supports WebMCP.
2. Discover the interface exposed by that page; use its actual schema.
3. Select files on the page first when the tool requires files.
4. Call `run_current_tool` with valid input and settings.
5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.

Calls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.

### Planning specification

Battery 50 to 5,000 Wh, entered directly or as 12 to 120 V times 1 to 100 Ah; usable share 10 to 100%; starting charge 1 to 100%; reserve 0 to 99% and below the starting charge; energy use 1 to 100 Wh/km, including from a measured ride of up to 1,000 km; conditions -50 to 200%; trips up to 10,000 km. Calculated on your device; download a JSON report and a CSV of results.

This describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.

### Complete machine-readable capability record

```json
{
  "id": "e-bike-range-calculator",
  "category": "calculators",
  "built": true,
  "requirements": "Battery 50 to 5,000 Wh, entered directly or as 12 to 120 V times 1 to 100 Ah; usable share 10 to 100%; starting charge 1 to 100%; reserve 0 to 99% and below the starting charge; energy use 1 to 100 Wh/km, including from a measured ride of up to 1,000 km; conditions -50 to 200%; trips up to 10,000 km. Calculated on your device; download a JSON report and a CSV of results.",
  "implementation": {
    "fields": [
      {
        "key": "capacityMode",
        "label": "Battery rating given as",
        "value": "Watt-hours",
        "type": "select",
        "values": [
          "Watt-hours",
          "Volts and amp-hours"
        ]
      },
      {
        "key": "capacityWh",
        "label": "Battery capacity (Wh)",
        "value": 500,
        "type": "number",
        "min": 0,
        "step": "any",
        "showWhen": {
          "capacityMode": [
            "Watt-hours"
          ]
        }
      },
      {
        "key": "voltage",
        "label": "Nominal voltage (V)",
        "value": 36,
        "type": "number",
        "min": 12,
        "max": 120,
        "step": "any",
        "showWhen": {
          "capacityMode": [
            "Volts and amp-hours"
          ]
        }
      },
      {
        "key": "ampHours",
        "label": "Capacity (Ah)",
        "value": 14,
        "type": "number",
        "min": 1,
        "max": 100,
        "step": "any",
        "showWhen": {
          "capacityMode": [
            "Volts and amp-hours"
          ]
        }
      },
      {
        "key": "usableShare",
        "label": "Usable share of rated capacity (%)",
        "value": 90,
        "type": "number",
        "min": 10,
        "max": 100,
        "step": "any",
        "help": "Covers battery age and the cut-off of the battery management system. Enter 100 to use the full rating. 90 is an editable example."
      },
      {
        "key": "start",
        "label": "Starting charge (%)",
        "value": 100,
        "type": "number",
        "min": 1,
        "max": 100,
        "step": "any"
      },
      {
        "key": "reserve",
        "label": "Arrival reserve (%)",
        "value": 10,
        "type": "number",
        "min": 0,
        "max": 99,
        "step": "any",
        "help": "Charge you want left when you arrive."
      },
      {
        "key": "distanceUnit",
        "label": "Distance unit",
        "value": "km",
        "type": "select",
        "values": [
          "km",
          "mi"
        ]
      },
      {
        "key": "consumptionMode",
        "label": "Energy use from",
        "value": "Energy use per distance",
        "type": "select",
        "values": [
          "Energy use per distance",
          "From a measured ride"
        ]
      },
      {
        "key": "consumptionUnit",
        "label": "Energy use unit",
        "value": "Wh/km",
        "type": "select",
        "values": [
          "Wh/km",
          "Wh/mi",
          "kWh/100 km"
        ],
        "showWhen": {
          "consumptionMode": [
            "Energy use per distance"
          ]
        }
      },
      {
        "key": "consumption",
        "label": "Energy use",
        "value": 10,
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "From the display or your own records. 10 Wh/km is an editable example.",
        "showWhen": {
          "consumptionMode": [
            "Energy use per distance"
          ]
        }
      },
      {
        "key": "rideDistance",
        "label": "Distance of the measured ride",
        "value": 30,
        "type": "number",
        "min": 0,
        "step": "any",
        "showWhen": {
          "consumptionMode": [
            "From a measured ride"
          ]
        }
      },
      {
        "key": "rideUsed",
        "label": "Battery used on that ride (%)",
        "value": 40,
        "type": "number",
        "min": 0,
        "max": 100,
        "step": "any",
        "help": "Drop in the battery display from the start to the end of the measured ride.",
        "showWhen": {
          "consumptionMode": [
            "From a measured ride"
          ]
        }
      },
      {
        "key": "conditions",
        "label": "Extra consumption for conditions (%)",
        "value": 0,
        "type": "number",
        "min": -50,
        "max": 200,
        "step": "any",
        "help": "For example more hills, headwind, cold, a heavier load or a higher assist level than usual. Enter 0 for the same conditions."
      },
      {
        "key": "trip",
        "label": "Planned trip distance (optional)",
        "value": "",
        "type": "number",
        "min": 0,
        "step": "any",
        "help": "Leave empty to skip the trip check."
      }
    ],
    "registrationFamily": "vehicle-and-cycling",
    "input": false,
    "live": true,
    "presentation": "metrics",
    "note": "Calculated on your device for batteries from 50 to 5,000 Wh and energy use from 1 to 100 Wh/km. The range is an estimate from your inputs, not a guarantee.",
    "experience": {
      "automatic": true,
      "single": false,
      "inputMaxLength": 1000000,
      "inputMode": "text",
      "label": "Your text",
      "placeholder": "Type or paste your input…",
      "help": "Change the input or settings to update your result. Results update as you type. Up to 1,000,000 characters.",
      "action": null
    },
    "mode": "automatic",
    "interactive": false
  },
  "execution": "Browser interface",
  "api": null,
  "browser_agent": {
    "supported": true,
    "name": "run_current_tool",
    "discovery": "WebMCP on the human page in a supporting browser",
    "verification": "See audit/API-AUDIT.md; availability is not verification"
  }
}
```

## Page guide

Estimate e-bike range from the battery rating and your energy use, or from a ride you have already measured. Add a planned ride to see the charge left at the end.

How can we improve this tool?

Report a problem or share an idea.

Please leave out private information. Your message and the tool name go to our team via PostHog.

### How to use E-bike range calculator

1. Enter the battery rating in watt-hours, or as volts and amp-hours, and the usable share.
2. Enter the starting charge and the reserve you want to keep.
3. Enter your energy use per distance, or the distance and battery percentage of a ride you measured.
4. Add extra consumption for hills, wind or assist level and a planned ride, then review and download the report.

## Useful next steps

- [Scooter charging calculator](https://happytails.ai/en/calculators/scooter-charging-calculator/) ([Markdown](https://happytails.ai/en/calculators/scooter-charging-calculator.md))

- [Bicycle gear calculator](https://happytails.ai/en/calculators/bicycle-gear-calculator/) ([Markdown](https://happytails.ai/en/calculators/bicycle-gear-calculator.md))

- [Cycling cadence calculator](https://happytails.ai/en/calculators/cycling-cadence-calculator/) ([Markdown](https://happytails.ai/en/calculators/cycling-cadence-calculator.md))

## Battery energy

Battery energy in watt-hours is the nominal voltage times the amp-hour rating, because energy is charge times voltage (OpenStax College Physics 2e, section 19.1, July 2022, checked 16 October 2026). A 48 V, 17.5 Ah pack holds 840 Wh. The usable share covers battery age and the cut-off of the battery management system, and the battery display shows shares of that usable energy.

### Energy use from a measured ride

If your display used 35% of an 840 Wh battery over 25 miles, the ride used 294 Wh, or about 7.31 Wh/km (11.76 Wh/mi). Measured rides already include your weight, tyres, terrain and assist level, so they are usually closer to your real use than a catalogue figure. Add extra consumption when the next ride is hillier, colder or into the wind.

### Range and limits

Range is the energy between your starting charge and your reserve divided by energy use. With that ride, 10% extra consumption and 80% down to 20%, the estimate is about 39 miles. Batteries from 50 to 5,000 Wh and energy use from 1 to 100 Wh/km are accepted. Results are estimates, not a promise that a ride can be completed. Unit conversions use NIST SP 811 factors.
