Temperature Tower: Finding a Filament's Print Temperature
A temperature tower prints blocks at stepped nozzle temperatures inside one model so you can compare them side by side. Set its range inside the filament maker's printed range, print it with your normal profile, and pick the block with the fewest problems. If several look equally good, OrcaSlicer suggests the middle of that range, or its higher end if you print fast.
What the test measures
Nozzle temperature sets how runny the molten plastic is. OrcaSlicer's calibration page puts it plainly: temperature changes the viscosity of the filament, which changes how it flows through the nozzle and sticks to the bed, so every later test depends on it. Too low can cause under-extrusion, poor layer adhesion and stringing; too high can degrade the filament, clog the nozzle and also cause stringing.
A temperature tower stacks several blocks, each printed at a different temperature, so one print shows you the whole range under identical conditions.
Prerequisites
- A sound printer and a good first layer: Before You Calibrate.
- Dry filament. Damp filament strings and bubbles at every temperature and hides the answer; see Drying and Storing Filament.
- The filament maker's printed temperature range, from the spool label or the technical data sheet. Keep the tower inside it Maker spec. There is no universal temperature for a material.
How to run it
OrcaSlicer
Open Calibration, choose Temperature, and set the start and end temperatures. The model is designed around a 0.4 mm nozzle at 0.2 mm layers; Auto-scale for nozzle, enabled by default, scales the tower to your nozzle and sets the layer height to half the nozzle diameter so its features stay readable. Disable it only to compare against earlier towers at the original size.
Bambu Studio
Bambu Lab documents a Temperature test in its calibration guide for third-party printers, which is for advanced users and needs Developer Mode turned on in Preferences. Reading it is the same as OrcaSlicer's.
PrusaSlicer
Prusa describes inserting custom G-code at a layer as the way to build calibration G-code such as a temperature tower. Load a tower model whose blocks are marked with temperatures, slice it, and in the preview drag the layer slider to the first layer of each block. Right-click the plus icon, choose Add custom G-code, and enter M104 S followed by that block's temperature. M104 sets the hotend temperature; M109 waits for it (with S it waits only when heating, with R it also waits while cooling). Prusa warns to double-check custom G-code before printing, and notes the feature does not work with sequential printing.
Klipper's TUNING_TOWER
Klipper's TUNING_TOWER runs a command with a parameter that changes with Z height. For towers with discrete bands, Klipper's documentation says to use STEP_DELTA and STEP_HEIGHT. With a traditional G-code like M104, Klipper writes the parameter letter directly in front of the value, so a tower can be driven like this:
TUNING_TOWER COMMAND=M104 PARAMETER=S START=<bottom block temperature> STEP_DELTA=<change per block> STEP_HEIGHT=<block height in mm>
Klipper only sends the command when the value changes, and a slicer can send its own temperature command when it moves from the first layer to the second. Set both the first-layer and the other-layer nozzle temperature to the START value in the profile you slice the tower with, or the bottom block prints at the wrong temperature without any error.
Use a negative STEP_DELTA for a tower that gets cooler as it rises. STEP_HEIGHT must match the block height of the model you print. If SKIP is set, the test starts at that height and z height is counted from there. Send the command before the print starts.
Reading the result
Let the tower cool and look at each block. OrcaSlicer and Bambu Lab both say the best temperature is the one with the highest quality and the fewest problems: stringing, layer adhesion, warping on overhangs and bridging. OrcaSlicer's guide to the trade-offs:
| What to look at | Which way temperature pushes it |
|---|---|
| Stringing | Lower temperatures usually reduce it, but going too low can cause it too |
| Layer adhesion and strength | Higher temperatures generally improve it |
| Overhangs and bridges | Higher temperatures can help flow, but too high sags |
| Surface finish | Balance temperature and flow |
What to change
Set the nozzle temperature in the filament profile, not the print profile, so it travels with the material. OrcaSlicer's advice Rule of thumb: if a range of blocks looks good, use the middle of it; if you print at higher speeds or flow rates, consider the higher end. See Temperature and Cooling for how temperature and fan speed interact.
Leave these alone during the test
- Print speed and volumetric flow. Speed changes how hot the plastic really gets.
- Part cooling fan settings. Cooling changes bridging and stringing on its own.
- Retraction. Tune it later with the retraction test, at the temperature you pick here.
- Flow ratio and pressure advance. They come after temperature in OrcaSlicer's order.
OrcaSlicer lists temperature among the tests to repeat for each new filament.
- Temp Calibration OrcaSlicer
- Calibration for 3rd Party Printer Bambu Lab
- Insert pause or custom G-code at layer Prusa Research
- G-Codes: TUNING_TOWER Klipper
- tuning_tower.py Klipper
Last reviewed 2026-11-05