P0128
Coolant Thermostat Below Regulating Temperature
Published · Reviewed and updated
In plain English: The engine is not getting hot enough, fast enough, and nine times out of ten the thermostat is stuck open.
This one will not strand you and it will not damage anything quickly. But a cold running engine burns more fuel, wears faster, and will not give you proper cabin heat in winter — so it is worth fixing before the cold weather, not during it.
Highest-ranked diagnostic starting point: thermostat stuck open (estimated likelihood 64%). Cheapest first test: is the coolant level correct, with no air in the system. Typical repair runs $12–$80 in parts.
Quick answers about P0128
- What does P0128 mean?
- The engine is not getting hot enough, fast enough, and nine times out of ten the thermostat is stuck open.
- What is the most likely cause of P0128?
- The highest-ranked diagnostic starting point in this guide is Thermostat stuck open (estimated likelihood 64%). The overwhelming favourite. They fail open far more often than shut, and the part is cheap. The percentage is an editorial estimate for prioritizing tests, not a measured fleet failure rate.
- Can I drive with P0128?
- This one will not strand you and it will not damage anything quickly. But a cold running engine burns more fuel, wears faster, and will not give you proper cabin heat in winter — so it is worth fixing before the cold weather, not during it.
- How much does it cost to fix P0128?
- This is one of the friendlier codes. On most vehicles the whole job lands between about sixty and two hundred and fifty dollars, and the part itself is almost never the expensive bit — the labour to reach it is.
- How do I diagnose P0128?
- Start with: Is the coolant level correct, with no air in the system? Check it stone cold. A low level or an air pocket sitting around the temperature sensor produces nonsense readings, and it costs nothing to rule out. Top it up and bleed it properly before you condemn anything.
Full walkthrough — 8:04. Watch on YouTube
What P0128 actually means
The thermostat is a temperature controlled valve. While the engine is cold it stays shut, so coolant is trapped in the block and the engine warms quickly. Once it reaches its rated temperature, usually somewhere around one hundred and ninety five degrees Fahrenheit, it opens and lets coolant through the radiator to hold it there.
The computer knows how long warm up should take, given the outside air temperature and how long the engine has been running. If the coolant temperature sensor has not reached the thermostat's rating within that window, it sets this code. So it is a timing test, not a temperature limit.
Symptoms
- Heater blows lukewarm or coldUsually the first thing anyone notices, and the reason most people finally get it fixed.
- Temperature gauge sits low or climbs very slowlySome gauges are damped and will look almost normal, so trust the scan tool over the dashboard.
- Worse fuel economy, especially on short tripsA cold engine runs a richer mixture on purpose. If it never warms up, it never leans out.
- The cooling fan seems to run more than it shouldA fan stuck on will drag temperature down and produce this code with a perfectly good thermostat.
- Check engine light after a cold morningVery often appears first in winter, because a marginal thermostat only fails the timing test when it is cold outside.
Most likely causes, ranked
Percentages are editorial diagnostic-likelihood estimates used to put the cheapest and most probable tests first. They are not measured fleet statistics and will vary by vehicle, mileage, climate and repair history.
Coolant temperature from a cold start — the whole diagnosis in one graph
Leave the car overnight so it is genuinely cold. Then start it, let it idle, and log coolant temperature for twenty minutes. This one graph answers the question on its own.
A healthy engine climbs steadily and reaches the thermostat's rating within about ten minutes, then holds flat right there. That flat line at the top is the thermostat doing its job, opening and closing to hold temperature.
A stuck open thermostat looks like this. It climbs more slowly, then flattens out well below the rating and simply stays there, because coolant is circulating through the radiator the entire time and the engine can never catch up.
If your line plateaus below the thermostat rating, the thermostat is the answer. If it reaches temperature normally and the code still sets, you are looking at the sensor or the fan instead.
How to diagnose it, in order
-
Is the coolant level correct, with no air in the system?Check it stone cold. A low level or an air pocket sitting around the temperature sensor produces nonsense readings, and it costs nothing to rule out. Top it up and bleed it properly before you condemn anything.Yes → go to step 2No → Top up and bleed the system, then re-test
-
Log coolant temperature from a genuinely cold start for twenty minutes.This is the measurement that decides it, and it is the graph you just saw. Do not shortcut it with a warm engine, because a warm start tells you nothing about whether warm up is too slow.Then → step 3
-
Did it reach the thermostat's rated temperature?Compare the plateau against the rating stamped on the thermostat or listed in the service data for your engine. If it settled ten or twenty degrees short and stayed there, that is your answer.Yes → go to step 4No → Replace the thermostat
-
Does the sensor reading match an infrared thermometer on the housing?If the engine really is reaching temperature, then the computer is being told otherwise. Point an infrared thermometer at the thermostat housing and compare. More than about ten degrees apart and the sensor is lying.Yes → go to step 5No → Replace the coolant temperature sensor
-
Is the cooling fan running when it should not be?A fan stuck on will hold the engine below temperature at road speed even with a perfect thermostat. Listen at idle from cold, and check the relay before you order anything else.Yes → Repair the fan relay or its control circuitNo → Re-check for a wrong-rated thermostat fitted previously
This is one of the few codes where the cheap part really is the answer most of the time — but check the level and the fan first, because both are free.
What you need to do this yourself
- A scan tool that reads live data — Every diagnosis on this site depends on watching sensor values in real time. A code-reader that only shows the code number cannot do it.
- Oxygen sensor socket — A slotted socket that clears the wiring pigtail. A normal socket will not fit.
- Digital multimeter — For checking sensor signals and grounds when live data alone isn't conclusive.
Some links may be affiliate links. They cost you nothing extra and do not change which tools are recommended — the diagnostic order on this site is the same either way.
What it costs to fix
| Repair | Parts | Labour |
|---|---|---|
| Coolant top up and bleed Cheapest possible outcome and genuinely worth checking first. |
$15–$40 | 0.5 h |
| Thermostat The part is trivial. The labour depends entirely on how buried the housing is. |
$15–$80 | 1.5 h |
| Coolant temperature sensor Usually accessible, usually quick. |
$15–$60 | 0.5 h |
| Cooling fan relay Rare as the cause, but very cheap to rule out. |
$12–$45 | 0.5 h |
This is one of the friendlier codes. On most vehicles the whole job lands between about sixty and two hundred and fifty dollars, and the part itself is almost never the expensive bit — the labour to reach it is.
P0128 in 0:59
The same decision in under a minute: what it usually is, the test that settles it, and what the parts cost.
Full transcript
Everything said in the video, in order — for reading, searching or quoting.
00:00What this code means
Code P0128. Coolant Thermostat Below Regulating Temperature.
In plain English: the engine is not getting hot enough, fast enough, and nine times out of ten the thermostat is stuck open.
This one will not strand you and it will not damage anything quickly. But a cold running engine burns more fuel, wears faster, and will not give you proper cabin heat in winter — so it is worth fixing before the cold weather, not during it.
00:29How the test actually works
Here's what your engine computer is actually measuring.
The thermostat is a temperature controlled valve. While the engine is cold it stays shut, so coolant is trapped in the block and the engine warms quickly. Once it reaches its rated temperature, usually somewhere around one hundred and ninety five degrees Fahrenheit, it opens and lets coolant through the radiator to hold it there.
The computer knows how long warm up should take, given the outside air temperature and how long the engine has been running. If the coolant temperature sensor has not reached the thermostat's rating within that window, it sets this code. So it is a timing test, not a temperature limit.
So the code is not a part failure report. It's a performance measurement that came back under spec.
01:18Symptoms
What you'll usually notice, beyond the light itself.
Heater blows lukewarm or cold. Usually the first thing anyone notices, and the reason most people finally get it fixed.
Temperature gauge sits low or climbs very slowly. Some gauges are damped and will look almost normal, so trust the scan tool over the dashboard.
Worse fuel economy, especially on short trips. A cold engine runs a richer mixture on purpose. If it never warms up, it never leans out.
The cooling fan seems to run more than it should. A fan stuck on will drag temperature down and produce this code with a perfectly good thermostat.
Check engine light after a cold morning. Very often appears first in winter, because a marginal thermostat only fails the timing test when it is cold outside.
02:13Most likely causes, ranked
Now the part you came for: what actually causes this, ranked by how often it turns out to be the culprit.
64 percent of the time, it's this: Thermostat stuck open. The overwhelming favourite. They fail open far more often than shut, and the part is cheap.
15 percent of the time, it's this: Faulty coolant temperature sensor. Reads colder than reality, so the engine is fine and the computer is being lied to.
9 percent of the time, it's this: Low coolant or air trapped in the system. An air pocket around the sensor gives wild readings. Always check level before buying parts.
6 percent of the time, it's this: Cooling fan running constantly. A failed relay or sensor holding the fan on will overcool the engine at speed.
4 percent of the time, it's this: Wrong thermostat fitted previously. A lower rated thermostat from an earlier repair will set this code forever.
2 percent of the time, it's this: Wiring or ECM fault. Rare, and only worth considering once everything above is genuinely ruled out.
Notice that the most expensive repair is not the most likely one. That matters, because the cheap checks come first.
03:36The measurement that decides it
This is the single measurement that tells you whether you need the expensive part or the cheap one.
Leave the car overnight so it is genuinely cold. Then start it, let it idle, and log coolant temperature for twenty minutes. This one graph answers the question on its own.
A healthy engine climbs steadily and reaches the thermostat's rating within about ten minutes, then holds flat right there. That flat line at the top is the thermostat doing its job, opening and closing to hold temperature.
A stuck open thermostat looks like this. It climbs more slowly, then flattens out well below the rating and simply stays there, because coolant is circulating through the radiator the entire time and the engine can never catch up.
If your line plateaus below the thermostat rating, the thermostat is the answer. If it reaches temperature normally and the code still sets, you are looking at the sensor or the fan instead.
04:35Diagnostic order
So here is the order to actually test this, cheapest and most likely first.
Step 1. Is the coolant level correct, with no air in the system? Check it stone cold. A low level or an air pocket sitting around the temperature sensor produces nonsense readings, and it costs nothing to rule out. Top it up and bleed it properly before you condemn anything.
Step 2. Log coolant temperature from a genuinely cold start for twenty minutes. This is the measurement that decides it, and it is the graph you just saw. Do not shortcut it with a warm engine, because a warm start tells you nothing about whether warm up is too slow.
Step 3. Did it reach the thermostat's rated temperature? Compare the plateau against the rating stamped on the thermostat or listed in the service data for your engine. If it settled ten or twenty degrees short and stayed there, that is your answer.
Step 4. Does the sensor reading match an infrared thermometer on the housing? If the engine really is reaching temperature, then the computer is being told otherwise. Point an infrared thermometer at the thermostat housing and compare. More than about ten degrees apart and the sensor is lying.
Step 5. Is the cooling fan running when it should not be? A fan stuck on will hold the engine below temperature at road speed even with a perfect thermostat. Listen at idle from cold, and check the relay before you order anything else.
This is one of the few codes where the cheap part really is the answer most of the time — but check the level and the fan first, because both are free.
06:22Repair costs
What this costs to put right, in US dollars, parts and labor.
Coolant top up and bleed: 15 to 40 dollars in parts, plus about 0.5 hours of labor. Cheapest possible outcome and genuinely worth checking first.
Thermostat: 15 to 80 dollars in parts, plus about 1.5 hours of labor. The part is trivial. The labour depends entirely on how buried the housing is.
Coolant temperature sensor: 15 to 60 dollars in parts, plus about 0.5 hours of labor. Usually accessible, usually quick.
Cooling fan relay: 12 to 45 dollars in parts, plus about 0.5 hours of labor. Rare as the cause, but very cheap to rule out.
This is one of the friendlier codes. On most vehicles the whole job lands between about sixty and two hundred and fifty dollars, and the part itself is almost never the expensive bit — the labour to reach it is.
07:26Recap and related codes
Quick recap. P0128 means the engine did not warm up fast enough for the computer's liking. Check coolant level, then log a cold start for twenty minutes. If the temperature plateaus below the thermostat rating, replace the thermostat. If it reaches temperature normally, suspect the sensor or a fan that will not switch off.
If your scan tool showed a related code alongside this one, check those too: P0125, P0126, P0116, P0117.
Codes are on screen and linked below.