General

P0128Coolant thermostat below regulating temperature

Coolant Thermostat (Coolant Temperature Below Thermostat Regulating Temperature)

Get it diagnosed soon

Generic OBD-II code

What the computer is measuring

The computer knows roughly how long the engine should take to warm up, given how cold it was when it started and how far it has been driven since. It watches the coolant temperature sensor against that expectation, and if the engine has not reached its normal operating temperature within the expected time, it sets P0128.

This is not really an emissions sensor test. It is a check on whether the engine is being allowed to get hot enough to run properly at all. Until it reaches operating temperature the computer runs a richer mixture, keeps the fuel trim corrections switched off and holds back the emissions monitors. An engine that never quite gets there stays in that warm up state permanently, which costs fuel, builds deposits and can eventually foul plugs.

The thermostat is a temperature sensitive valve that keeps coolant out of the radiator until the engine is warm. When it fails, it almost always fails open, letting coolant circulate through the radiator from the moment you start it. In mild weather the engine may still get warm enough and no code appears. In winter it will not, which is why this code has a season.

Before replacing it, rule out the two cheaper possibilities: the coolant level, and the sensor that is reporting the temperature in the first place. A sensor that reads low produces exactly the same code with a perfectly good thermostat.

What you will notice

  • Steady check engine light, often appearing in cold weather and going away in summer.
  • The temperature gauge sits lower than it used to, or takes a long time to rise.
  • The heater blows warm rather than hot, or takes several miles to get there.
  • Noticeably worse fuel economy, because the engine stays in its warm up fuelling.

Likely causes, most common first

Ordered by how often each one actually turns out to be the problem, not alphabetically and not by part price.

  1. A thermostat stuck open or opening too early

    The cause the great majority of the time. They fail open as they age, which is the safe way to fail but it is still a fault.

  2. A faulty engine coolant temperature sensor

    A sensor reading low makes a healthy engine look cold. Cheap to replace and worth ruling in or out before draining coolant.

  3. Low coolant level

    If the sensor is not fully immersed it reads air rather than coolant and reports a temperature that never rises properly.

  4. A cooling fan running when it should not

    A fan stuck on, usually from a failed relay or a shorted control circuit, pulls heat out faster than the engine can make it in cold weather.

What to check, in order

  1. Check the coolant level cold, before anything else.

    Low coolant explains both the code and a weak heater, and costs nothing to check. Top it up, find why it was low, then retest.

  2. Watch the coolant temperature reading from a cold start and note how long it takes to reach normal operating temperature.

    A reading that climbs and then stalls part way, or rises very slowly, fits a thermostat stuck open. A reading that jumps around or sits implausibly low from the first second fits a sensor or wiring fault.

  3. Feel the upper radiator hose during warm up.

    On a healthy engine that hose stays cool until the thermostat opens, then warms quickly. A hose that warms up gradually from the start means coolant is circulating through the radiator when it should not be, which is a stuck open thermostat.

  4. Check whether the cooling fan is running continuously from a cold start.

    A fan that never stops is its own fault and can set this code with a perfectly good thermostat.

Where this one turns up most

  • Any vehicle in a cold climate, where the code appears each winter and clears each spring.
  • Vehicles over about a hundred thousand miles on the original thermostat.

Codes that often show up alongside it

What a DriveDecode adapter can read

A DriveDecode adapter reads engine and emissions systems: the powertrain and emissions codes the OBD-II standard requires on every US vehicle it covers. It does not read ABS, airbag (SRS), TPMS or transmission-specific manufacturer codes. Those need make-specific decoding that generic OBD-II hardware cannot do.

Reading P0128 on your own car

DriveDecode pulls P0128 straight off the vehicle along with the freeze frame the computer stored when it set: the coolant temperature, engine load and speed at that exact moment. That context is what separates a fault that happens on a cold start from one that happens under load, and it is the first thing the list above asks you to narrow down.

See how DriveDecode works

Last reviewed 2026-09-05. Definition sourced from the published standard.