Reading Honda OBD1 Codes Without Losing Your Mind

Honda didn't switch to standardized OBD2 until 1996, so anything from about 1990 to 1995 uses a proprietary self-diagnostic system that requires a paper towel, a paperclip, and roughly ten minutes of patience. The entire thing operates through the Check Engine light blinking out two-digit codes when you bridge two pins on the service check connector. It is not complicated, but it is easy to mess up if you assume every Honda does it the same way. On most pre-1993 Honda models with the PGM-Fi or early EFI system, the diagnostic connector is a white or gray rectangular block with two pins, located under the driver's side dashboard. You will see it if you kneel down and look above the brake pedal area. It is usually labeled "TEST" and "ECU" on the cover. On some CR-X and early Civic models, the connector is in the engine bay near the strut tower instead. If you cannot find it under the dash after five minutes, check the engine bay first before giving up. Later OBD1 Hondas, roughly 1994 to 1995, moved to a 16-pin DLC that still reads out codes the same bulb-blink method but uses an OBD1-specific pinout. These cars sometimes require jumping pins A and B on the DLC rather than a dedicated two-pin connector. The manual for your specific year and model will tell you which approach applies.

Honda Obd1 Code List

Here is the core code table for the most common Honda PGM-Fi and EFI systems. Each code is two digits. The light flashes the first digit, pauses, then flashes the second digit. A long pause follows, then the sequence repeats. Two or more codes will flash in order from lowest to highest. 01 – Oxygen sensor circuit malfunction. The heater element or signal line is open or shorted. Common on D-series and B-series PGM-Fi cars. Usually means the O2 sensor is tired or the wiring harness near the manifold has cracked insulation. 02 – Oxygen sensor heater circuit fault. Distinct from 01. This one is specifically the heater side of the sensor. If the sensor heats properly but the signal is dead, you get 01. If the heater itself draws no current, you get 02. I replaced three O2 sensors before I realized my wiring was fine and the fuse for the heater circuit had silently gone open.

03 – EGR valve circuit malfunction. The EGR solenoid or position sensor is out of range. Often caused by carbon buildup holding the valve stuck, not a wiring issue. Scrape the passage. Check resistance across the solenoid terminals: roughly 15 to 30 ohms is normal for most Honda EGR solenoids. 04 – Idle speed control system fault. Usually the IACV valve or its circuit. If the idle is rough and you have this code, clean the IACV passages with throttle body cleaner first. Electrically, check for 12V at the connector with the key on and coil resistance around 10 to 20 ohms. 05 – Coolant temperature sensor circuit low input. The ECT sensor is reporting a temperature below normal range, which typically points to a shorted sensor or a wiring fault to ground. A good ECT sensor at operating temperature reads somewhere between 200 and 300 ohms depending on the exact model year. Cold it should be several kilo-ohms.

Get the Full Details

Honda OBD1 Trouble Codes List – OBDCodex | PDF | Chemistry | Science
Honda OBD1 Trouble Codes List – OBDCodex | PDF | Chemistry | Science

06 – Coolant temperature sensor circuit high input. Open circuit or disconnected sensor. Check the connector first. These older plastic connectors develop terminal spread and lose contact. Push the male pins back in slightly with a fine needle and you will often clear a ghost code. 07 – Intake air temperature sensor circuit malfunction. Similar principle to the ECT sensor. Resistance should decrease as temperature rises. An IAT reading that stays fixed regardless of engine heat usually means the sensor is dead or the wire is chafed against the intake manifold. 08 – Throttle position sensor circuit malfunction. The TPS voltage is out of the expected range at either the closed or wide-open position. Before replacing the TPS, measure voltage at the connector with a multimeter. At idle it should be between 0.4 and 0.9 volts on most PGM-Fi Hondas. At full throttle it should read 4.5 to 5.5 volts. A dirty wiper inside the sensor causes intermittent jumps that this code captures.

09 – Idle switch circuit malfunction. The idle switch on the TPS is either stuck closed or not closing when the throttle is released. This affects fuel cut and ignition timing at deceleration. Check the switch continuity with the throttle fully closed. It should show continuity. Open throttle should show no continuity. 10 – Fuel pump primary circuit malfunction. The fuel pump relay or main relay circuit is not energizing properly. This is the infamous Honda main relay issue. The relay on the fuse box under the hood controls fuel pump power. When the internal solder joints crack from heat cycling, the car runs fine cold and dies when warm. Tap the relay while the engine is running. If it cuts out, replace the relay. You can also reflow the solder on the board as a temporary fix, but that lasts about as long as a used bandage. 11 – Fuel pump secondary circuit malfunction. The ECU is not receiving the RPM signal from the fuel pump relay feedback circuit. Often the same main relay problem as code 10, but sometimes a broken wire between the relay and the ECU. Trace the pink or pink/black wire from the relay output back to the ECU connector.

12 – Barometric pressure sensor circuit malfunction. Used on models with the MAP/BAID sensor combination. If the barometric reading is implausible at key-on self-test, you get this code. Less common than the other codes and usually indicates a faulty sensor or corroded connector rather than a wiring break. 13 – Knock sensor circuit malfunction. The KS is not detecting detonation or the signal is lost. Check the connection at the sensor first. The knock sensor mounts to the engine block and the thread sealant on these tends to degrade. A loose sensor gives a weak signal and throws code 13. Torque it to spec, usually around 15 to 20 ft-lbs, and retest. 14 – Knock sensor circuit high input. The ECU sees voltage where it should not. Rare. Usually a shorted wire touching chassis ground somewhere between the sensor and the ECU. Do a visual inspection of the wiring harness near the exhaust manifold where heat damage is common.

Honda OBD1 Trouble Codes List – OBDCodex | PDF | Chemistry | Science
Honda OBD1 Trouble Codes List – OBDCodex | PDF | Chemistry | Science

15 – Throttle lock relay malfunction. The TVS or idle lock relay is not operating correctly. Found mainly on 1991 to 1993 Accord and Prelude models with the VTEC system. Check relay operation and the associated solenoid valves. 16 – ECU memory error or internal malfunction. This is the ECU telling you it found something it cannot reconcile during its own self-check. It does not always mean the ECU is dead. Sometimes a poor ground at the ECU connector causes this. Clean the ground points and reseat the connectors. If the code returns immediately with nothing changed, the ECU may have a failed capacitor or cracked solder joint on the PCB. 21 – Ignition coil primary circuit malfunction. The coil drive circuit is open or shorted. Check the purple or purple/white wire from the ECU to the coil primary. Also check coil resistance: primary should be around 0.5 to 1.5 ohms, secondary around 6,000 to 15,000 ohms depending on the coil type.

22 – Ignition coil high output malfunction. Less common, usually points to the igniter or trigger coil inside the distributor on models that have one. Distributor-based engines like the D16Y7 use an igniter module. These fail more often than people expect. Swap the igniter with a known good one before condemning the ECU. 23 – Injector circuit malfunction. One or more fuel injectors are not responding. Check resistance across each injector terminal: normal range is 10.5 to 13.5 ohms for most Honda injectors. If one is out of range, replace it. If all read fine electrically, check for 12V at the injector harness connector with the key on and listen for a click when the ECU pulses them during cranking. 24 – Vehicle speed sensor malfunction. The VSS is not sending pulses to the ECU. This affects shift quality on automatics and idle control on manuals. Check the sensor gap and the tone ring. On many Hondas the VSS is integrated into the transmission output. A worn reluctor ring or contaminated sensor tip causes intermittent loss of signal that triggers this code sporadically.

31 – A/C pressure sensor circuit malfunction. Found on A/C-equipped models. The pressure switch signal is out of range. Usually a bad pressure switch or a problem in the A/C relay control circuit rather than the ECU itself. 32 – A/C load signal circuit malfunction. The ECU is not receiving the A/C request signal. Check the A/C pressure switch output and the wiring to the ECU. This code does not affect drivability but will prevent the ECU from compensating idle speed when the A/C engages. 33 – Barometric pressure sensor high input. Similar to code 12 but indicating an implausibly high reading. Rare in practice. Likely a sensor replacement that was installed without the vent hole being clear, or a damaged hose if the sensor uses a vacuum reference line.

Complete List Of Honda Obd1 DTC Codes
Complete List Of Honda Obd1 DTC Codes

34 – Barometric pressure sensor low input. Same sensor, opposite fault. Usually a disconnected or cracked hose on boosted or turbocharged applications. On naturally aspirated cars this code is uncommon and often points to a failed sensor. 35 – EVAP purge valve circuit malfunction. The purge control solenoid is not operating within expected parameters. Check the solenoid resistance and vacuum lines. A stuck-open purge valve causes a rich condition at idle and can set this code even if the electrical circuit is fine. 36 – EVAP purge control valve high input. The ECU sees voltage where it expects ground or vice versa. Usually a wiring issue between the solenoid and the ECU.

37 – EVAP purge control valve low input. Same circuit, opposite fault. Check the same wiring. 41 – NOx sensor malfunction. Only on some 1994 to 1995 VTEC models with the N0x sensor in the exhaust. These sensors are expensive and sensitive to silicon contamination. If you used the wrong sealant near the sensor during a prior repair, this code will appear and the sensor will need replacement. 42 – Vehicle speed sensor high input. Rare. Indicates the VSS is producing more pulses than physically possible, usually a shorted wire or failing sensor.

51 – ROM malfunction. The ECU internal ROM has a checksum error. This almost always means the ECU needs to be rebuilt or replaced. There is no field repair for this besides swapping in a known-good unit. 52 – RAM malfunction. Same category as 51 but in the random access memory section. Replace or rebuild the ECU. 53 – A/D converter malfunction. The ECU's analog-to-digital converter is failing. Again, ECU replacement is the only real fix. I saw this once on a 1991 Accord EX after water got into the ECU case from a clogged sunroof drain. The corrosion had eaten through a trace on the PCB.

Honda OBD1 Trouble Codes List – OBDCodex | PDF | Chemistry | Science
Honda OBD1 Trouble Codes List – OBDCodex | PDF | Chemistry | Science

54 – Fuel trim malfunction. The ECU has detected that the long-term fuel trim is beyond its compensation range. This is not a sensor code. It means the engine is running too rich or too lean for the ECU to adjust. Common causes include a leaking fuel pressure regulator, a vacuum leak past the intake manifold gasket, or a mass airflow sensor that is reading incorrectly on L-series engines. 61 – VTEC system malfunction. The oil control solenoid or the VTEC switch is not operating correctly. Check oil level and viscosity first. Low oil pressure prevents VTEC from engaging. Then check the VTEC solenoid resistance and the oil control valve for sludge. This is extremely common on high-mileage B18 and B20 engines. Cleaning the oil control valve with carb cleaner and replacing the solenoid filter screen usually resolves it without a full engine overhaul.

How to Actually Read the Codes

Turn the ignition to ON with the engine off. Locate the two-pin test connector. Bridge the pins with a paperclip or jumper wire. The Check Engine light will illuminate steadily and then begin flashing. Count the flashes. A single flash followed by a double flash is code 12, which is the system heartbeat code meaning the ECU is functioning. After code 12, any stored diagnostic codes will follow in ascending order. Remove the jumper wire to clear the codes. Start the engine and let it reach operating temperature. Drive the car through a normal cycle. Turn the ignition off and back on. Repeat the jumper procedure to confirm whether the codes return as active or stay as history. Active codes come back immediately. History codes may not return unless the fault is currently present. There is no button combination or key-turn sequence that clears these codes the way OBD2 scan tools do. The only method is disconnecting the jumper or, in some cases, removing the ECU fuse for a minute. Battery removal also clears them but resets the radio and idle memory, which is annoying on cars with anti-theft radios.

Things the Official Code List Won't Tell You

Code 10 and code 11 are the most misunderstood codes in the OBD1 Honda world. People replace fuel pumps, relays, and wiring harnesses when the problem is almost always the main relay on the under-hood fuse box. The relay itself may test fine on a bench. The failure is in the solder joints on the relay socket PCB. I have seen technicians swap four main relays before finding the cracked solder. Resoldering those joints with fresh leaded solder and reinforcing the pins with a small amount of epoxy in the socket housing fixes it permanently. The whole job takes about twenty minutes and costs nothing if you already have a soldering iron. Another thing nobody mentions is that code 12 is not a malfunction. It is the system self-test confirmation. Every OBD1 Honda readout starts with code 12. If you see code 12 and nothing else, the ECU has no stored faults. Some people think a single code 12 means a fault exists. It does not. It means the diagnostic loop completed successfully. Intermittent codes that appear and disappear are almost always wiring issues, not sensor failures. The white two-pin connector under the dash corrodes on the terminals. The ECU connectors behind the glovebox or under the driver's dash develop green corrosion on the ground pins. I once spent an afternoon chasing a code 21 that appeared only after rain. The ground pin in the ECU connector was corroded. A quick clean with contact cleaner and dielectric grease fixed it permanently. The coil and igniter were fine.

Honda Obd1 Codes – Mastering OBD1 Honda Codes: A Comprehensive Guide – YMQU
Honda Obd1 Codes – Mastering OBD1 Honda Codes: A Comprehensive Guide – YMQU

When the Code List Stops Helping

Reading codes on OBD1 Hondas tells you which circuit is reporting a fault. It does not tell you the root cause inside that circuit. A code 08 could be a bad TPS, a bad connector, a broken wire, or a failing ECU reference voltage. You need a multimeter and a wiring diagram to go deeper. The factory service manual for your specific model and year is essential. Aftermarket manuals like Chilton or Haynes often oversimplify the diagnostic flowcharts and miss model-year variations that matter. If you have code 51, 52, or 53, stop trying to diagnose sensors and actuators. The ECU is the problem. These are internal ECU faults. Rebuilding an ECU is possible if you can find a shop that specializes in them, or you can source a used unit and have it programmed if your car requires immobilizer matching. For most people, a known-good used ECU from the same engine family is the practical path, though you may need to match the part number exactly since Honda varied ECU calibration between similar-looking years. The biggest limitation of the OBD1 system is that it only monitors discrete circuits. It does not calculate live data streams the way OBD2 does. You cannot see fuel trims, sensor voltages in real time, or monitor catalyst efficiency. You get a binary good-or-bad for each monitored circuit. This means a code that does not appear does not guarantee the component is healthy. It only means the ECU did not detect an out-of-range condition during its monitoring window.

If you are working on a car that has been modified, the code list becomes even less reliable. A larger turbo, camshaft, or exhaust change can push sensor readings outside the ECU's calibrated range without triggering a code, because the OBD1 system was never designed to monitor those parameters. In those cases, a code-free diagnostic light does not mean the car is running correctly. It means the ECU gave up trying to make sense of what it is seeing.