Pla temperature tower

Pla temperature tower DEFAULT

A Temperature Tower designed to find the correct temperature for your filament!

The included .gcode is sliced using Simplify3D with the "Multiple Processes" tool to set the temperatures at different layer heights. Take a look at the included image. Most settings for the S3D profile (0.15mm OPTIMAL) are from the official Prusa homepage.


Happy printing. :-)


  • Added version without numbers in case someone wants to use this tower for other materials

  • Added picture with measurements

  • Added .gcode for PETG

Print instructions

PLA G-Code:

  • File: temp-tower-190-230.stl

  • Base prints with 200°C

  • Bed 60°C

  • Sections print between 190 - 230 in 5°C increments

  • 0.15 Optimal (PLA) Profile from official prusa homepage

  • Sliced with Simplify3D

PETG G-Code:

  • File: temp-tower-no-numbers.stl

  • Base prints with 240°C

  • Bed 90°C

  • Sections print between 220 - 260 in 5°C increments

  • 0.15 Optimal (PETG) Profile from official prusa homepage

  • Sliced with Simplify3D

Watch the first few minutes of the print. Especially when the lowest temperature sections starts. If the extruder cloggs up, create your own gcode and start with a higher temperature.



How To Use A 3D Print Temperature Tower

A 3D printed temperature tower [Source: Fabbaloo]

One of the key techniques that should be used by 3D printer operators is the “Temperature Tower”.

It’s an essential tool for using and optimizing print settings for filament-based 3D printers. This technique works only for filament devices, and is of no use for resin printers, for example. 

When you receive a spool of filament the manufacturer will often paste a sticker on the side with recommended nozzle temperatures. This is quite a tricky thing to declare by the manufacturer, because in an open materials world they have literally no idea what type of 3D printer it will be used on. The chemistry of the filament needs to be matched to the thermal properties of the specific 3D printer. 

Thus the print temperature recommendations are often a range. For example, I’m looking at some handy spools here and they say things like:

  • Print temperature: 255-270C

  • Range can be 220-235C

  • Nozzle temperature 205-225C

  • Print temp: 205-225C

Sometimes you don’t even get that. 

The bottom line here is that basically you have no idea what the optimum temperature will be for a given combination of filament and printer, unless you’ve done some testing. 

That’s often the first thing I do when I encounter a foreign spool: perform some test prints within the recommended range to identify which level is best. Sometimes it’s right in the middle, but not very often. Recently I even had one material that would only print outside of the recommended range!

But that’s the exception. Nevertheless, you should always perform a simple experiment with your material to understand exactly how it performs with your specific 3D printer configuration. 

I’ve found the best way to do this is through what’s called a “temperature tower”. It is a curious structure that looks somewhat like a small open-air apartment block, with multiple levels. 

The idea is to 3D print the entire tower, but vary the temperature on each “floor”. That way you can very easily visually compare the print results between the two temperatures. 

How exactly do you configure a 3D print job to do this? Most slicing systems offer a way to change print parameters at specified layers. I can’t get into the details here as it depends on which slicing system you use. It is sometimes a bit tedious, but usually you have to do it once for reasons that will become clear later. 

Once configured, the 3D printer will simply adjust temperatures as it encounters the designated layers accordingly. 

Normally the highest temperature is to be tested first, so it will be set at the lowest level. Then, as the layers proceed upwards, the temperature will drop, typically by 5C. 

Why go from hot to cold? The answer is simple: at some lower temperature the material will cease to flow, and printing will jam. That doesn’t happen at hotter temperatures; the print just gets sloppy. 

I’ve encountered this effect several times where a temperature tower print actually fails before it gets to the top. Then you know for sure where the softening temperature is located.

Well-designed filament chemistries will offer a wide range of printable temperatures, so you will sometimes encounter a material that varies very little between temperatures. 

More frequently, however, you will see differences in the print quality from layer to layer. Most temperature tower designs offer some basic geometry that you can compare between layers. Look for slumping overhangs, poor bridging, ringing (wobbly echoes near corners), blobs and other print artifacts. If you look closely you will usually see some difference. 

Another factor that changes by temperature is the surface quality. Some materials, particularly the “silk” style materials and PETG, offer more or less shine depending on the set temperature. 

Pick the temperature that offers the best combination of look and function. 

There are plenty of temperature tower 3D models available on public repositories. For example, as of this writing there seem to be over 50 designs on Thingiverse.

But there is a problem. When you examine the printed tower you may see a particular level is optimal, but then you might not recall what temperature was used for that level. Was it 210C or 215C? Sometimes you have to refer back to your slicing profile to figure it out. 

But there is an easier way! There are extremely useful temperature tower 3D models that are customizable. These are 3D models that can be generated to have as many levels as you wish — and even label each layer with the temperature! How handy can that be! 

One design I’ve tried is the “Customizable Better Temperature Tower” by Thingiverse contributor KM SD.

It may seem tricky to use one of these, but actually it’s quite straightforward. Rather than providing a static 3D model, which cannot be changed, KM SD provides an OpenSCAD script. 

OpenSCAD is a free tool to generate 3D shapes from command line — code. Its tagline is “The Programmers Solid 3D CAD Modeller”.

Now, before you freak out, you don’t have to know any software coding before trying this. It’s incredibly simple. First, download a copy of OpenSCAD for your platform. It’s available in Windows, Mac OS and Linux. 

View of OpenSCAD code generating a temperature tower [Source: Fabbaloo]

Open OpenSCAD and then open the script from Thingiverse. You’ll see some code on the left, as seen in this image, and a rendering of what it generates on the right. 

Now, this is the trickiest part: simply adjust the start and stop temperatures in the code by typing over top of the existing values, which by default are 210-280C. Probably you want different temperatures, so just replace these two numbers:

Only two parameters to change to generate a different temperature tower 3D model [Source: Fabbaloo]

Then hit the render button (“>>”) and you should see and updated tower with your specifications. Hit the “STL” button to download this 3D model and you’re all set to configure your temperature tower 3D print job. 

Here’s the best part: once you have a 3D print job configured for a particular temperature range, keep it. Whenever you get a new filament, just print that same job and you’ll get a tower printed with the temperature ranges for inspection. 

If you’re not using temperature towers, you should be. 

  1. Dnd celestial names
  2. String lights clipart
  3. Heavy duty oil burner pipe

One part of 3D printer's calibration is finding the optimal printing temperature. This temperature can differ based on the hotend design, filament manufacturer, material type or even ambient temperature.

The easiest way to quickly test a range of temperatures is by printing a temperature tower. Unfortunately, setting the temperature changes isn't obvious or even impossible with some slicers.

We'll be using this temperature tower by Jan Petersen from Thingiverse. I recommend it because the sections are evenly spaced and it includes a stringing test. Besides retraction settings, stringing is dependent on printing temperature so you might as well test it at the same time.

For PLA, I recommend testing temperatures in the range from 190°C to 215°C. Try 210°C to 240°C for PETG and 220°C to 250°C for ABS.

When your tower is finished, examine the overhangs, bridging and stringing. The ideal temperature is the lowest where the layers are still bonded together strongly (try breaking it apart) and where you can notice the least amount of artefacts. Also, the lower the printing temperature the better bridging you can achieve.

In some cases, the entire tower might look nearly identical. This is usually a sign of a good quality filament. I recommend selecting the temperature in the middle of the range to begin with.

Let's see how you can set the temperature changes using different slicers.


Simplify3D has a built-in tool for setting different properties at different heights. This is great for changing infill percentage, but it can also make changing the temperature very easy.

You will find it under the Tools menu and then Variable Setting Wizard.

For our case, you should split the model beginning at 12mm and then at every further 10mm (i.e. 22, 32, 42 and so on).

Once done, Simplify3D will create a new process for every height that you've entered. The first process is attached to the bottom section of the tower.

Double click on each process, go to the Temperature tab and then select the Extruder temperature. You should set a single temperature at Layer 1.

Repeat this for each process while changing the individual temperatures. When you're ready to slice it, be sure to select all of the processes before continuing.

Save the gcode and your tower is ready to be printed.


Cura doesn't have a built-in support for changing the temperatures, but there is a plug-in available that will help you do that. Best of all, it's already included with Cura.

Go to the Extensions menu and then select Post processing -> Modify G-Code:

Begin by adding a new script. The one we are looking for is called ChangeAtZ. Then simply enter the height of the change and select the Change Extruder 1 Temp. Enter your desired temperature in °C. Add a new script for every temperature change and repeat the above.


Unfortunately, Slic3r does not currently support changing temperatures in any way. You will have to manually change the gcode as explained in the next section.

Set changes manually

If your slicer doesn't support the temperature changes or if you prefer to do it yourself, then you can edit the gcode file and set the changes manually.

Gcode files are written in plain text, so you can open them in any text editor.

To set the temperature changes, you have to search for a certain height and insert the appropriate command there. Specifically, you should search for the command, as we want the first temperature change to occur at the height of 12mm. Unfortunately, this is where things get complicated.

Different slicers have slightly different ways of creating the gcode file. For example, Simplify3D and Slic3r will insert only the individual command to change the height, which is easy to find. Cura, on the other hand, will combine the height change with XY movement as well and the gcode would look like this (they're also using instead of , but the end result is similar):

To further complicate things, if you have Lift-Z / Z-hop enabled, you might see a lot of commands that use the same height, but you need to find the one that actually changes the current layer.

Luckily, slicers also include human readable comments in the gcode, which helps greatly. All comments begin with the ; symbol at the beginning of the line.

In Simplify3D, the comment for layer height change looks like this and you should be able to find the actual command right after it:

With Slic3r, it should look like this:

Cura only comments on the layer's number, but the command should be right after that:

You might notice the F command at the end of some G commands; that is simply the movement speed.

Once you've successfully found the correct position in the gcode, insert the temperature change command into a new line just after the height change. The command to change the temperature is:

where S is the temperature in °C and T0 signifies the first extruder.

In a similar fashion, find all the other locations where you wish to change the temperature (, , etc.) and insert the command afterwards.

With that done, save the gcode file and you're ready to print the modified temperature tower.

How to find the perfect temperature for your 3D prints!
temperature tower 2

Understanding the characteristics of the filament you are using can go a long way when it comes to getting the best print possible from a 3d printer. This is especially true when it comes to knowing the temperature that works best with the filament. A five-degree change in either direction can be the difference between getting a great print or a stringy mess with some types of filament. That’s where a temperature tower comes into play.

Most modern slicing software can change the temperature mid-print by injecting additional commands into the g-code file. With Cura, that’s done using the ChangeAtZ plugin, and I’m going to show you how to use it.

Before we dig into how to print a temperate tower, let’s first talk about what it is and why you would want to print one to begin with.

How to Print a Temperature Tower

Now that we talked about what a temperature tower is and when you would want to print one, let’s dig into how you actually do that.

If your looking for a good filament, I recommend HATCHBOX (link to Amazon). Its an all around great filament for a good price and my go to filament.

temperature tower
  • Set the starting temperature as the main printing temperature.
    • In this example, it would be 240.
  • Set the infill density to 10%, unless the notes on the tower you are using recommends differently.
  • Go to Extensions à Post Processing à and click on Modify G-Code
Modify G-Code
  • Click on Add a script and select ChangeAtZ, you will do this ten times. The values should look like this.
  • Make sure the Trigger is set to height, change height is set to 5.0mm, Change extruder 1 Temp should be checked, and Extruder 1 temp should be set to 235.
    • The values for each plugin will change, basically layer height increases by 5 mm, and the temperature decreases by 5 degrees. Here is an overview of what all the values should be.
Plugin NumberTriggerHeightChange Extruder TempExtruder Temp
  • Next, you will want to go back through and verify everything looks right, it’s easy to make a typo.
  • Slice the object and save it to an SD card.
  • Enter the SD card into your printer.
  • Kick off the print.

*Note: There have been some cases of the temperature not changing appropriately when using height as the trigger in Cura 4.8. If this ends up being happening to you, the workaround would be to switch the trigger from height to layers and increment the layer number by 25 (assuming you are using a .2mm layer height).

Here is a video I made covering the process. If you are still having issues, I would revert back to Cura 4.7 until the ChangeAtZ plugin can be patched.

What is a Temperature Tower

A temperature tower is a 3d object that is divided into sections that are printed at different temperatures. The object can be as simple as a tower or have additional features like bridges, cylinders, and cones. The main purpose of it is to help you identify the best temperature to use when printing with a specific filament.

You would do that by looking at the printed object to see what temperature looked the best, had the least amount of defects and stringing, and had the best bridge. With some filaments on Amazon, the results can be pretty close, and you would just need to make a judgment call on what one appears to be the best. With others, there can be a significant difference, and the right choice would be obvious.

Here are a couple of temperature towers from Thingiverse that I would recommend.

Most of the time I print a temperature tower that has a solid area, bridge, and a slight overhang. If I am working with more expensive filament, I typically opt to print a more complex tower to get the most from the filament.

Why Print a Temperature Tower

You would want to print a temperature to help you determine what temperature works best for the filament that you are using. The filament manufacture tends to give you a range you can use, but that range is typically 15-30 degrees, so it really only provides you a starting point. The difference between printing at the min and max of the range can be day and night, especially with more specialty filaments.  

When should I print a temperature tower

You should print a temperature tower for each filament brand and type you use. For example, if you use HATCHBOX and Overture PLA filament (both available on Amazon), you would want to print a temperature tower for each of those even though they are both PLA because they are made differently and have different specs.

If you bought another roll of something you already printed a temperature tower for, you wouldn’t need to print another one. The same thing stands true for going between filament types like PLA, ABS, TPU, etc.

Related Articles


Understanding the characteristics of the filament you are using can go a long way when it comes to getting the best print possible from a 3d printer. With most modern slicing software being able to change the temperature mid-print by injecting additional commands into the g-code file, it’s easy to print a temperature tower, and I highly recommend doing so when you start to use new filament.

Make sure you check out our YouTube channel, and if you would like any additional details or have any questions, please leave a comment below. If you liked this article and want to read others click here.


Temperature tower pla


How to Create a Temp Tower Test in Cura


You will also like:


1951 1952 1953 1954 1955