Why idle is touchy
At idle the injectors are open for a very short time, usually around 1.5 to 2.5 ms. Because the pulse is so short, a tiny change in injection time is a big change in mixture. If your idle pulse is well below that range, often a sign of very large injectors, accurate idle and cruise mixtures get harder to hold, and good injector dead time data becomes critical.
If you're using the VE tuning method, a typical stock engine sits somewhere around 40% to 50% VE at idle. Modified engines can be well outside that, so use it as a sanity check, not a target.
What mixture to aim for
- Modern engines with factory cams usually idle happily at stoichiometric, 14.7:1 AFR on gasoline (lambda 1.0).
- Older engines and engines with big cams often need a richer idle to run smoothly. Let the engine tell you: richen it until it's steady, not until it reaches a number.
Fixing a hunting idle
If rpm is surging up and down, the engine is moving through several cells of the fuel table as it hunts, and the mixture isn't consistent across them. Watch the table cursor in ESP. It will be bouncing between a small group of rpm and load cells. Log lambda alongside it and look for the cells where it goes lean, then fill those in so the mixture is flat across the whole area the cursor is moving through. A smooth, consistent patch of the table is what lets the idle settle.
When to use a zero throttle map
If MAP is jumping around so much that the load reading is unusable, a Zero Throttle Map can help by giving the ECU a separate fuel table for closed throttle. But be careful about cause and effect: an unstable mixture makes MAP fluctuate too. Fix the mixture first, then decide whether MAP is still too unsteady. Engines with aggressive cams are the ones that usually genuinely need it.
The interpolation trap
The ECU doesn't just read the nearest cell. It blends between the cells around the current rpm and load. So if your table has columns at 500 and 1000 rpm and the engine idles at 900 rpm, the fuel value comes 80% from the 1000 rpm column and 20% from the 500 rpm column. Change only the 1000 rpm cell and you'll get less effect than you expect.
The same blending happens across load. In practice that means you'll often need to adjust a small block of cells, both rpm columns and a couple of load rows, to bring idle close to target, then fine-tune individual cells from there. If your idle rpm sits between widely spaced breakpoints, consider adding a breakpoint at your idle speed so it lands on a single column.
Warm the engine fully, turn off any closed loop idle or lambda correction while you set the base fueling, and make small changes. Once the fuel is right, move on to idle ignition timing and then idle control.
For the wider process, see our articles on tuning base tables and the Quicktune feature, which can speed up filling in cells around idle.




