A temperature tower tells you the exact nozzle temperature your current spool wants — not the range printed on the label, and not what worked for a different brand of the same plastic. You print one tall model split into vertical blocks, each block a few degrees cooler than the one below it, hold every other setting constant, then read the results. Whichever block gives you clean surfaces, fused layers and the least stringing is your number.

That’s the whole idea, and it’s the reason this temperature tower calibration guide keeps hammering one point: a temp tower is a univariate experiment. Change only the nozzle temperature between blocks. Keep speed, cooling, flow and retraction identical top to bottom, and every visible difference maps cleanly back to temperature. Break that rule and you’re just guessing with extra steps.

Why temperature is the first thing you calibrate

Nozzle temperature sets the viscosity of the melt, and viscosity drives everything downstream — how the plastic flows through the nozzle, how it bonds to the previous layer, and how cleanly it breaks contact on travel moves. Too cold and you get under-extrusion, weak interlayer adhesion and layers that peel apart under load. Too hot and the filament starts to degrade, ooze, string and — over a long print — clog.

Because temperature governs flow, it has to come first in your calibration chain. The sensible order is:

  1. Temperature
  2. Flow rate
  3. Pressure advance
  4. Retraction
  5. Max volumetric speed
  6. Tolerance

Each step depends on the one before it. Calibrate flow or retraction before you’ve nailed temperature and you’ll be tuning against a moving target. If you want the full sequence with target values, our calibration order guide walks through the lot.

Starting temperature ranges by material

Set your tower’s start (bottom, hottest) and end (top, coolest) temperatures to bracket the range for your material. Always defer to the spool label first — these are sensible starting brackets, not gospel, and additive packages shift the optimum even within one polymer.

Material Typical tower range (°C) Sensible first-print value (°C) Notes
PLA 190–220 ~200 Most PLA prints best around 200°C; extend to 230 for high-flow blends
PETG 230–250 240 Wider stringing sensitivity — read travel moves carefully
ABS 220–250 235–245 Some spools want 240–250; brand-dependent
ASA 230–270 ~250 Treat like a hotter ABS; enclosure matters

Run the tower in 5°C steps — that’s the standard resolution and, in OrcaSlicer, it’s fixed. Five degrees is enough to see the transition without wasting plastic; if two adjacent blocks look identical, that’s fine, it just means your material has a wide happy band.

Slicer setup: OrcaSlicer and Bambu Studio (built-in)

This is the easy path and it’s now the best one. Older workflows meant hand-drawing towers or splicing third-party G-code scripts. Modern slicers have the test built in.

In OrcaSlicer, pick your printer, filament and process profile, then go to Calibration → Temperature. It uses a remix of gaaZolee’s Smart compact temperature calibration tower, with fixed 5°C steps and a start/end temperature you set yourself. For PLA the default range is 220°C down to 190°C. The slicer writes the temperature changes directly into the layer control of the G-code — no manual ChangeAtZ scripts, no post-processing clean-up afterwards.

One detail worth knowing: the reference model is designed around a 0.4 mm nozzle at 0.2 mm layer height. Enable nozzle auto-scaling and the tower scales to your actual nozzle diameter, setting layer height to half of it, so the overhangs and stringing bridges stay properly proportioned whether you’re running a 0.2 mm or 0.8 mm nozzle. If you don’t scale it, a 0.6 mm nozzle will misread the fine features.

Slicer setup: Cura (ChangeAtZ post-processing)

Cura needs manual work. Slice the tower model, then go to Extensions → Post Processing → Modify G-code and add a Change at Z script for each temperature transition. Tick “Change Extruder 1 Temp” and enter the value.

Two rules keep this sane:

  • Hottest at the bottom, cooling as you go up. You need one script instance per change — for example change at layer 25, then layer 40, then layer 55.
  • Work out your Z heights. Multiply layer thickness by layers per section: 0.2 mm × 50 layers = 10 mm per block.

Cura’s Marketplace also has a dedicated “Temperature Tower” plugin that automates this — you just enter start temp, end temp and layers per step. Either way, two things bite people:

  • Disable Z-hop before slicing. Z-hop confuses the ChangeAtZ plugin and can misplace your temperature changes.
  • Delete the scripts afterwards. Cura post-processing scripts persist across projects. Forget, and your next print silently inherits a temperature tower’s worth of setpoint changes.

Slicer setup: PrusaSlicer (custom G-code)

In PrusaSlicer, right-click the ‘+’ on the layer slider and choose Add custom G-code. Enter M104 S220M104 triggers a temperature change at that layer, and S220 sets it to 220°C. Add one per transition, hottest at the bottom.

Here’s the nuance that catches people out: M104 sets the temperature without waiting for the nozzle to reach it. So the printer starts extruding the new block before the melt has actually moved to the new setpoint. The transition zone between two blocks isn’t reliably at either temperature — which is exactly why you should judge the middle of each block, not the boundary. If your imported profiles are misbehaving before you even get to this stage, our slicer profile patch guide covers why imports fail.

How to read the tower

Inspect each block for under- and over-extrusion, stringing, oozing, warping, curling, cracking, layer separation and surface finish. Then compare blocks. The directional trends are consistent enough to memorise:

Symptom / property Direction What it tells you
Stringing / oozing Worse hotter, better cooler Lower temperature reduces wisps
Layer adhesion / part strength Better hotter Higher temperature fuses layers
Overhangs & bridging Improve hotter — until they sag Too hot causes droop and stringing

Notice that stringing and strength pull in opposite directions. That tension is the whole point of the exercise. To resolve it:

  • If a range of blocks looks good, pick the middle. That gives you margin on both sides.
  • Printing fast or at high flow? Bias to the top of the good range — you’ll need the extra fluidity.
  • Two blocks tie? Take the cooler one for less stringing.

For functional parts, don’t stop at “prettiest block.” Aesthetics and strength aren’t the same thing. Too hot and the plastic goes brittle; too cold and layers separate. Dismantle the tower afterwards and twist each bridge along its length to find weak points — clean, satin, fused layers at the interface matter more than a glossy surface. For figurines, prettiest-block is genuinely fine. Once you’ve got your number, enter it in the filament profile under Nozzle Temperature and save.

Common mistakes that give you a false result

  1. Wet filament. This is the big one. Absorbed moisture causes bubbling, popping, stringing and surface defects regardless of temperature. Test a damp spool and you’re measuring humidity, not thermal behaviour. Dry it first. If you’re seeing wisps everywhere, our stringing fix guide separates moisture from temperature causes.
  2. Changing other variables between blocks. Alter fan speed, print speed, flow or retraction mid-tower and you can’t attribute the improvement. Hold everything non-thermal constant.
  3. Using someone else’s pre-sliced G-code. “It’s easier” — until you realise it bakes in their retraction, speed and cooling. A 6 mm retraction on your direct-drive setup will fail the whole tower for reasons that have nothing to do with temperature. Slice it yourself with your profile.
  4. A script error printing the whole tower at one temperature. Preview the G-code, or better, watch the printer’s screen during the print and confirm the target temp actually steps down at each transition.
  5. Leaving Cura scripts in place after the test — see above.
  6. Reusing one profile across brands. Calibrate eSun PLA+ at 210°C, apply it to Overture PLA Professional, and the flow’s off, the optimum is really 215°C, and the pressure advance is different. Per-spool calibration exists because colour and additive packages shift the optimum even within one base polymer.

PETG deserves its own note because its stringing behaviour is unusually temperature-sensitive and interacts hard with retraction and Z-hop. Once your tower gives you a PETG temperature, our PETG retraction and Z-hop guide has the numbers to finish the job.

Frequently asked questions

What temperature increment should a temp tower use?

5°C steps are the standard and what OrcaSlicer uses by default (the step is fixed there). It’s fine enough to see the transition without burning excess filament. If two adjacent 5°C blocks look identical, your material simply has a wide operating window — take the middle.

Should I judge the top or bottom of each block?

The middle. Especially with the M104 method in PrusaSlicer and Cura, the temperature is set without waiting, so the transition zone between blocks isn’t reliably at either setpoint. The centre of each block is fully soaked at its target temperature and gives you an honest reading.

Do I need to recalibrate for every new spool?

For best results, yes — at least for a new brand or a noticeably different colour. Optimal temperature varies by brand, colour and additive package even within the same polymer, so a value tuned on one PLA+ won’t be exact on another. It’s a 20-minute print that saves you a shelf of half-good parts.

Why does my tower string at every temperature?

Almost always wet filament or wrong retraction, not temperature. Dry the spool, confirm your retraction is sane for your extruder type, and re-run. If it persists, upload a photo to our Diagnose toolit reads the defect and returns slicer-specific settings, including downloadable .ini patches for PrusaSlicer and OrcaSlicer, so you’re not guessing which variable is actually at fault.