The KLX300 loses power above 8000 RPM. Everyone knows this. But it only happens at full throttle — not at 80%, not at 90%. Only when you pin it.
We decoded the ignition timing map directly from the Kawasaki ECU binary. Here's what the factory programmed, why it happens, and what the data shows.
The Data
Ross Olsen, an engineer in the PlanetKLX2 community, dumped the entire calibration region from the KLX300 Keihin ECU — ignition timing tables, fuel maps, throttle maps, the full calibration. The raw hex, decoded tables, and analysis are available below.
This is not a dyno estimate. This is what the factory programmed.
The ignition timing map is a 2D table: RPM (rows) vs throttle position (columns). Each cell contains the ignition advance in degrees before top dead center (BTDC). More advance = earlier spark = more power. The ECU looks up the RPM and throttle position, then fires the spark at the corresponding timing.
The Ignition Map

The full KLX300 ignition timing map, pulled from the ECU. Vertical axis: RPM (1000–11,000). Horizontal axis: throttle position (0–95%). Color: green = advanced timing, red = retarded.
Low RPM (1000–5000): Normal. 12–24° advance. Nothing unusual.
High RPM, low throttle (7500–11,000 at under 44% throttle): Fully advanced. 31–32°. The engine makes maximum power.
High RPM, high throttle (above 7500 RPM, above ~80% throttle): The timing drops. This is the retard zone.
The key cells:
| RPM | 80% Throttle | 100% Throttle | Difference |
|---|---|---|---|
| 7500 | 32.00° | 29.50° | 2.50° |
| 8000 | 31.50° | 29.50° | 2.00° |
| 8500 | 30.75° | 24.75° | 6.00° |
| 9000 | 31.25° | 25.00° | 6.25° |
| 10000 | 32.25° | 26.00° | 6.25° |
At 8500 RPM, the ECU pulls 6° of ignition timing between 80% and 100% throttle. The engine can handle full advance at 80% throttle all the way to redline — 31–32° with no problem. It's only when you go to full throttle that the ECU kills it.
This is not a gradual slope. It's a deliberate step function in the calibration.
KLX250 vs KLX300

We compared the KLX250 map to the KLX300 map at full throttle. The KLX250 maintains 5° more advance above 8500 RPM.
| RPM | KLX250 | KLX300 | Difference |
|---|---|---|---|
| 8500 | 29.50° | 24.75° | 4.75° |
| 9000 | 29.75° | 25.00° | 4.75° |
| 10000 | 29.25° | 26.00° | 3.25° |
The KLX300 is tuned more aggressively for emissions compliance (Euro 4/Euro 5). The regulatory test cycle runs at full load — so Kawasaki retarded timing at exactly that operating point. The KLX250 map doesn't have this restriction.
At 80% throttle, the situation reverses — the KLX300 actually runs slightly more advance than the KLX250.

Power Impact

Power and ignition timing track together at full throttle. The dyno data (KLX300 stock, third-party test) shows:
- 8000 RPM: 23 HP, 29.5° timing — peak power
- 8500 RPM: 22 HP, 24.75° timing — 1 HP lost, 5° pulled
- 9000 RPM: 21 HP, 25.0° timing — 2 HP lost from peak
Two horsepower gone from ignition retard alone. Your exhaust, intake, big bore kit — none of it matters if the ECU is pulling 6° of timing at full throttle.
80% vs 100% Throttle

The chart that matters. Green line is 80% throttle — fully advanced, all the way to redline. Red line is 100% throttle — Kawasaki kills it above 8500.
The engine has no problem making power at high RPM. The ECU is the restriction, and it only activates at full throttle.
The Fix: TPS Clamping
Since the ECU only retards timing at 100% throttle, and timing is fully advanced at ~80% throttle across all RPMs, there's a straightforward approach: prevent the ECU from ever seeing 100% throttle above a certain RPM.

A controller sits between the throttle position sensor and the ECU:
- Below 8000 RPM: Passes the real TPS signal through, unchanged
- Above 8000 RPM: Caps the TPS signal at ~80%. The ECU uses the fully advanced timing map
The tradeoff: below ~7000 RPM, capping at 80% loses less than 1° of timing. Above 8500 RPM, it recovers 6°. The net effect across the riding range is overwhelmingly positive.
| RPM | Stock (100% TPS) | With Controller (80% TPS) | Recovered |
|---|---|---|---|
| 7500 | 29.50° | 32.00° | +2.50° |
| 8000 | 29.50° | 31.50° | +2.00° |
| 8500 | 24.75° | 30.75° | +6.00° |
| 9000 | 25.00° | 31.25° | +6.25° |
| 10000 | 26.00° | 32.25° | +6.25° |
This approach is reversible — unplug the controller, stock behavior returns.
Raw Data
All ignition timing data decoded from the ECU binary. Contains the full 2D ignition timing maps for both KLX250 and KLX300 (CSV format).
Credits
90% of the ECU reading and decoding work was done by Ross Olsen from the PlanetKLX2 community. He dumped the calibration region, decoded the tables, and shared everything openly — raw hex, parsed maps, and analysis.
The dyno data is from an independent third-party test (Dirt Rider magazine).