What a fuel map actually is
A fuel map is a lookup table. The ECU runs hundreds of times per second, and on each cycle it needs to answer one question: how much fuel should the injectors deliver right now? It can't compute that from first principles fast enough, so instead the tuner gives it a table of pre-computed answers indexed by two variables. The ECU reads the current value of each variable, finds the cell that matches, and uses whatever number is in that cell.
That's the entire concept. The grid of numbers is just an answer key. Most of the difficulty in reading a fuel map comes from understanding what question that particular table is answering — because different ECUs answer it in different ways.
The two axes — load and RPM
On almost every modern ECU, the fuel map is indexed by engine load on one axis and engine speed(RPM) on the other. RPM is straightforward. Load is where people get confused, because “load” isn't one thing.
Depending on the platform, the load axis might be:
- MAP (manifold absolute pressure, in kPa) — common on speed-density ECUs
- MAF (mass air flow, often expressed as a calculated load percentage) — common on OEM petrol ECUs
- Throttle position — common on older or simpler ECUs, and on some motorcycle ECUs
- Calculated load (a normalised 0–100% or 0–200% figure derived from airflow) — common on modern OEM ECUs
These are not interchangeable. A cell at “100 kPa, 3000 RPM” on a speed-density ECU is not the same operating point as “75% load, 3000 RPM” on a MAF-based ECU. Before you read a single number, confirm what your load axis actually represents. The axis label is your first clue, the ECU's documentation is the second, and the units printed on the axis are the third.
The reason these two variables are used is simple: how much air the engine is ingesting (load) and how fast it's ingesting it (RPM) together determine how much fuel it needs. Everything else — temperature, barometric pressure, transient corrections — is layered on top as a modifier.
What the numbers in the cells represent
This is the part that varies most between platforms, and the part most beginners get wrong. The number in a fuel map cell can mean very different things:
- VE (Volumetric Efficiency). A percentage describing how well the cylinder fills with air at that operating point. The ECU combines VE with measured conditions to compute fuel. Common on aftermarket ECUs and some modern OEM ones. You are describing the engine, not the fuel.
- AFR or Lambda target.The mixture you want at that point — e.g. 14.7:1 in cruise, 11.5:1 at WOT. Often a separate table from the fuelling table, often called the “target” or “commanded AFR” map. You are describing the desired mixture, not how to achieve it.
- Injector pulse width. The time (in milliseconds) the injector is held open. Direct, literal, and platform-specific to the injector size. Less common as the primary fuel table on modern ECUs.
- Mass of fuel. Some ECUs request a mass per cycle (mg/stroke) and let the injector driver work out the pulse width.
- A correction or trim.Some “fuel” tables aren't the primary fuelling map at all — they're multipliers or offsets applied to a base calculation.
Before you touch a cell, you need to know which of these you're looking at. Editing a VE table the way you'd edit an AFR target table is a fast route to a lean engine.
How to identify what kind of fuel map you're looking at
Three checks, in order:
- Read the axis labels and units.If the cell values are in the 60–110 range with no units, you are probably looking at VE (a percentage). Values in the 10–18 range almost certainly mean AFR. Values in the 0.7–1.1 range are Lambda. Values in the 1–20 range with “ms” on them are pulse width.
- Check the table's name in the software. Most tuning software labels tables explicitly: “VE Table”, “Target AFR”, “Primary Fuel”, etc. Don't assume — read it.
- Find the documentation for your ECU or definition file. If you're using a community XDF/A2L/definition, the table description usually says what the units are and how the ECU uses the value. If it doesn't, slow down before editing.
Reading a typical map: cruise, WOT, idle, transients
Once you know what kind of table you're looking at, the shape of the numbers starts to tell a story. Most fuel maps break down into recognisable zones:
- Idle zone. Bottom-left corner — low load, low RPM. Numbers here are typically smaller (low VE, leaner target, short pulse width) and the cells often look noisier than the rest because idle is sensitive and gets tuned cell-by-cell.
- Cruise zone.The diagonal band running from low-load/low-RPM up through mid-load/mid-RPM. This is where the engine spends most of its life. On a target-AFR table you'll see values around 14.7 (stoichiometric) here; on a VE table you'll see a smooth gradient that rises with load.
- WOT (wide-open throttle) zone. Top of the map — high load across the RPM range. Targets here are richer (typically 11.5–13.0 AFR depending on platform, fuel, and how aggressive the tune is). VE values usually peak somewhere in the mid-RPM range and taper at redline.
- Transient regions.The cells between zones. The ECU interpolates between cells when the engine moves through them quickly, so values that jump sharply between neighbours cause rough transitions you can feel from the driver's seat.
A healthy fuel map looks smooth. Values change gradually from cell to cell. Sudden jumps — a 95 next to a 70 next to a 90 — almost always indicate either a tuning mistake or a region that's never been hit by the engine and was left at default.
The fuel map and the AFR target table
On most modern ECUs, fuelling is split across at least two tables: a VE (or airflow) table describing the engine, and a target AFR/Lambda table describing the mixture you want. The ECU uses both, plus measured conditions, to calculate the actual injector pulse width.
This separation matters because the two tables answer different questions:
- The VE table is a model of the engine. If it's wrong, the ECU's fuelling math is wrong and the closed-loop trims have to fight it.
- The target AFR table is a request. It says “at this load and RPM, aim for this mixture”. The ECU uses the VE table to figure out how to deliver that.
When commanded AFR doesn't match measured AFR, the fix is almost always in the VE table, not the target table. Changing the target asks for a different mixture; correcting the VE table fixes the model so the ECU can actually hit any target you set. Some ECUs roll both into a single table, in which case this distinction doesn't apply — check your platform.
Interpolation and blending — when cells affect each other
The engine almost never sits exactly on a cell's coordinates. At 2,847 RPM and 84 kPa, the ECU is between four cells, and it interpolates — typically a bilinear weighted average of the surrounding values. This means:
- Editing one cell affects the engine's behaviour in the surrounding region, not just at that exact point.
- A spike or dip in a single cell drags the interpolated values of all four cells around it.
- Smoothness across cells matters as much as the value of any individual cell.
Some ECUs also use a separate “high-octane” or compensation table that's blended with the primary table based on a learned trim. If your numbers don't behave the way you expect, check whether a second table is being mixed in before you start editing.
Common mistakes when reading or editing a fuel map
- Assuming the load axis on one ECU means the same thing as on another
- Editing cells the engine never visits, then wondering why nothing changed
- Editing a single cell without smoothing the neighbours, leaving a step in the table
- Treating a VE table as if it were a target AFR table (or vice versa)
- Ignoring the AFR target table and trying to chase mixture by editing VE
- Reading numbers without checking units — a value of 95 means very different things if it's a percentage versus a kilopascal
- Changing values without a datalog to verify the result
The honest summary
Reading a fuel map is mostly about three things: knowing what the axes mean, knowing what the cell values represent, and recognising the shape of the zones. None of that is hard once you've seen a few maps. What is hard — and what no article can do for you — is building the judgement to decide what a specific number should be on a specific engine. That comes from datalogs, time, and not skipping steps.