Ender 3 (Pro & V2 & Neo & S1) Cura Start G-Code Configuration

The Start G-Code section in Cura is one of the essential points of slicer configuration, as all the critical pre-print preparation steps, whether it’s heating the hotend up, initiating bed leveling, or resetting the extruder, depend on the correct configuration of the Start G-Code section for your 3D printer to carry these tasks out.

In this guide, we will take you through the process of configuring the Start G-code section in Cura optimally for your Ender 3 and share with you various optimized G-code blocks for different scenarios, such as with or without automatic bed leveling, that you can directly use with your Ender 3 without the need for any extra adjustment.

Ender 3 (Pro & V2 & Neo & S1) Cura Start G-Code Configuration

As your 3D printer runs the commands within the Start G-code section before each print, configuring this code block in the most optimal way possible is the best way to ensure that the printer reliably carries out all the preparation tasks in a time-efficient manner, which, over time, adds up to quite a lot of time saved.

While the default start G-code block in Cura does include the necessary G-code commands for a successful print for the most part (it requires a slight modification if you have an automatic bed leveling probe installed), whether it’s getting your Ender 3 to home the axes or reset the extruder position before starting the printing process, there are a few optimizations you can make to streamline the preparation phase and increase the time efficiency.

For instance, if you look at the default Cura start G-code block for an Ender 3, you will notice that no G-code commands that modify the hotend or the print bed temperature are present.

cura ender 3 start gcode default example


In this case, the G-code file that Cura produces will have the M190 (Wait for Bed Temperature) G-code command first, the M109 (Wait for Hotend Temperature) G-code command second, and the commands in the start G-code block afterward, which will effectively create a scenario where your Ender 3 will wait until the bed is fully heated up first, then wait until the hotend is fully heated up, and finally, start running the start G-code block.

cura pre-print gcode output example


On the other hand, if you modify the start G-code block to have the M104 G-code command first and M190 afterward instead, your Ender 3 will heat both the hotend and the print bed at the same time instead of waiting for the print bed to reach the target temperature before heating the hotend up, which will allow the preparation phase to end quicker and the printing process to start sooner.

cura ender 3 start gcode optimized example


Considering that these are a simple series of optimizations that you will only need to perform once and that you can practically copy and paste to your start G-code section in Cura (you can find them in the following section of the article) to save a considerable amount of time in the long run, we believe that there’s no reason not to make use of them, which is why they are some of our favorite optimizations to make when setting an Ender 3 up for the first time.

Optimized Ender 3 (Pro & V2 & Neo & S1) Cura Start G-Code Blocks

Below, you can find the optimized Ender 3 Cura Start G-code blocks that we have prepared for you, which you can directly transfer to the Start G-Code section of Cura without requiring any modifications.

That being said, since the start G-code block you should be using slightly differs based on the bed leveling system you’re using, whether it’s no automatic bed leveling at all, automatic bed leveling, or unified bed leveling, picking the correct one is vital to ensure that things work as intended.

No Bed Leveling

M104 S180 ; Start pre-heating the nozzle to a safe temperature where the filament won't ooze to save time
M190 S{material_bed_temperature_layer_0} ; Start heating the bed to the target temperature specified in Print Settings and wait until the temperature is reached
G92 E0 ; Reset extruder
G28 ; Auto Home all axes
M104 S{material_print_temperature_layer_0} ; Start heating the nozzle to the target temperature specified in Print Settings
G1 Z2.0 F3000 ; Move Z Axis up
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
M109 S{material_print_temperature_layer_0} ; Wait until the nozzle is heated to the target temperature specified in Print Settings
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to the side
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset extruder
G1 Z2.0 F3000 ; Move Z Axis up
G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish

Automatic Bed Leveling (G29)

M104 S180 ; Start pre-heating the nozzle to a safe temperature where the filament won't ooze to save time
M190 S{material_bed_temperature_layer_0} ; Start heating the bed to the target temperature specified in Print Settings and wait until the temperature is reached
G92 E0 ; Reset extruder
G28 ; Auto Home all axes
G29 ; Auto bed leveling
M104 S{material_print_temperature_layer_0} ; Start heating the nozzle to the target temperature specified in Print Settings
G1 Z2.0 F3000 ; Move Z Axis up
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
M109 S{material_print_temperature_layer_0} ; Wait until the nozzle is heated to the target temperature specified in Print Settings
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to the side
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset extruder
G1 Z2.0 F3000 ; Move Z Axis up
G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish

Saved Bed Leveling Mesh Activated (M420 S1)

M104 S180 ; Start pre-heating the nozzle to a safe temperature where the filament won't ooze to save time
M190 S{material_bed_temperature_layer_0} ; Start heating the bed to the target temperature specified in Print Settings and wait until the temperature is reached
G92 E0 ; Reset extruder
G28 ; Auto Home all axes
M420 S1 ; Activate bed leveling state
M104 S{material_print_temperature_layer_0} ; Start heating the nozzle to the target temperature specified in Print Settings
G1 Z2.0 F3000 ; Move Z Axis up
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
M109 S{material_print_temperature_layer_0} ; Wait until the nozzle is heated to the target temperature specified in Print Settings
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to the side
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset extruder
G1 Z2.0 F3000 ; Move Z Axis up
G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish

Unified Bed Leveling (G29 A)

M104 S180 ; Start pre-heating the nozzle to a safe temperature where the filament won't ooze to save time
M190 S{material_bed_temperature_layer_0} ; Start heating the bed to the target temperature specified in Print Settings and wait until the temperature is reached
G92 E0 ; Reset extruder
G28 ; Auto Home all axes
G29 A ; Activate Unified Bed Leveling
M104 S{material_print_temperature_layer_0} ; Start heating the nozzle to the target temperature specified in Print Settings
G1 Z2.0 F3000 ; Move Z Axis up
G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
M109 S{material_print_temperature_layer_0} ; Wait until the nozzle is heated to the target temperature specified in Print Settings
G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to the side
G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
G92 E0 ; Reset extruder
G1 Z2.0 F3000 ; Move Z Axis up
G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish

Conclusion

With your Start G-code block now optimized for usage with your Ender 3, you will never have to manually run some of the G-code commands that are required before each print, such as G29 for initiating the automatic bed leveling process, making things both more reliable and also more convenient at the same time.

Additionally, as using an optimal Start G-code block will allow your 3D printer to conduct these tasks in the most time-efficient way possible, such as getting automatic bed leveling out of the way as the hotend is heating up instead of waiting for it to be finished first, you will also save a considerable amount of time across a large number of prints.