What OBD-II is, and what it is not
Every car sold in the US since 1996 and in the EU since 2001 has an OBD-II port (a standardized 16-pin connector, usually under the dash on the driver's side). The port exposes the engine control unit's diagnostic data: standardized PIDs (parameter IDs) plus manufacturer-specific ones. A consumer adapter plugs into the port, pairs with a phone over Bluetooth or WiFi, and lets an app read those PIDs in real time.
The key limitation up front: OBD-II fuel-rate PIDs are an estimate, not a measurement. The engine computer calculates fuel rate from injector pulse width and known injector flow, not from a flow meter. The estimate is usually within a few percent of the true value under steady-state conditions, but it can be off by 10 to 15 percent during transient operation (rapid acceleration, cold start, idle). Treat OBD-II fuel rate as a useful diagnostic, not as a calibrated measurement.
The PIDs that matter for fuel tracking
The OBD-II standard (SAE J1979) defines a few hundred PIDs; for fuel tracking, the relevant ones are:
Fuel-related PIDs
| PID | What it reports | Useful for |
|---|---|---|
| 0x5E | Engine fuel rate (L/h) | Instantaneous fuel use |
| 0x10 | MAF sensor (g/s) | Air intake, fuel-rate sanity check |
| 0x0D | Vehicle speed (km/h) | Distance integration |
| 0x0C | Engine RPM | Load context |
| 0x04 | Calculated engine load (%) | Load context |
| 0x05 | Coolant temperature (°C) | Cold-start detection |
| 0x2F | Fuel tank level (%) | Fill-event detection (where supported) |
The instantaneous MPG calculation is the obvious one: MPG = vehicle speed ÷ fuel rate, with the unit conversions applied. A simpler version using MAF and a stoichiometric air-fuel ratio is also possible (the air-fuel ratio is a fixed constant for gasoline, so MAF tells you the fuel rate implicitly) and is sometimes more accurate than the direct fuel-rate PID.
Instantaneous MPG from PIDs 0x0D and 0x5E:
MPG = (speed_kmh × 3600) ÷ (fuel_rate_Lh × 3785.41 ÷ 1.609344)
or equivalently:
MPG = (speed_mph) ÷ (fuel_rate_gph)
What OBD-II is good for, and what it is not
OBD-II is a strong fit for some questions and a poor fit for others.
Good fit:
- Instantaneous fuel use while driving. The "live MPG" display on Torque Pro or similar apps, useful for tuning driving habits in real time.
- Trip-level MPG with continuous sampling. Better resolution than a single fill-up number; can show city vs. highway MPG for the same trip without manual logging.
- Diagnostic trouble codes (DTCs). A check-engine light becomes a specific code; P0171 (system too lean), P0172 (system too rich), and P0420 (catalyst efficiency below threshold) all show up in the data and explain MPG changes the manual method can't see.
- Long-term trending. A year of OBD-II logs at 1 Hz is 30 million data points; the right analysis on that can detect slow degradation (an aging O2 sensor, a dragging brake) that a fill-up log would only catch when it got bad enough to be obvious.
Poor fit:
- Warranty or regulatory numbers. Manufacturers and regulators will not accept a consumer OBD-II reading; controlled-test data is what they want. The OBD-II data is useful for spotting that something is wrong, not for the official number.
- Comparing to the EPA sticker. The EPA sticker is the EPA combined rating; your OBD-II data is whatever your driving produces. They are not the same number, and there is no useful "correction" between them.
- Replacing the fill-up method entirely. The fill-up method, done carefully, is more accurate than the OBD-II estimate because the fuel-pump reading is a true volume measurement and the odometer is a true distance measurement. OBD-II is a complement, not a replacement.
Hardware: what to buy
The OBD-II adapter market is mostly cheap Bluetooth or WiFi dongles based on the ELM327 chip (or a clone). As of 2026, the same caveats from prior years apply: many "ELM327" devices are clones with reduced firmware that does not support all the standard PIDs, or with buggy Bluetooth stacks that drop connections at highway speed.
The reliable options:
- BAFX and Vgate iCar Pro for Bluetooth. Both are well-reviewed, both support the full J1979 PID set, both pair reliably with Torque Pro and similar apps. Around $15 to $25.
- OBDLink MX+ for higher-end use. Genuine ELM327 hardware, faster protocol, better Bluetooth stack, dedicated support. Around $50. Worth it if you want reliable logging at highway speed or for extended periods.
- Generic ELM327 clones for casual use. Around $5 to $10. Will work for instantaneous readings but may drop PIDs or connections unpredictably. Avoid for any kind of long-term data collection.
The apps:
- Torque Pro (Android, $5 one-time) is the most flexible for custom PIDs, custom displays, and data logging. The right tool if you want to do your own analysis.
- OBD Fusion (iOS and Android, $10) is the polished iOS option.
- Car Scanner (iOS and Android, free with paid tier) is a reasonable free option for basic reads.
Data quality: the part nobody tells you
Three things to know before trusting the data:
- The fuel-rate PID is calculated, not measured. The engine computer computes fuel rate from injector pulse width and the calibrated injector flow. Under steady-state conditions, this is accurate to a few percent. Under transient conditions (rapid acceleration, cold start, regen events, idle), it can be off by 10 to 15 percent. Smooth the data with a moving average (a few seconds) and the estimate is useful; trust the raw instantaneous value and you will see a lot of phantom MPG swings.
- Some PIDs are not implemented on all cars. Fuel tank level input (PID 0x2F), in particular, is optional in the OBD-II standard and many cars do not report it. Expect to do without it.
- Cold-engine fuel enrichment is a real signal, not noise. The first few minutes after start show fuel rate 30 to 50 percent higher than steady-state. That is the engine running rich while the catalyst warms up. Trip-level averages that include cold-start minutes will read lower than the same trip starting with a warm engine, even over the same route. The signal is real; the workaround is to either exclude the first 5 to 10 minutes from trip averages or report cold-start fuel use separately.
Combining OBD-II with the fill-up method
The two methods complement each other. The fill-up method gives you a calibrated, slow-moving average; OBD-II gives you the per-second resolution that the fill-up method cannot. For most users, the right combination is:
- Fill-up method for the "what is my MPG" question. A 3 to 5 fill-up average against the same station, same pump, same procedure, is the most accurate personal-use number. It is also what you can compare to the EPA sticker.
- OBD-II for the "why did my MPG change" question. When the fill-up average moves, OBD-II logs can show whether the change is real (a fuel-trim shift, a sensor failure, a temperature effect) or whether the change is just noise over a few fill-ups.
- OBD-II for the "what is my MPG on this specific trip" question. When you want to know highway vs. city MPG for a specific drive, OBD-II trip logs are the right tool; the fill-up method can not tell you.
For the fill-up method in full, the calculation guide walks through the protocol. For the math behind instantaneous MPG, the formula page has the formulas. For the long-term analysis (control charts, real change vs. noise), the SPC guide is the next read.
High-Quality Adapters
- ELM327 v2.1+: Minimum standard for reliable communication
- Bluetooth 4.0/5.0: Low-latency wireless data transmission
- Multi-protocol support: ISO9141, KWP2000, CAN bus compatibility
- High refresh rate: 10Hz+ for real-time analysis capability
Software Integration Options
- Torque Pro: Complete OBD-II monitoring with data logging
- OBD Fusion: Professional analysis with export capabilities
- Custom applications: API integration for specialized analysis
- Cloud platforms: Fleet management and data aggregation
Data Acquisition and Processing
Real-Time Fuel Efficiency Calculation
Instantaneous MPG Formula:
MPG = (VSS × 3600) / (Fuel_Rate × 3785.41) Where: - VSS = Vehicle Speed Sensor (km/h) - Fuel_Rate = Engine fuel rate (L/hour) - 3600 = seconds/hour conversion - 3785.41 = L/gallon conversion
Moving Average Smoothing:
MPG_smooth(t) = α × MPG(t) + (1-α) × MPG_smooth(t-1) Where α = 0.1-0.3 (smoothing factor)
Data Validation and Quality Control
OBD-II Data Validation Protocol
- Range checking: Verify parameters within physically possible limits
- Consistency analysis: Cross-validate related parameters (speed, RPM, load)
- Temporal filtering: Remove noise and communication errors
- Calibration verification: Periodic comparison with manual calculations
What OBD-II is good for, and what it is not
OBD-II is a strong fit for some questions and a poor fit for others.
Good fit:
- Instantaneous fuel use while driving. The "live MPG" display on Torque Pro or similar apps, useful for tuning driving habits in real time.
- Trip-level MPG with continuous sampling. Better resolution than a single fill-up number; can show city vs. highway MPG for the same trip without manual logging.
- Diagnostic trouble codes (DTCs). A check-engine light becomes a specific code; P0171 (system too lean), P0172 (system too rich), and P0420 (catalyst efficiency below threshold) all show up in the data and explain MPG changes the manual method can't see.
- Long-term trending. A year of OBD-II logs at 1 Hz is 30 million data points; the right analysis on that can detect slow degradation (an aging O2 sensor, a dragging brake) that a fill-up log would only catch when it got bad enough to be obvious.
Poor fit:
- Warranty or regulatory numbers. Manufacturers and regulators will not accept a consumer OBD-II reading; controlled-test data is what they want. The OBD-II data is useful for spotting that something is wrong, not for the official number.
- Comparing to the EPA sticker. The EPA sticker is the EPA combined rating; your OBD-II data is whatever your driving produces. They are not the same number, and there is no useful "correction" between them.
- Replacing the fill-up method entirely. The fill-up method, done carefully, is more accurate than the OBD-II estimate because the fuel-pump reading is a true volume measurement and the odometer is a true distance measurement. OBD-II is a complement, not a replacement.
Hardware: what to buy
The OBD-II adapter market is mostly cheap Bluetooth or WiFi dongles based on the ELM327 chip (or a clone). As of 2026, the same caveats from prior years apply: many "ELM327" devices are clones with reduced firmware that does not support all the standard PIDs, or with buggy Bluetooth stacks that drop connections at highway speed.
The reliable options:
- BAFX and Vgate iCar Pro for Bluetooth. Both are well-reviewed, both support the full J1979 PID set, both pair reliably with Torque Pro and similar apps. Around $15 to $25.
- OBDLink MX+ for higher-end use. Genuine ELM327 hardware, faster protocol, better Bluetooth stack, dedicated support. Around $50. Worth it if you want reliable logging at highway speed or for extended periods.
- Generic ELM327 clones for casual use. Around $5 to $10. Will work for instantaneous readings but may drop PIDs or connections unpredictably. Avoid for any kind of long-term data collection.
The apps:
- Torque Pro (Android, $5 one-time) is the most flexible for custom PIDs, custom displays, and data logging. The right tool if you want to do your own analysis.
- OBD Fusion (iOS and Android, $10) is the polished iOS option.
- Car Scanner (iOS and Android, free with paid tier) is a reasonable free option for basic reads.
Data quality: the part nobody tells you
Three things to know before trusting the data:
- The fuel-rate PID is calculated, not measured. The engine computer computes fuel rate from injector pulse width and the calibrated injector flow. Under steady-state conditions, this is accurate to a few percent. Under transient conditions (rapid acceleration, cold start, regen events, idle), it can be off by 10 to 15 percent. Smooth the data with a moving average (a few seconds) and the estimate is useful; trust the raw instantaneous value and you will see a lot of phantom MPG swings.
- Some PIDs are not implemented on all cars. Fuel tank level input (PID 0x2F), in particular, is optional in the OBD-II standard and many cars do not report it. Expect to do without it.
- Cold-engine fuel enrichment is a real signal, not noise. The first few minutes after start show fuel rate 30 to 50 percent higher than steady-state. That is the engine running rich while the catalyst warms up. Trip-level averages that include cold-start minutes will read lower than the same trip starting with a warm engine, even over the same route. The signal is real; the workaround is to either exclude the first 5 to 10 minutes from trip averages or report cold-start fuel use separately.
Combining OBD-II with the fill-up method
The two methods complement each other. The fill-up method gives you a calibrated, slow-moving average; OBD-II gives you the per-second resolution that the fill-up method cannot. For most users, the right combination is:
- Fill-up method for the "what is my MPG" question. A 3 to 5 fill-up average against the same station, same pump, same procedure, is the most accurate personal-use number. It is also what you can compare to the EPA sticker.
- OBD-II for the "why did my MPG change" question. When the fill-up average moves, OBD-II logs can show whether the change is real (a fuel-trim shift, a sensor failure, a temperature effect) or whether the change is just noise over a few fill-ups.
- OBD-II for the "what is my MPG on this specific trip" question. When you want to know highway vs. city MPG for a specific drive, OBD-II trip logs are the right tool; the fill-up method can not tell you.
For the fill-up method in full, the calculation guide walks through the protocol. For the math behind instantaneous MPG, the formula page has the formulas. For the long-term analysis (control charts, real change vs. noise), the SPC guide is the next read.