Tesla Methodology · v2.0

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. This page covers Tesla only; BYD and Volvo have separate methodologies because their BMS exposes different signals.

How we certify your battery

The short version — what VoltValue actually does, in four steps.

We connect directly to Tesla
No screenshots, no manual entry. We use Tesla's official Fleet API with read-only access — the same data Tesla itself uses. Your credentials never touch our servers.
We collect multiple readings over time
A single battery reading can drift ±2% with temperature and charge level. We collect readings over up to 180 days and use the median — so one bad day doesn't skew your result.
We cross-check two independent methods
We compare the range-based estimate from Tesla against your BMS data (if provided). If they disagree beyond our tolerance, we flag it rather than guess.
We benchmark against similar cars
Your SoH only means something in context. We compare against real vehicles with the same model, year, and mileage range — not a global average.
Technical specification — for engineers and sophisticated buyers
In plain language

Before the formulas, here's the everyday version of what VoltValue does behind the scenes — no engineering required.

  1. 1
    You connect your Tesla once
    Through Tesla's official login page (OAuth). We get a read-only key. We can never unlock, honk, drive, or change anything in your car.
  2. 2
    Once a day, automatically
    Once 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. You'll also get a fresh reading any time you tap Refresh or generate a new Passport.
  3. 3
    Each daily reading is saved to your account
    On day one we pull up to 180 days of past charging history straight from Tesla, so most cars already have a rich baseline the moment you connect. From then on each daily snapshot grows the record — typically you'll see real behavioural patterns emerge within the first few weeks: how often you use Superchargers, how often the battery sits in the healthy 20–80% zone, etc.
  4. 4
    When you're ready to sell, we issue a passport
    We pull a fresh live snapshot, run the formulas below, and produce a single-page certificate with a public verification link buyers can scan.
Your data stays in your account. We never sell it, never share it, and the read-only access means we physically cannot control your car.
STEP 01

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 — battery_level (%), ideal_battery_range (mi), charge_limit_soc
  • vehicle_state — odometer (mi)
  • vehicle_config — car_type, trim_badging, exterior_color
We never store your Tesla password. We use OAuth 2.0 with the vehicle_device_data scope only.
STEP 02

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 220 mi at 65% projects to (220 / 65) × 100 = 338.5 mi at full charge.

We require battery_level ≥ 20% to compute SoH. Below that, the BMS estimate is noisy and we refuse rather than publish a bad number.
STEP 03

Compare to EPA-rated range

We divide the projected full-charge range by the original EPA-rated range for your exact model, year, and trim:

SoH (%) = (range_at_100% / EPA_rated_range) × 100

On your dashboard, we display the SOC-weighted median of up to 180 days of snapshots — not a single live reading. Snapshots taken at SOC ≥ 80% are weighted 2×, SOC 50–79% at 1×, SOC 20–49% at 0.5×. The median resists outlier days caused by temperature or unusual driving. The live reading is shown separately so you can see both. Snapshots taken within 3 days of a Tesla OTA software update are excluded to avoid artificially shifting the trend.

EPA-rated values come from Tesla's filings (e.g. Model 3 LR 2021+ = 358 mi, Model Y LR 2024+ = 310 mi, Model S Plaid = 396 mi). Values below 75% are flagged as LOW rather than discarded — high-mileage cars can legitimately reach this range. Values outside 70–100% are flagged as sensor anomalies and excluded from the median — never clamped or adjusted.

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-mile 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.

STEP 04

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, cycles is shown as '—' — never a guess from odometer.

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
STEP 05

Compare against comparable Teslas

Your SoH is benchmarked against the live 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.

STEP 06

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.

Transparency note

Where every number on your report comes from

Every figure on the dashboard and passport is computed from real data only. SoH comes from the live Tesla Fleet API snapshot (or your uploaded BMS CSV, cross-checked against the live Fleet API within ±7 points for NMC / ±12 points for LFP). Cycle count comes from your actual logged charging sessions — never approximated from mileage. Fleet average comes from the live mean of every Tesla currently connected to VoltValue. If a value can't be computed (no telemetry yet, no other cars in the fleet), we show '—' rather than a fabricated number.

Glossary

Three terms worth knowing

We use these phrases throughout the dashboard and passport. Here's what they actually mean.

EPA-rated range
The Environmental Protection Agency (EPA) is the U.S. government body that tests and certifies how far an electric vehicle can travel on a full charge under standardized conditions. Unlike European WLTP tests (which tend to be optimistic), EPA ratings use a stricter five-cycle test that includes city, highway, high-speed, cold-weather, and air-conditioning scenarios. We use EPA as the baseline because Tesla's own range claims are based on EPA filings, making it the apples-to-apples standard when comparing real-world degradation.
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 live 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.
Should you trust these numbers?

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.

Aren't these just estimates?
Yes. Tesla doesn't expose a true SoH value through any public API — not to us, not to independent shops, not to Tesla service centers (they use proxies too). Lithium-ion SoH naturally drifts ±1% with temperature and state-of-charge. We're transparent about that, instead of pretending otherwise.
Then what's the point?
The dashboard reading on a Tesla is easy to game — charge to 100% before listing the car and the rated range looks great. We pull up to 180 days of past behavior straight from Tesla: home vs Supercharger ratio, time spent above 90% SoC, idle-at-full-charge events, cycle count. That history can't be staged the night before a sale.
Why is comparison better than an absolute number?
Buyers don't actually need to know if the pack is at 92.3% or 92.7% — they need to know whether this car was treated better than average. We rank you against the VoltValue fleet so the question becomes 'is this one of the well-cared-for cars?' instead of 'is this estimate correct to the decimal?'.
What if you're wrong?
Every passport is signed, timestamped, and has a public verification URL anyone can scan. The full methodology is on this page — same inputs always produce the same outputs. If a buyer thinks the number is off, they can check the math against Tesla's own readings within a day of taking delivery. That accountability is exactly why we don't overpromise.
Bottom line: we're not a battery tester — we're a statistical comparison and audit trail. Treat the score the same way you'd treat a third-party vehicle history report: not the whole truth, but a strong signal you can't fake.
Verified-tier integrity

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.

  1. 1
    Sanity bounds at upload time
    We 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.
  2. 2
    Live cross-check against Tesla Fleet API
    When the passport is generated, we fetch a fresh range-based SoH directly from Tesla 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.
  3. 3
    Transparent provenance on the certificate
    Verified 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.
Net effect: a tampered file would have to satisfy the new-pack ceiling, match a live Fleet API range reading the seller does not control, and survive public verification. We have not found a realistic way to fake all three at once.