The third-party tools use the Tesla API data which, yes, is the very same data you see in the app (and thus in the car as well to some extent). There are higher inaccuracies at lower states of charge - you cannot assume the "absolute error" for range at a lower SoC is the same at higher SoC.
Let's take my car's data,
right now, from the API. In-app it's displaying 262km of range, which is about 162.8mi, thus the 162.85 below.
'battery_level': 55,
'battery_range': 162.85,
'est_battery_range': 236.2,
'ideal_battery_range': 162.85,
'usable_battery_level': 55,
There are a few very important things to note here:
- Any representation of percentage is rounded. This is the primary source of error. At 20%, this could be either 19.5% or 20.49%. Since you divide by this to estimate range at max, this introduces huge variance at lower percentages (note how at 1%, it ranges from 0.5% to 1.49% - that's a 50% swing, showing where this increased variance comes from).
- I have no idea what "est_battery_range" is. Assuming it's miles that's ~380km, far too low for representing the 100% state and far too high for its current state. Assuming it's somehow in km, it doesn't jive with anything else.
- The numbers the apps use are the temperature-varying ones. For tracking actual battery health, this is unfair. Lower capacity is reported in cold, though this is not an actual indicator of degraded battery health.
So let's do the math these services would do. Take the current range (162.85) and divide by the percentage (0.55). That comes out to 296.1mi, or
476.5km. Also, in the app, if I drag the slider to 100%, reports that my 100% range is also about 476km, because it's doing the exact same calculation on the exact same data. So far so good, right?
Now recall the issue I mentioned with rounded numbers. I happen to know via the CAN bus that the actual SoC right now is 54.5%. If I use that instead, I get about
481km (and this is pretty much the actual 100% range of my car right now). But had it actually been 55.49% (and still reported "55"), that would falsely indicate
472km. That's already a
9km (5.6mi) spread.
At lower SoC, it gets even worse. Say at 10%, it was reporting 48.10km. But that "10" could be 9.5 or 10.499, which would indicate 100% ranges of 506km and 458km respectively. That is now a ridiculous
48km (~30mi) spread.
In other words, that's 10% of the max range.
100% range estimates are estimates, whether it's a third-party service or the Tesla app,
and their accuracy is worse at lower SoC.
Now, that is not to say the current range number in the car is inaccurate. That one is a pretty dang accurate representation of the current energy in the pack. The error is introduced when using a rounded, low significant digit percentage to
estimate the 100% capacity.
These services have their place and can provide value, but the recommendation to throw away data for <90% SoC (if the service allows this) is absolutely warranted. Anything much below that has too much error for discussion on single-digit percentage degradations.