How we calculate your Tesla battery health
No black boxes. Every number on your Tesla dashboard and passport is derived from raw Tesla Fleet API data using the formulas below. The same inputs always produce the same outputs — so anyone can verify our work.
The short version — what VoltValue actually does, in four steps.
Technical specification — for engineers and sophisticated buyers
Before the formulas, here's the everyday version of what VoltValue does behind the scenes — no engineering required.
- 1You connect your Tesla onceThrough Tesla's official login page (OAuth). We get a read-only key. We can never unlock, honk, drive, or change anything in your car.
- 2Once a day, automaticallyOnce a day (automatically, at 2 AM UTC) we ask Tesla for your battery level, mileage, and charging sessions — whether or not you have the app open. Tapping Refresh pulls a new daily snapshot from Tesla; the SoH you see is still the weighted median of up to 180 days of snapshots.
- 3Each daily reading is saved to your accountOn the first day we immediately backfill up to 180 days of charging session history from Tesla, so kWh and cycle count data are available right away. However, daily battery health snapshots (SoH readings) are collected going forward from the day you connect — Tesla does not provide an API to retrieve historical range data.
- 4When you're ready to sell, we issue a passportWe pull one more snapshot, fold it into your weighted-median SoH, run the formulas below, and produce a single-page certificate with a public verification link buyers can scan.
Pull raw data from Tesla
When you click Generate Passport, we call the official Tesla Fleet API endpoint /api/1/vehicles/{id}/vehicle_data with three endpoint groups:
- charge_state — usable_battery_level (%, decimal — excludes cold-locked capacity; falls back to battery_level), ideal_battery_range (km), charge_limit_soc
- vehicle_state — odometer (km)
- vehicle_config — car_type, trim_badging, exterior_color
Project full-charge range
Tesla reports the ideal_battery_range at your current state of charge. We linearly project that to a 100% charge:
range_at_100% = (ideal_battery_range / battery_level) × 100
Example: a Model 3 LR showing 354 km at 65% projects to (354 / 65) × 100 = 545 km at full charge.
Compare to WLTP-rated range*
We divide the projected full-charge range by the original WLTP-rated range for your exact model, year, and trim:
SoH (%) = (range_at_100% / WLTP_rated_range) × 100
On your dashboard, we display the SOC-weighted median of up to 180 days of snapshots — not a single live reading. 180 days spans Thailand's two main seasons (hot and rainy), so the median isn't skewed by temperature in any single period — while remaining short enough that the Passport reflects the car's current condition. Snapshots taken at SOC ≥ 80% are weighted 2×, SOC 50–79% at 1×, SOC 40–49% at 0.5×. The median resists outlier days caused by temperature or unusual driving. Snapshots taken within 3 days of a Tesla OTA software update are excluded to avoid artificially shifting the trend. Snapshots captured while the car is actively charging are also excluded — SOC and range are unreliable mid-charge. Snapshots taken at SOC ≥ 80% are weighted 2× because they require less extrapolation to estimate full-charge range, making them more accurate than low-SOC readings.
WLTP-rated values from Tesla Thailand: Model 3 Standard RWD 2024+ = 534 km, Model 3 Long Range RWD 2024+ = 750 km, Model 3 Performance 2024+ = 571 km, Model 3 Long Range AWD 2021–2023 = 614 km, Model 3 Standard RWD 2021–2023 = 491 km, Model Y Standard RWD = 488 km, Model Y Long Range RWD = 661 km, Model Y Long Range AWD = 629 km, Model Y L Long Range AWD = 681 km. We switched from EPA to WLTP because Tesla sells in Thailand with WLTP specifications, and Asian driving conditions are closer to the WLTP standard than EPA, which is tested in U.S. climate conditions. Values below 75% are flagged as LOW rather than discarded — high-mileage cars can legitimately reach this range. Values outside 70–104% are flagged as sensor anomalies and excluded from the median — never clamped or adjusted. The upper bound is 104% (not 100%) because near-new cars can legitimately project slightly above WLTP due to manufacturing tolerance.
LFP vs NMC chemistry
We detect battery chemistry from three signals in priority order: average cell voltage from your uploaded BMS CSV (< 3.5 V = LFP), VIN prefix (LRW… = China-built LFP), and model/year/trim fallback (Model Y RWD 2023+, Model 3 RWD 2021+ = LFP). LFP packs use a different energy-per-km baseline and a wider cross-check tolerance (±12 points vs ±7 for NMC) because range-based SoH is less precise for flat-voltage-curve chemistries.
Compute cycles & degradation rate
Cycle count is derived from the actual energy you've put through the pack. We sum every kWh logged in your daily telemetry (home + Supercharger) and divide by usable pack capacity. If you have no telemetry yet, we show an estimated value from odometer ÷ WLTP range for this model, adjusted for Bangkok's average temperature (LFP −8%, NMC −5% vs the 23°C WLTP test condition), displayed with a ~ prefix to indicate it's an estimate.
cycles = Σ(kwh_charged_home + kwh_charged_supercharger) / pack_kWh_usable
Pack capacity (usable): Model 3 LR/Performance ≈ 78 kWh, Model Y LR ≈ 75 kWh, Model Y Standard (LFP) ≈ 57.5 kWh, Model S ≈ 100 kWh (Plaid 95), Model X ≈ 100 kWh (Plaid 95).
degradation_rate (%/yr) = (100 − SoH) / vehicle_age_years
Compare against comparable Teslas
Your SoH is benchmarked against the rolling mean of the latest health report from every Tesla in our database that matches your model, year, and 20,000-km mileage band. No external benchmark, no hardcoded number — if 18 other 2022 Model 3s with 60–80k km are in the fleet, we average those 18. When the same-segment cell has fewer than 5 cars we widen scope to same model + year, then same model, and label the comparison accordingly. The segment average is recomputed every time a new passport is generated.
fleet_avg = mean(latest_report.soh_pct for peers in same model + year + 20k-km mileage band)
When even the broadest cohort (model only) has fewer than 5 comparable cars, the certificate omits the fleet comparison entirely rather than show a fabricated number.
Sign & publish the passport
Each passport is written to our database with a unique public_slug and a tamper-evident URL at /passport/{slug}. Buyers can verify authenticity at any time via the public verify endpoint — /api/public/verify/{slug} — which returns the issuance timestamp and the original SoH reading.
Where every number on your report comes from
Every figure on the dashboard and passport is computed from real data only. SoH is the SOC-weighted median of up to 180 days of Tesla Fleet API snapshots (or your uploaded BMS CSV, cross-checked at issue time against a fresh Fleet API range reading within ±7 points for NMC / ±12 points for LFP). Cycle count comes from your actual logged charging sessions. If no sessions exist yet, we use an estimate from odometer ÷ WLTP range for this model (shown with a ~ prefix). Fleet average is the mean of the latest passport from every Tesla currently connected to VoltValue, recomputed when a new passport is issued. If a value can't be computed (no telemetry yet, no other cars in the fleet), we show '—' rather than a fabricated number.
Three terms worth knowing
We use these phrases throughout the dashboard and passport. Terms marked with an asterisk (*) earlier on this page are defined here.
- WLTP-rated range
- WLTP (Worldwide Harmonised Light Vehicle Test Procedure) is the global standard used to test electric vehicle driving range. It covers a more diverse set of driving conditions than EPA and is the standard Tesla uses for advertising in Thailand and Europe. We switched from EPA to WLTP because Tesla sells in Thailand with WLTP specifications, and Asian driving conditions are closer to the WLTP standard than EPA, which is tested in U.S. climate conditions.
- Ranking (against the fleet)
- Instead of saying 'your SoH is 92.3%' (a number nobody can verify perfectly), we line your car up next to other Teslas of the same model, year, and similar mileage and tell you where you stand — e.g. 'top 15% of 2021 Model 3s with 60–80k km.' The relative position is far more reliable than the absolute number, because any measurement error cancels out when every car is measured the same way.
- VoltValue fleet
- The full set of Teslas connected to VoltValue. We use this group as the benchmark when ranking your car. The fleet average is the mean SoH of the latest passport from each connected Tesla — recomputed every time a new passport is issued, never hardcoded. If you're the first connected Tesla, the fleet average simply won't appear yet — same idea as a third-party vehicle history database: the more cars in the database, the stronger the signal.
An honest answer about accuracy
We don't claim to measure your battery cells directly — nobody outside Tesla can. Here's what we actually do, and why it still matters more than what your car's screen says.
How we keep BMS uploads honest
Verified passports use BMS data the owner uploads from Scan My Tesla, TeslaFi, or TeslaMate. CSV files can technically be edited, so we run three independent layers of defense before a Verified badge is ever issued.
- 1Sanity bounds at upload timeWe reject any nominal_full_pack value above 102% of the factory new-pack rating, or below 50% of it. A common tampering attempt — bumping 72.5 kWh to 78 kWh on a 78.5 kWh pack — is caught instantly because the gain is not physically possible.
- 2Cross-check against a fresh Tesla Fleet API range reading at issue timeWhen the passport is generated, we fetch one fresh range-based SoH directly from Tesla purely for cross-check and compare it to the BMS SoH. If the two disagree by more than ±7 percentage points (NMC) or ±12 percentage points (LFP), we refuse to issue the certificate. Faking the BMS file alone is not enough — the car would actually have to drive farther on a charge.
- 3Transparent provenance on the certificateVerified passports explicitly say 'Verified · BMS + Fleet API cross-check' and the methodology line states the BMS data is user-submitted. Buyers see exactly what was measured and how it was confirmed — there is no hidden 'trust us' layer.
