Controlling Temperature G-Code Order

:dizzy: This page is compatible with all printers.

Table of contents

This method is a quick and easy way to move the temperature g-codes before or after your start g-code. See :pushpin: Example for what that means.

The method shown in the :page_facing_up: “Passing Slicer Variables to PRINT_START” instructions allows more control than this method, but is more complex.


Your slicer is putting heating g-codes AFTER PRINT_START / your start g-code.
Your start routines run cold, and then pause at the end for everything to heat.
You instead want your printer to heat BEFORE running your start routines.

(or the inverse, or you want to split it)

The below method allows you to do this.


To force the g-code ordering, place any of the following g-codes from the following lists in your start gcode where you desire:

Prusa Slicer / SuperSlicer

  • M140 S[first_layer_bed_temperature] ; set bed temp
  • M190 S[first_layer_bed_temperature] ; wait for bed
  • M104 S{first_layer_temperature[initial_extruder]+extruder_temperature_offset[initial_extruder]} ; set hotend temp
  • M109 S{first_layer_temperature[initial_extruder]+extruder_temperature_offset[initial_extruder]} ; wait for hotend


  • M140 S{material_bed_temperature_layer_0} ; set bed temp
  • M190 S{material_bed_temperature_layer_0} ; wait for bed
  • M104 S{material_print_temperature_layer_0} ; set hotend temp
  • M109 S{material_print_temperature_layer_0} ; wait for hotend


  • These are just lists of available commands, they don’t have to be in this order, nor do you have to use all of them. Place them as you like.
  • Each bullet point is only ONE line. Do not split them into multiple lines.
  • There are many other variables available in each slicer, and you can pass whatever variables you like to whatever g-codes you like. The available variables are not always documented.


Forces both bed and hotend to heat up fully before executing PRINT_START (SS):