Redline Garage is reader-supported. We earn affiliate commissions from qualifying purchases — how this works.

How to Read an OBD2 Code Step by Step

Home/Resources/Reading OBD2 Codes/Read a Code Step by Step
A mechanic's hand holding a handheld OBD2 scanner displaying a P0301 code on its screen, plugged into a port under the dashboard of a Japanese sports car interior, warm workshop lighting, photorealistic, shallow depth of field, no text overlays

Affiliate Disclosure

Some links on this page are affiliate links. As an Amazon Associate, we earn from qualifying purchases — at no extra cost to you. We do not buy, test, or physically handle the products we cover; our rankings come from aggregated owner reviews, ratings and expert consensus. Commissions never change our verdicts. How we rank & full disclosure.

Your check engine light just came on and you want to know what it means before you drop the car at a shop. Good instinct. Reading an OBD2 code yourself takes about five minutes, costs nothing if you borrow a scanner, and gives you real information instead of guesswork. This guide walks you through every step in plain language.

Not sure what OBD2 actually is? Start with What Is OBD2? A Plain-English Explainer first, then come back here. Otherwise, let’s get into it.

What You Need Before You Start

You need two things:

That’s it. You don’t need the car running. You don’t need to drain the battery. You can’t fry anything by plugging a scanner in. The OBD2 port is passive — it just listens.

Close-up photorealistic shot of a standard 16-pin OBD2 diagnostic port mounted under a car dashboard on the driver's side, illuminated by a phone flashlight, dark surrounding trim visible, no text overlays

Step 1: Find the OBD2 Port

The OBD2 port is a 16-pin trapezoid-shaped socket, almost always located under the dashboard on the driver’s side. On most cars you can reach it without kneeling — it sits somewhere between the steering column and the left door, usually within arm’s reach from the driver’s seat.

Common exact locations:

JDM import note: If you’re driving a genuine grey-market Japanese domestic market import (a car that was never sold new in your country), the OBD2 port may still be present and fully functional, but some very early JDM vehicles from 1996–1998 used Toyota’s or Nissan’s own pre-OBD2 diagnostic connector instead. If your port doesn’t match the standard 16-pin shape, you’re dealing with an OEM-proprietary system. A standard OBD2 scanner won’t read it — you’ll need a marque-specific tool or a dealer cable.

For the vast majority of readers, the standard port is right where it should be. Slide under the dash with your phone flashlight if you can’t see it immediately.

Step 2: Turn the Ignition to the ON Position (KOEO)

Do not start the engine. Turn the key (or push the start button once without pressing the brake) to bring the dash lights on. This is called Key On, Engine Off — abbreviated KOEO. The instrument cluster illuminates, the fuel pump primes, and the car’s ECU powers up.

Why not just start the car? You can on most scanners, and live data works better with the engine running — but for pulling stored trouble codes, KOEO is cleaner and avoids any idle fluctuations interfering with the connection handshake.

Step 3: Plug the Scanner Into the OBD2 Port

Line up the connector and push it in firmly until it clicks. The fit is snug by design — it needs to seat fully to make contact on all 16 pins. A loose connection is the number-one reason scanners fail to communicate.

If you’re using a Bluetooth or Wi-Fi dongle paired with a phone app (like Torque Pro, OBD Fusion, or Car Scanner ELM), plug the dongle in now and open your app. The dongle will usually flash an LED to confirm it has power from the port.

If you’re using a handheld scanner with a built-in screen, it will boot up automatically once it draws power from the port.

Step 4: Let the Scanner Connect and Navigate to “Read Codes”

Give it five to ten seconds. The scanner handshakes with the ECU, identifies the vehicle protocol (most modern cars use CAN bus), and loads the menu.

From here, the exact wording varies by scanner brand, but you’re looking for one of these options:

Select it. The scanner queries the ECU and returns a list of codes within a few seconds.

Step 5: Read and Record Every Code — Stored and Pending

This is the step most beginners rush. Don’t just glance at the code and close the app — write everything down or screenshot it.

What you’re looking at:

For each code, note:

  1. The code itself (e.g., P0301)
  2. The short description shown on screen (e.g., “Cylinder 1 Misfire Detected”)
  3. Whether it’s stored or pending

Want to understand what the letters and numbers in a code actually mean? Understanding OBD2 Code Format breaks it all down.

Step 6: Pull the Freeze Frame Data

This is the most underused feature on basic scanners and the most useful data you can capture. Freeze frame is a snapshot the ECU took of key sensor values at the exact moment the fault was detected — engine RPM, vehicle speed, coolant temperature, fuel trim, load percentage.

Why it matters: if your code is intermittent (comes and goes), the freeze frame tells you the conditions under which it set. Was the engine cold? At highway speed? Under heavy load? That context cuts your diagnostic time in half.

Look for a “Freeze Frame” or “FF Data” option alongside each stored code. Screenshot or photograph it. Even if you don’t know what fuel trim means right now, a mechanic will.

Step 7: Write the Code Down Before You Clear Anything

Clearing codes before you’ve diagnosed the fault is one of the most common DIY mistakes. Once you clear, the freeze frame is gone, the readiness monitors reset to “not ready,” and if the fault doesn’t reappear immediately, you lose your diagnostic trail.

Record everything first. Then decide whether to clear.

There are legitimate reasons to clear codes — after you’ve repaired the fault, or to reset the monitors before a smog test. But that’s a separate decision. See How to Clear an OBD2 Code (and When Not To) for the full breakdown.

What to Do With the Code Next

You have a code. Now what?

  1. Look it up — Search the exact code plus your car’s year, make, and model. Generic P0xxx codes apply across all OBD2 vehicles, but manufacturer-specific P1xxx codes (and P3xxx on some brands) are narrower. Model-specific forums are often more useful than generic code databases.
  2. Check the symptoms against the code — A P0171 (System Too Lean, Bank 1) paired with rough idle and a vacuum hose hiss points somewhere specific. A P0171 with no other symptoms means something different.
  3. Identify whether it’s a soft fault or a hard fault — Soft faults (intermittent, no driveability impact) can often wait for weekend investigation. Hard faults (misfires, temperature warnings, oil pressure) warrant parking the car.
  4. Cross-reference with the freeze frame — Match the conditions in the freeze frame to what you were doing when the light came on.
  5. Decide: DIY or shop? — Many codes resolve with straightforward fixes: a loose gas cap for P0442, fresh spark plugs for a P030x misfire, a $12 MAF sensor cleaner for P0101. Others require oscilloscopes and pressure gauges. Know your limit.

Head back to the OBD2 Codes hub for guides on common codes by system — engine, transmission, emissions, and body — organized so you can find your specific fault fast.

Quick Reference: The Full Step Sequence

  1. Locate the OBD2 port (under dash, driver’s side)
  2. Turn ignition to ON / KOEO — engine off
  3. Plug scanner in firmly until it clicks
  4. Let it connect, navigate to “Read Codes” or “DTC”
  5. Note every stored code and every pending code
  6. Open Freeze Frame and record or photograph the data
  7. Write it all down before touching “Clear”
  8. Research the code, match to symptoms, act accordingly

That’s the whole process. First time through it takes maybe ten minutes including finding the port. Second time it’s five. You now know more about your car’s fault history than most people who hand their keys to a stranger at a shop.

Need a scanner to follow these steps? These are the readers worth your money, from phone adapters to standalone handhelds. We rank on aggregated owner reviews rather than our own testing, and prices are indicative — check the live listing.

#2OBDLink MX+ OBD2 Adapter
Best Bluetooth
OBDLink MX+ OBD2 Adapter

Best for enthusiasts who want speed and locked-down security

  • Very fast, reliable data connection
  • Secured to prevent unwanted access
  • Deep vehicle coverage with good apps

Why buy it: the power-user adapter — fast live data and broad protocol support for people who tinker often.

Check Price on Amazon Live price on Amazon
#3Foxwell NT301 Code Reader
Best Handheld
Foxwell NT301 Code Reader

Best for people who want a standalone tool, no phone needed

  • Built-in screen with its own battery-free operation
  • Reads, clears and shows freeze frame
  • Live data and I/M readiness for smog checks

Why buy it: the grab-and-go pick — plug in, read the code, no app or pairing to fuss with.

Check Price on Amazon Live price on Amazon
#4ANCEL BD310 OBD2 Scanner
Best Value
ANCEL BD310 OBD2 Scanner

Best for a do-it-all budget pick with a screen and Bluetooth

  • Works as a handheld or a phone adapter
  • Reads and clears codes with freeze frame
  • Compact enough to leave in the glovebox

Why buy it: the flexible value option — handheld when you want it, phone-connected when you don’t.

Check Price on Amazon Live price on Amazon
#5Autel AutoLink AL319 Code Reader
Best Budget
Autel AutoLink AL319 Code Reader

Best for the tightest budget that still reads freeze frame

  • Simple one-button code read and clear
  • Shows freeze frame data
  • Reliable entry-level Autel build

Why buy it: the honest cheap start — everything this step-by-step guide needs, for very little money.

Check Price on Amazon Live price on Amazon
// Straight Answers

Frequently Asked

Do I need to start the engine to read OBD2 codes?

No. Turn the ignition to the ON position (key on, engine off — KOEO) so the dash lights illuminate but the engine does not start. Stored trouble codes are accessible without the engine running, and this keeps the connection clean.

Where is the OBD2 port on a JDM import?

On most JDM vehicles the port sits under the dashboard on the driver’s side, near or below the steering column. Some grey-market imports built before 1998 may use a manufacturer-specific diagnostic connector instead of the standard 16-pin OBD2 socket — check the connector shape before assuming your scanner will work.

Can I damage my car by plugging in an OBD2 scanner?

No. The OBD2 port is a read-only diagnostic interface. Plugging in a scanner draws a small amount of power from the battery and reads data — it does not send commands that can alter engine operation or cause damage. You cannot break anything by connecting a scanner.

What is freeze frame data and why does it matter?

Freeze frame is a snapshot of sensor values (RPM, speed, coolant temp, fuel trim, engine load) recorded by the ECU at the exact moment a fault code was triggered. It tells you the conditions under which the fault set, which is essential for diagnosing intermittent problems.

What is the difference between a stored code and a pending code?

A stored (confirmed) code has triggered the check engine light — the ECU has seen the fault condition on multiple drive cycles and confirmed it. A pending code is a single detection that has not yet been confirmed; the light may still be off. Both are worth recording.

Should I clear the codes after reading them?

Not until you have diagnosed and repaired the fault. Clearing codes erases the freeze frame data and resets the readiness monitors, which removes valuable diagnostic information. Record everything first, fix the problem, then clear — see our guide on how to clear an OBD2 code for the correct procedure.