Thermal runaway on a 3D printer: what it means and how to fix it
A thermal runaway error means the firmware saw the temperature stop following the heater, for example dropping while the heater was on full, and shut every heater off. It's a safety check doing its job: the usual causes are a loose thermistor, a loose heater cartridge, or a fan cooling the heater block. Fix the physical cause, then re-tune the heater. Never disable the protection.
- Power off and let the hotend cool. Don't reset and immediately retry the print.
- Check the thermistor is pushed fully into the heater block and its set screw or clamp is snug.
- Check the heater cartridge is fully inserted and clamped, and its wires aren't damaged.
- Fit the silicone sock and make sure the part-cooling air hits the print, not the heater block.
- Re-tune the heater (
M303on Marlin,PID_CALIBRATEon Klipper, or the printer's built-in calibration), then watch one full heat-up.
What thermal runaway protection checks
The firmware can only control a heater it can measure. The classic failure is a thermistor that slips out of the heater block: it reads low, the firmware drives the heater harder, and the block keeps getting hotter with nothing to stop it. Thermal runaway protection catches this by checking that the temperature responds to the heater the way it should.
Most firmware runs three separate checks, and each has its own error message:
- Heat-up watch. While heating, the temperature must keep rising. If it doesn't, Marlin stops with
Heating Failedand Klipper withHeater extruder not heating at expected rate. - Runaway window. Once at temperature, it must stay close to the target. If it sags and doesn't recover, Marlin stops with
THERMAL RUNAWAY. - Range check. Readings outside the sensor's sane range trigger MINTEMP or MAXTEMP instead.
All three switch off every heater and halt the printer. On Marlin, M999 won't clear it; you need a reset or power cycle. On Klipper, fix the cause and send FIRMWARE_RESTART.
Thermal runaway errors and limits by printer
Defaults below come from each firmware's own documentation or source. Printer makers can tune them, so treat them as typical values.
| Firmware / printer | Error you'll see | When it trips (defaults) |
|---|---|---|
| Marlin (Ender 3 and most budget printers) | Screen: THERMAL RUNAWAY (e.g. THERMAL RUNAWAY: E0)Serial: Error:Thermal Runaway, system stopped! Heater_ID: E0 (or bed) |
Hotend more than 4 °C below target for 40 s. Bed more than 2 °C below target for 20 s. |
| Marlin heat-up watch | Screen: Heating FailedSerial: Error:Heating failed, system stopped! Heater_ID: E0 |
Hotend doesn't gain 2 °C within 40 s while heating. Bed doesn't gain 2 °C within 60 s. |
| Klipper (Voron, RatRig and other Klipper builds) | Heater extruder not heating at expected rate (or heater_bed) |
While heating: must gain 2 °C within 20 s (extruder) or 60 s (bed). At temperature: once a second it adds up how far the reading is more than 5 °C below target, and trips when the total reaches 120. |
| Prusa MK4, MK4S, CORE One, MK3.9 | THERMAL RUNAWAY print head #XX204 (MK4: 13204, MK4S: 26204, CORE One: 31204); heatbed #XX203. PREHEAT ERROR #XX202 / #XX201 when it fails to heat. |
Prusa: nozzle drops 12 °C and doesn't recover within 60 s. Keep the room above 18 °C. |
| Prusa MK3, MK3S, MK3S+ | Thermal Runaway; firmware 3.12 and later also warns with THERMAL ANOMALY from its thermal model |
Prusa: a drop of more than 15 °C for more than 45 s. Room at 16 °C or warmer. |
| Bambu Lab A1, P1, X1, H2 | 0300-8008 printing stopped because of a nozzle temperature problem; 0300-8009 heatbed temperature malfunction |
Not published |
| Creality OS (K1, K2, Hi series) | TE2564 "The nozzle is not heating as expected."; CB2565 heat bed not heating as expected |
Not published |
What causes thermal runaway, most likely first
Use the clue column to match your symptoms. Type in the filter box to search the table.
| Cause | Typical clue | Fix |
|---|---|---|
| Part-cooling fan blowing on the heater block, or no silicone sock | Trips a few layers in, right when the fan ramps up; temperature sags each time the fan speeds up | Fit a sock, re-aim or replace a damaged fan duct, re-tune with the fan running |
| Thermistor loose or partly pulled out of the block | Reading is low, noisy or drops when the head moves | Push it fully home and tighten its retainer gently |
| Heater cartridge loose or failing | Slow heat-up, Heating Failed, or the block heats unevenly | Reseat and clamp the cartridge; replace it if its resistance is off |
| Wrong heater for the board voltage (12 V cartridge on 24 V, or the reverse) | After a parts swap: far too slow (24 V cartridge on a 12 V board) or dangerously fast (12 V cartridge on a 24 V board) | Fit the correct voltage and wattage cartridge |
| PID or MPC not tuned after a hotend, heater or nozzle change | Temperature graph oscillates or overshoots | Run PID or MPC autotune and save the result |
| Intermittent heater or thermistor wiring | Random trips during long moves; the wiggle test changes the reading | Repair or replace the wire, connector or crimp |
| Cold room, draughts or an open enclosure (especially the bed) | Happens in winter or near a window or vent | Warm the room, close the enclosure, keep draughts off the printer |
| Weak or uninsulated heated bed asked for a high temperature | Bed Heating failed above about 90–100 °C | Insulate the underside, lower the target, or lengthen the bed watch period modestly |
Your printer heats up fine, then throws THERMAL RUNAWAY on layer 3, just as the part-cooling fan ramps to 100%. What's the best fix?
Fan air hitting a bare heater block pulls heat away faster than the heater can replace it, so the temperature sags past the runaway window. That's the most common cause listed in Marlin's documentation. A sock and a correctly aimed duct fix it; disabling protection only hides it.
How to fix thermal runaway, step by step
- Cool down and power off. Work on a cold, unplugged printer; heater blocks stay hot long after the screen says otherwise.
- Reseat the thermistor. Push it fully into its bore and tighten the set screw or clamp until it's snug. Overtightening can crush a glass-bead thermistor.
- Reseat the heater cartridge. It should sit fully inside the block with its clamp screw tight. A cartridge that can move is a cartridge that can fall out.
- Check the wiring end to end. Look for chafing in the cable chain, a scorched connector or a loose screw terminal at the mainboard. Do the wiggle test with the printer powered on and heaters off.
- Fix the airflow. Fit a silicone sock and check the part-cooling duct isn't cracked or pointing at the block. Prusa specifically warns that a damaged fan shroud can cool the heater block.
- Re-tune the heater. Use the commands below, or the built-in calibration on Prusa and Bambu Lab printers.
- Watch a full heat-up and the first layers. Keep an eye on the temperature graph when the part fan first switches on. A stable line means you're done.
PID and MPC tuning commands
M303 E0 S210 C8 U1 ; PID autotune hotend 0 at 210 °C, 8 cycles, use the result
M500 ; save to EEPROM
M303 E-1 S60 C8 U1 ; bed PID tune (only if your firmware has PIDTEMPBED)
M500
M306 T ; MPC autotune instead, on firmware built with MPC
M500
PID_CALIBRATE HEATER=extruder TARGET=210
SAVE_CONFIG
PID_CALIBRATE HEATER=heater_bed TARGET=60
SAVE_CONFIG
Tune at the temperature you actually print at. For more on tuning order, see the 3D printer calibration guide.
Slow heater? How to adjust the limits safely
Large or weak heated beds sometimes trip the heat-up watch even when nothing is broken. In that case it's reasonable to give the check a little more time, as long as the protection stays on. Marlin's documentation suggests keeping the total time a fault could go unnoticed to a minute or two.
// Configuration_adv.h
#define THERMAL_PROTECTION_BED_PERIOD 60 // default 20 (seconds)
#define WATCH_BED_TEMP_PERIOD 90 // default 60 (seconds)
[verify_heater heater_bed]
check_gain_time: 120 # default 60 for the bed; smaller is stricter
Never disable thermal runaway protection. It's the safeguard between a loose heater and a fire. Marlin even refuses to stay quiet about it: building without it prints Safety Alert! Enable THERMAL_PROTECTION_HOTENDS for the final build! If you see that message in a firmware you're about to flash, stop.
How to check your printer has thermal runaway protection
Klipper enables its heater check for every heater automatically. Current Prusa, Bambu Lab and Creality OS firmware has protection built in that you can't switch off from the screen. Marlin enables it in every example configuration. The printers worth testing are older or second-hand budget machines with unknown firmware.
- Switch off and unplug the printer.
- Disconnect the hotend heater cartridge at its connector. This is low-voltage DC on almost every hotend. Don't touch mains wiring or an AC-powered bed.
- Power on and set the hotend to 200 °C. With no heater connected, the temperature can't rise.
- Watch the screen. A protected Marlin printer stops with
Heating Failedwithin about a minute (it must gain 2 °C in 40 s). - If it keeps "heating" indefinitely, protection is off. Don't use the printer until you've flashed current firmware with protection enabled.
- Power off, reconnect the heater, then confirm the printer heats normally.
Test only with the heater disconnected. Never test by pulling a thermistor out of a hot block or holding it away from a live heater. With the heater unplugged nothing can overheat, so the worst outcome is learning your firmware needs replacing. If you can't safely reach the heater connector, skip the test and update the firmware instead.
Why thermal runaway protection exists
In 2018, a widely shared report covered an Anet A8 fire where the heater cartridge worked loose from the block and the printer kept heating. Early Anet A8 firmware was reported to lack thermal runaway detection. Problems didn't end there: a 2021 test by YouTuber Thomas Sanladerer found that an Ender 3 passed his simulated heater faults, while a Voxelab Aquila kept heating in some of them. That's why current Marlin enables protection by default and warns loudly when it's missing, and why it's worth checking an unknown printer. For the wider picture on fire, fumes and electrical risks, read the 3D printing safety guide.
Your Marlin printer halted with THERMAL RUNAWAY and you've fixed the loose thermistor. How do you clear the error?
Marlin treats thermal errors as a kill, so the printer shows PRINTER HALTED and only a reset or power cycle clears it. M999 restarts a printer stopped for other errors, and M112 is an emergency stop.
Frequently asked questions
What is thermal runaway on a 3D printer?
Thermal runaway is a heater that keeps heating without the firmware being able to control it, usually because the thermistor has come loose and reads too low. Thermal runaway protection detects that the temperature isn't following the heater and shuts every heater off before it can overheat.
What is the difference between Heating failed and Thermal runaway?
In Marlin, Heating failed means the temperature didn't rise fast enough while heating up. Thermal runaway means the temperature fell too far below the target after reaching it. Both trigger the same shutdown and usually have the same physical causes.
Can I just reset and keep printing after a thermal runaway error?
You can reset, but don't just restart the print. Find the cause first: a loose thermistor, a loose heater or a fan blowing on the heater block. If you ignore it, the error will come back, and the thing it is protecting you from is a real fire risk.
Is it safe to disable thermal runaway protection?
No. Thermal runaway protection is the main safeguard against a heater burning unchecked. Marlin warns at compile time if you build firmware without it. If a slow heater causes false alarms, adjust the timing modestly instead of switching protection off.
Does my 3D printer have thermal runaway protection?
Current Prusa, Bambu Lab, Creality OS and Klipper printers have it built in, and Marlin enables it in every example configuration. Some older budget printers shipped without it, so if you're unsure, test it with the heater disconnected or flash current firmware.
Related articles
Sources & further reading
- Marlin firmware — Thermal protection and M303 PID autotune
- Klipper — verify_heater reference and Configuration checks (PID calibration)
- Prusa Knowledge Base — Hotend thermal runaway (MK4, CORE One) and Thermal runaway (i3 series)
- Bambu Lab Wiki — Error codes and HMS lookup
- Creality Wiki — Creality OS error codes
PrintPal toolsAll tools
Thanks! We read every note and use them to decide what to update next.