This is an old revision of the document!
Table of Contents
Understanding the gcode Z offset
Good Further Reading
- Ellis's Print Tuning Guide on First Layer "Squish"
Related wholly to non-tangential squish
General concepts of squish and non-tangential shape
(wip)
Generally speaking an otherwise uninfluenced extrusion from the nozzle will have a circular cross section. If an extruded line is placed next to another extruded line which each have a circular cross section they only tangentially connect. It will also only tangentially connect with the plate resulting in very poor adherence. A more rectangular cross section is desirable for maximal surface area connection. By adjusting the layer height very slightly we can control this shape and it will become more “stadium” shapped, flat on the top and bottom and rounded on the sides.
If we don't have good surface area connection in the extrusion lines the print will also be very weak and fall part on the layers.
Squish will be different for different layer heights
Squish will be different for different filaments
- Material
- type
- brand
- color
- Build plates
What does good squish look like?
Setting the gcode offset value
Klipper commands
The gcode z offset is set with the SET_GCODE_OFFSET klipper command and you should read its documentation, at https://www.klipper3d.org/G-Codes.html#set_gcode_offset
All other methods of changing the value just equate to this command. You can set it to a absolute value like
SET_GCODE_OFFSET Z=0.075
or adjust it relative to its current value like
SET_GCODE_OFFSET Z_ADJUST=0.3
Fluidd GUI
Fluidd provides easy to use controls and displays the current value, live.
Why not by Screen
Workflows using the Screen can be problematic as proper attention needs to be considered for how this value may be being changed by other controls. It is not displayed live and the value shown is often stale. This can result in issues when it send incremental value changes. The Screen does not send absolute adjustment values to Klipper, it send relative value changes. This means the Screen's understanding of the gcode z offset can differ from what it actually is, so if it still believes the offset is, say, 0.125, and it was really 0.200, when you adjust the offset on the screen by 0.100 that issues a SET_GCODE_OFFSET Z_ADJUST=0.100 command and the offset becomes 0.300mm and not 0.225mm. Saving it in the Screen's workflows can also trigger changes to other values unintentionally. It's better and easier to change the value in the console or in the Fluidd GUI.
Slicer settings
The gcode z offset can be set by the slicer, yet this method is not recommended as the slicer then applies the offset value to all movement directives it produces in the gcode file.




