Why an engine needs transient fueling
Your main fuel table is tuned in steady conditions: the engine held at one RPM and one load while you dial in the mixture. Real driving isn't steady. When the throttle snaps open, air rushes in, but manifold pressure takes a moment to rise to its new level and the airflow is turbulent while it settles. For that brief window the engine runs lean, which you feel as a hesitation or stumble.
The reverse happens on a closing throttle. As the throttle shuts, the engine briefly runs rich while pressure and airflow fall to their new level. There's also a timing issue: an injector may already have fired for a cylinder before the pressure change shows up, so that cylinder's fuel was calculated for conditions that no longer exist.
Transient throttle compensates for all of that. It adds a controlled amount of extra fuel for a controlled time when the throttle opens (enrichment), and can remove fuel for a controlled time when it closes (disenrichment). It can also trim ignition timing while it's active.
Two ways to deliver the extra fuel
| Synchronous | Asynchronous | |
|---|---|---|
| How it works | Makes the normal sequential injection pulses longer | Fires extra injector pulses in between the normal ones |
| Strength | Simple, always available | Gets fuel in immediately, without waiting for the next scheduled injection |
| In NSP | Always on | Needs Enable Async, which adds an Enrich Amount (Async) table |
At low RPM there can be a long gap between one injection event and the next for a given cylinder. Async pulses fill that gap, which is why they help most with sharp throttle stabs from low speed.
Main page settings
| Setting | What it does | Our advice |
|---|---|---|
| Load Type | The sensor used to detect a transient: Throttle Position (default) or Manifold Pressure | Use TPS whenever the engine has one. Use MAP only when there's no TPS, or you have a specific reason |
| Enable Disenrich | Allows fuel to be removed on a closing throttle. Off by default | Turn it on once enrichment is sorted and you see rich spikes on lift-off |
| Enable Overall Corr | Adds the Overall Correction table, a quick way to scale the whole enrich amount | Handy for fine-tuning without editing every cell |
| Load Rate Dead Band | How fast the TPS or MAP must be rising before enrichment triggers | Haltech gives 25 to 50%/sec as typical for throttle. Start there |
| Load acceleration Dead Band | How hard the load must keep accelerating for enrichment to continue once triggered | Lower for longer enrichment, higher for shorter |
| Detect Duration | How long the rise must last before it counts as a transient | Longer rejects false triggers but reacts later |
| Ign Corr Decay Time | How long the transient ignition correction takes to fade back to zero | Keep it short unless you have a reason |
| Enable Async | Allows extra injector pulses. Off by default | Worth trying if you still get a lean spike on sharp stabs |
| Max Async Injector Pulses | The most extra pulses allowed per event | Injectors mounted far from the valve tend to need more |
| Async Holdoff Time | A lockout after one async event before another can start | Haltech suggests 0 to 400 ms as typical |
Getting the dead band right
The Load Rate Dead Band is a trade-off. Too low and small, harmless throttle movements, or even a noisy TPS, fire off enrichment events you didn't want, which shows up as random rich spikes while cruising. Too high and the ECU spots the transient late, so you still get the initial lean spike, and gentle throttle changes get no help at all.
The acceleration dead band works like a decay. Once enrichment starts, it keeps going only while the load is still accelerating hard enough. When the throttle movement slows below this value, enrichment tapers off.
Why async holdoff exists
Picture a driver pumping the throttle. Without a holdoff, each new movement could trigger another async event before the last one finished, stacking extra fuel on top of extra fuel. The holdoff time forces a short gap between events so that can't happen.
How we tune it
- Get the main fuel table right first. Transient tuning on top of a bad VE table is wasted effort.
- Log lambda, TPS and the transient channels together, and do a series of throttle stabs at different RPM and different speeds of movement.
- Look for a lean dip right after the throttle moves. Add enrichment in the enrich tables until it flattens out.
- Check lift-off. If lambda goes rich when the throttle closes, enable disenrich and set it up in the disenrich tables.
- Repeat on a cold engine. A cold engine needs more help, which is what the coolant temperature correction is for.
A wideband reacts a little after the event, so the lean spike in your log appears slightly after the throttle moves. Line up the traces carefully before deciding whether to add or remove fuel.
Troubleshooting
| Symptom | Usually |
|---|---|
| Stumble or bog on a quick stab | Not enough enrichment, dead band too high, or detect duration too long |
| Random rich spikes while cruising | Dead band too low, or a noisy TPS signal |
| Good response to stabs, lazy on gentle throttle | Dead band too high for small movements |
| Pops or rich smell on lift-off | Disenrich not enabled or not tuned |
| Very rich when pumping the throttle | Async holdoff too short, or too many async pulses |
For the sensor side, see transient throttle wiring, and use the overall correction table when you want to move everything together.




