P0031: Upstream Oxygen Sensor Heater Circuit Low (Bank 1 Sensor 1)
P0031 means the engine control module (the car's main computer) detected too little voltage or current in the heater circuit of the upstream oxygen sensor on bank 1. The car usually keeps running, but the check engine light stays on, cold-start emissions rise, and the car can fail an emissions test.
You can drive, but get it checked soon
The code does not normally stop the car from running and limp mode is not expected. However, the engine runs with late mixture control after cold starts, which raises emissions, and the problem will not pass an emissions test. Have it fixed soon, and have it checked sooner if other heater codes appear.
What it means
The upstream oxygen sensor sits before the catalytic converter on bank 1 (the side of the engine that contains cylinder 1). It only gives a usable signal once its ceramic element is hot, so a small heating element inside the sensor warms it quickly after a cold start. The engine control module switches this heater on and compares the commanded state with the voltage or current it measures. With P0031, the module sees too little voltage or current while the heater is on. That can mean a burnt-out heating element, a missing power supply, or a broken control wire. The sensor then warms up late, the computer starts adjusting the fuel mixture late, and emissions right after a cold start go up. The data does not list limp mode as a typical result of this code.
Likely causes
- Heating element burnt out or high resistanceVery likely
A worn or burnt heater lets too little current through, which is exactly what the module measures for this code.
- Supply wire interrupted or fuse blownVery likely
Without battery voltage reaching the heater, the module sees low voltage or current when it switches the heater on.
- Control wire to the engine control module interruptedPossible
A broken control wire stops the module from switching the heater properly, so the measured current stays too low.
- Corroded connector with high contact resistancePossible
Corrosion in the plug restricts current flow to the heater even if the sensor and wiring are fine.
- Output driver in the engine control module faultyLess likely
The module's internal switch for the heater can fail, though this is much less common than sensor or wiring faults.
What you may notice
- Check engine light on
- Closed-loop control (the computer adjusting fuel based on the sensor) starts late after a cold start
- Further heater codes if a shared fuse has blown
- Emissions test or readiness check failed
What to check, cheapest first
- 1Read the code and any related codes (such as P0030, P0032, P0037, P0051, P0053 or P0135) with a scan tool. Several heater codes at once point toward a shared fuse or supply problem. · you can do it
- 2Find the oxygen sensor heater fuse or relay in the fuse box and check that it is intact. · you can do it
- 3Inspect the sensor's wiring and connector for damage, melted insulation, loose pins or corrosion. · you can do it
- 4Measure the heater element resistance at the sensor and compare it with the specification for your vehicle. · mechanic
- 5Check for battery voltage at the supply pin and test the control wire back to the engine control module for breaks. · mechanic
- 6If the sensor, wiring and supply all test fine, test the module's heater output driver. · mechanic
Related codes
Frequently asked questions
Can I drive with a P0031 code?+
Usually yes for a short time, since limp mode is not expected. Cold-start emissions are higher and the check engine light stays on, so get it repaired soon.
Can a loose gas cap cause P0031?+
No. A gas cap problem triggers evaporative system codes. P0031 points to the oxygen sensor heater circuit: the element, fuse, wiring, connector or control module.
Will P0031 pass an emissions test?+
Probably not. The check engine light is on and the code is emissions relevant. After the repair, the car needs to complete a drive cycle so the monitors can finish before a retest.
Can I fix P0031 myself?+
Often yes. The repair is rated medium difficulty and takes roughly 0.5 to 1.5 hours. Start with the fuse, wiring and connector before replacing the sensor.
Written with the help of AI from the public OBDex definition (CC0). Each make may use the code differently. Updated: 2026-11-10