Skip to main content

Creality Ender 3 Pro - START & END gcode for Cura

These are my custom start and end gcodes for Cura slicer to be used with the Creality Ender 3 Pro with BLTouch/3DTouch installed.

Why this and not some other custom gcode I found on Reddit?

Well, that's what I was using for a long time, but I wanted to address some isues:

  • heat up the printer as quickly as possible
  • don't heat up the extruder all the way until just before nozzle priming (to prevent oozing from the nozzle during auto bed leveling, which takes 60 seconds)
  • print quick and efficient, Prusa-like, priming line of filament
  • after finishing the print, retracting the filament plenty back so that I can change it while the printer is cold, if need be.
  • present finished print ASAP

It does all of this somewhat nicely, took me two hours and 12 test prints. :D


Take this as-is, I take no responsibility in breaking your printer if used incorrectly. Test it couple of times with your finger on the PSU shut off switch.

It works for my setup, which is:

  • Ender 3 Pro with 4.2.7 silent board
  • Marlin firmware
  • 3DTouch installed on Satsana
  • Cura slicer (the macros like {material_print_temperature_layer_0} would need to be adjusted for other slicers accordingly, for Prusa Slicer see their docs on Macros)

Start code

; Ender 3 Pro – Cura Custom START G-code
; This is for Ender with auto bed leveling probe.
; For printers without it, remove the line with G29 (I have not tested this, though!)

; Preheat bed fully
M140 S{material_bed_temperature_layer_0}

; Preheat extuder half way to 160 C to prevent oozing during auto bed leveling.
M104 S160

; Home X and Y axes
G28 X Y

; Absolute positioning

; Move to homing position for Z axis
G1 X168 Y126 F5000

; Wait for bed to be at printing temperature and then...
M190 S{material_bed_temperature_layer_0}

; ... home Z axis...
G28 Z

; ... start heating up the extruder all the way and meanwhile do...
M104 S{material_print_temperature_layer_0}

; ... automatic bed leveling

; Move to start position for priming
G1 X5 Y5 Z10 F5000

; Wait for extruder to fully heat up to set temperature
M109 S{material_print_temperature_layer_0} 

; Reset extruder
G92 E0 

; Extrude line of filament
G1 Z0.8 F500
G1 X45 Z0.8 E40 F750 
G92 E0
G1 X65 Z0.8 E10 F500

; Reset extruder again
G92 E0 

; Move quickly away from prime line to prevent blob squish
G1 X75 F5000

End code

; Ender 3 Pro - Cura END G-code
; If making any changes here, change them BOTH in Cura (End G-Code) AND OctoPrint (GCODE Scripts -> After print job is cancelled)

;Relative positioning

;Retract 30 mm and raise Z +2 mm
G1 X-10 Z10 E-30 F3000

;Absolute positioning

; Put away X and present print
G1 X3 Y225 ;Present print

; Shutdown fan, hotend and bed
M106 S0 ;Turn-off fan
M104 S0 ;Turn-off hotend
M140 S0 ;Turn-off bed
M84 X Y Z E ;Disable all steppers