How to Read Toyota Check-Engine Codes
What you need
Any OBD-II scanner works on 1996-and-newer Toyota, Lexus, and Scion vehicles. Cheap Bluetooth dongles read codes fine. You only need a Toyota-specific tool for bi-directional tests like active VVT control. For code lookup, generic is enough.
Stored, pending, and permanent
Stored codes turned the light on. The fault happened enough times to count. Pending codes failed once. The computer watches for a repeat before lighting the dash. Permanent codes stay after a clear until the car verifies the fix itself through driving. Do not clear permanent codes and expect them gone. Drive the car through its monitors instead.
Why the VSC and Trac lights come on too
On many OBD-II cars the stability and traction warning lights come on when the check engine light sets. Fix the engine fault and they usually clear themselves.
Generic versus Toyota codes
P0xxx codes are standard across brands. Look those up on OBD Codes List. P1xxx codes are manufacturer-specific. On Toyota they cover VVT-i timing, ETCS-i throttle, and wideband air/fuel sensors. Those live on this site. Pull both layers before diagnosing. A generic misfire code plus a Toyota igniter code points at the igniter, not the plugs.
After the repair
Clear codes with the scanner. Drive normally for a few days. The monitors run their tests and the light stays off if the fix held. If it returns, read the freeze frame. It shows engine conditions when the fault set. That data beats guessing.