How To Set Z Offset Ender 3 (V2/Pro/S1)

The Z offset is easily one of the most important (and least understood) settings for any 3D printer. If it’s poorly set, your prints will almost definitely turn out as a big bowl of spaghetti or, at best, dimensionally inaccurate.

The Z offset is a lot like Goldilocks.

If it’s set too low, the nozzle will be wayyyyy too close to the bed. And if it’s too high, the nozzle will be too, and your prints won’t stick to the bed. So, for high-quality and consistent prints, you need to set the Z offset perfectly!

On the Ender 3 (V2, Pro, S1), you can adjust the Z offset in a few ways. The quickest method is by using the LCD interface on the printer, but you can also change the value by sending G-code commands to the printer or setting it in your 3D slicer program.

Want to learn more about Z offset and how you can use it to fix prints on your Ender 3? Just keep reading!

What is Z Offset?

Source: Youtube Make With Tech (MakeWithTech)

Z offset is a setting for 3D printers that controls how far away the printhead moves away from its home position along the vertical axis (Z axis).

It’s important to remember that this offset is only digital and is not the same as the position of the physical Z-axis endstop (limit switch) on your Ender 3.

If you still are a little confused, let me walk you through a typical example of when the Z offset is at play.

When you start a print on your Ender 3, the first thing the printer does (after heating up) is home each of the axes (X, Y, Z). This means that the moving parts on the printer (e.g. printhead) are pushed towards the end of their respective axes until a sensor, known as a limit switch, is triggered.

When the limit switch is triggered, the part has technically reached the end of its axis, called the true zero point (image below). But this isn’t its home position.

After the limit switch is hit, the Ender 3 moves the respective part a few millimeters in the opposite direction, and this is the spot known as the home position of an axis. The reason it’s moved a little is to give the limit switch some clearance, so it’s not constantly being triggered.

The Z offset is a setting that allows you to change the printer’s Z axis position up or down from its home position. This offset is digitally set and can be changed at any time.

Why is Z Offset Important?

The Z offset is extremely important because it allows you to control the distance between the nozzle and the print bed with a high level of precision.

Remember that if the nozzle is too far away from the build plate, your prints won’t be close enough to properly adhere to the bed. And, if the nozzle is too close to the bed, then the first layer won’t come out fully, your model will be dimensionally inaccurate, and the print might even fail. So you can employ the Z offset to perfect the distance between the nozzle and the bed so that prints come out as they’re supposed to.

Of course, changing the position of the limit switch could technically achieve the same effect as using a Z offset. But as the offset is digital in nature, it’s a lot more precise. A Z-axis stepper motor is hundreds of times more precise than your hand and eye are!

Z Offset VS Bed Leveling

A common confusion people have with Z offset is that it’s the same as bed leveling. This is usually because both can be used to adjust how well the first layer of a print comes out. But Z offset and bed leveling achieve this in different ways and are not the same.

As we went over, the Z offset is a digital offset from the printer’s home Z-axis position, which adjusts how far the nozzle is from the bed. But the Z offset doesn’t mean that the distance between the nozzle and the bed is the same across the entire bed. That job is for bed leveling.

Moreover, bed leveling is the process of adjusting the position of the build plate so that it’s perfectly flat and perpendicular to the nozzle. Check our out article on how to level the bed of an Ender 3 here for more info.

In more simple terms, leveling the bed will ensure that the nozzle is always the same distance above the bed, while adjusting the Z offset will change the distance between the nozzle and the bed actually is.

Both a poorly leveled bed or a poorly set Z offset will yield a bad first layer, so make sure to do both correctly.

Methods for Changing the Z Offset

There are a few different ways you can change the Z offset on the Ender 3, whether it’s the original, Pro, V2, or even the S1. In the sections below, we’ve gone over what you have to do for each of the methods.

1. LCD Interface

The first and most convenient way to adjust the Z offset is by using the LCD user interface on the Creality Ender 3.

On the Ender 3’s interface, the Z offset control can be found by clicking “Control”, then “Motion”, and then the “Z Offset” button. Once you’ve entered into the Ender 3 Z offset control, simply scroll the button knob to the right to increase the distance or the left to decrease it.

Depending on what version of firmware (Creality, Marlin, TH3D, etc.) your Ender 3 is running, the buttons might be named something slightly different. If the steps above don’t work, try navigating around the different sections of the interface, and you should find the Z offset tool in no time.

And, for some versions of Marlin firmware, you can access the Z offset control menu by simply holding down the button on the LCD for a few seconds.

Once you’ve changed the Z offset, make sure to save your settings in case of a power loss or before turning your printer off. You can do this by going into the “Control” menu and finding the “Store Settings” button. 

Changing the Z offset over the LCD is definitely the easiest method if you’re running the stock firmware. But it might not be possible for some users, such as those running Klipper firmware, where the LCD interface doesn’t work. If that’s you, don’t fret; move on to the next step (look, it rhymes!).

2. G-Code Commands

Source: Youtube Create With Tech

Sending G-code commands might not be the most beginner-friendly method for changing your Ender 3 Z offset, but it’s 100% the most likely to work. That’s because, at the end of the day, every button you click on the LCD interface on your printer is just a mask for sending G-code commands.

So if changing the offset value on your LCD for some reason doesn’t work, or you don’t have an LCD, you can directly send the G-code commands to your printer to adjust the Z offset value.

To do this, first, connect a computer with a G-code command program to your Ender 3’s motherboard through the USB port. I do this through my OctoPrint server because it’s already set up, and the OctoPi interface has its own G-code terminal built in. But I’ve also been able to do it by connecting my laptop to the printer and using a downloadable G-code terminal, like Pronterface (it’s free!).

Once you’ve connected the G-code terminal to your printer, start by sending the “G28” command. All you have to do is paste “G28” into the printer and click enter. Make sure you see the X, Y, and Z axes of your printer move to their home positions.

Then send the following command: G0 Z<insert offset value here>. For example, if I sent the “G0 Z1” command, the printer would move the Z-axis up by 1 mm.

You can send a few of these commands until you know the exact Z offset value (it will likely be a decimal) that you want. Once you’ve got that value, make sure the printer is at that position. Then, just send the following command “G92 Z0”. This will tell your printer to recognize its current position as its home (Z=0) position.

It’s also handy to know the “G92.1” command, which will reset the machine to its original offsets.

Once you’ve set the Z offset and tested it by homing the printer again or even printing a test model, you need to save the settings. You can do this by sending the “M500” G-code command, which stores the settings to the onboard memory of the printer.

3. Cura Slicer

The third method for changing the Z offset is through your Ender 3D slicer program. I like to use Cura for slicer-based Z-axis offset changes, but the feature is also available in PrusaSlicer and other programs.

In Cura, you can change the Z offset by using a plug-in known as “Z Offset Setting”. To install it, open Cura, and click “Marketplace” in the top right corner of the interface. Then you can scroll down in the “Plugins” section until you find the “Z Offset Setting” program, which you should select and click “Install”. You can also find it by searching for the program over the web version of the Cura Marketplace.

Once the Z offset plugin is installed, it’s pretty straightforward from there.

All you have to do is find the “Z Offset” setting in the settings bar in Cura; it should be under the “Build Plate Adhesion” category. You can now set it to whatever you want, and your printer will recognize it through the print’s G-code script.

4. Physical Endstop

Source: Youtube Tomb of 3D Printed Horrors

The last method I have for you is adjusting the physical position of the Z-axis limit switch. This, of course, isn’t the same as changing the Z offset because the process is physical rather than digital. But this physical method still accomplishes the same task as implementing a digital Z offset because the distance between the nozzle and print bed still changes.

On the Creality Ender 3 (V2/Pro/S1), the Z-axis limit switch is located on the bottom left side of the frame, and it’s mounted using two T-nut screws. So the first step in this process is to locate the limit switch.

Once you’ve got your eye on the prize, take the right-sized Allen key from the set that came with your Creality printer and loosen the two mounting bolts by the limit switch. Don’t pull the T-nut bolts all the way out, though, as it’s very annoying to get them back in.

Source: Jackson O’Connell

Then, with the limit switch loosely attached to the frame of the printer, use your thumb to slide the sensor up or down just a little bit. On this note, make sure you move the limit switch in the correct direction. For reference, if your prints aren’t properly sticking to the print bed because the nozzle is too far away, then you need to move the limit switch down, and vice versa.

Once you’ve moved the limit switch in the right direction, take that Allen key and tighten the limit switch’s T-nut bolts back into the frame of the printer. Also, make sure that the bolts are tightened evenly as you want your limit switch to be level across the horizontal plane.

And don’t worry about getting the position right on the first try because almost no one does, and you can always go back and readjust. It usually takes me 3-5 attempts before I nail the nozzle-to-bed distance on my printer, so be patient with the process.

And that’s it. While this method isn’t as convenient as digitally adjusting the Ender 3 Z offset, it’s easy to understand and might be more your style.


If the first layer of your prints is too high or too low and doesn’t come out right, the problem might not be your bed leveling but rather an incorrect Z offset. While the concept can be a little difficult to understand, implementing and properly setting a Z offset is essential for achieving high-quality prints on your Ender 3.

Luckily, there are a few ways you can adjust the Z offset on your Ender 3, whether it has auto bed leveling (like on the S1) or not. By far, the easiest way for most users is through the LCD user interface.

But, if you’re using a special firmware program and don’t have the controls available on your Ender 3’s LCD, you can also adjust the Z offset value by sending specific G-code commands to your printer. But if you’d rather change this setting through your slicer program, you can use the Z offset plugin for Cura.

Lastly, if you don’t want to dabble in the digital world, you can take things old school and physically move the Z-axis limit switch to get the job done.

Related Articles:

About The Author

Scroll to Top