I had a couple of recent nozzle/bed crashes, so I now frequently do a manual bed levelling. I do these while the bed is heated to allow for expansion.

Today I found, after levelling, a subsequent print could vary from having too much clearance (paper moves very freely) to less than no clearance (which left deep grooves in the bed as per the photo).

Photo of bed

What are the possible causes? Is it just a dodgy Z-limit switch or something else? What solutions are available and at what cost? Obviously an ABL seems essential now, but requires a lot of hardware and setup.

It has just happened again so here are some more details.

Printing PLA this time:

  • Preheated bed.
  • Levelled bed all over and got a very good raft.
  • Print failed later so the print was aborted.
  • Restarted the same print job.
  • Nozzle gouged out a uniform depth trench around print perimeter.

The uniform depth of the gouge indicates a problem related to Z-axis only as the bed remains flat and level, but the height is off. That is to say, the bed is flat and level before and after this occurs.

Please note: I have done over 100 successful prints, prior to this issue, so I do have some knowledge about levelling the bed. I am interested in what could cause such a large variation. Initially I thought it was temperature as I switched to ABS at the time, but it now varies from one print to the next.

The machine is a month old and rock solid. The Z-axis is the slowest moving axis, controlled by the limit switch only, hence my suspecting that is the cause.

I purchased a couple of spare Ender 3's and will update various parts in turn to see what the cause is. The metal trigger on my Z-limit switch seems a little floppy sideways, but I am also starting to suspect the bed springs have lost their springiness.

I have the removal bed version and also a borosilicate glass bed. The glass is perfectly flat and the standard removable is dipped ever so slightly in the middle, but the difference is huge when it goes wrong. As you can see from the photo the trench it digs is quite uniform depth. That's why I keep coming back to the Z-limit switch. I have a spare switch now so will try that next.

  • $\begingroup$ I doubt it's the z-limit switch. I'd think two things: you aren't leveling your bed correctly; you've got some unaccounted for slop in your setup which allows the bed to come out of calibration after you've done your calibration. $\endgroup$ Commented Nov 10, 2018 at 13:27
  • $\begingroup$ Did the physical switch move? Can you check if the bed is flat? Distortion could be an issue. Did you test the physical reliability? $\endgroup$
    – Trish
    Commented Nov 10, 2018 at 13:36
  • $\begingroup$ I do a 9 point check and get almost the same tension on a sheet of paper throughout. I was lucky to get a very flat bed (aside from the gouges now present of course!) $\endgroup$ Commented Nov 10, 2018 at 20:38
  • 1
    $\begingroup$ @Greenonline Not contradictory as I was referring to the paper measurements varying on the same points after running a bad print. It did turn out to be a faulty z-stop. The switch had way too much movement in the metal strip. Replaced that and all was well again. $\endgroup$ Commented Nov 1, 2022 at 11:04
  • 1
    $\begingroup$ @GoneCoding - I'm glad that you found the issue and fixed it. As this is a quite a popular question, it would be great to have a verified solution. Would you like to post your comment as an answer and accept it (by clicking on the tick icon next to the answer, once you've posted it)? Thanks in advance. $\endgroup$
    – Greenonline
    Commented Nov 1, 2022 at 19:49

6 Answers 6


This was killing me on mine. My problem wasn't the z-axis, it was the x-axis arm. On the right side, opposite the extruder gear, it had a lot of give (wobble). I could level my bed four times before starting a print and would still have problems, especially with the nozzle making deep grooves in the magnetic bed. The way it messed up was inconsistent as well, making it hard to troubleshoot.

I changed out the bedsprings, got a glass bed instead, changed out the extruder gear and Bowden tube; I was ready to give up.

How to fix the wobble, if that's your problem, if there's a lot of give / vertical movement on the right side of the arm:

You have to take the whole arm off. First, take the top bar off, remove the four screws. Second, disable steppers so you can take the x-axis off completely. I removed the cables once I had taken it off. Third, there's a plate with two holes to get to two screws - make sure these are tight! This is where the wobble was coming from. Four, reassemble and double-check. For me, the give was reduced drastically.

A video tutorial for help. There are English subtitles.

  • 1
    $\begingroup$ Are you the original poster on a second account? $\endgroup$
    – Davo
    Commented Mar 20, 2020 at 14:54
  • 1
    $\begingroup$ No, I just thought my issue was also my z-axis and came across this several times in trying to figure things out and figured I'd post my solution in case it helps anyone else. $\endgroup$
    – Akexis
    Commented Mar 21, 2020 at 15:52

Similar issue happened to coworker's Maker Ultimate. I'm gonna go out on a limb and assume that your Z-stop is a little mechanical switch, and there's an M3 screw going through part of the Z carriage that pushes said switch. Check to see how much force it takes to rotate said screw. There's a lot of vibration happening in a 3d printer, and it takes surprisingly little vibration to make a threaded part do weird things, including making it back out against gravity if conditions are right. Redo your Z gap paper test, get everything lined up, and then slap a dab of blue loctite on the screw to make sure it doesn't move during your next print. See if that fixes your problem.


I've just bought an Ender 3 Pro and as a guess I would look at the Z axis stepper motor to see if it is not holding position once it stops... the stepper motor has power on it all the time it is stopped to hold it in position.

I would check the plug that feeds power to see if it is damaged or not making good contact.


I had a similar issue, the first layer always ended up at slightly different heights, making the first layer too low or too high.

At one point, I was raising the Z height 100 mm in G-code, and while watching the gantry rise I noticed extremely brief pauses, then when I lowered to zero the nozzle crashed the bed. I realized that the Z-axis threaded rod might be slipping. I Sharpied some marks on the coupler, did the 100 mm rise again, and took a high-speed video of the coupler with my phone. Sure enough, I saw moments where the coupler was turning but not the rod. Even though the coupler felt quite tight. So effectively the machine always thought the nozzle was higher than it actually was.

I tightened about as tight as I could without stripping. It got better, but I still had first layer inconsistency that suggested slip. Replacing the coupler with a version with 2 pairs of grub screws allowed me to get it sufficiently tight. I'm not sure how the coupler got loose in the first place, probably a crash.

Also, I found that the screws that hold the heat block to the heat break had loosened a bit. Surely this could cause issues and again probably resulting from a crash.

Finally, I think my Z gantry wheels may have been too tight. I think that would have relatively little effect on large vertical moves, but could cause some slight inconsistency in small moves or with vibrations; small but large enough to be the fractions of a millimeter that affect first layer quality.

Anyhow, one moral of this story I guess is after a crash, you can expect to spend a lot of time troubleshooting and fixing. try not to crash.

  • $\begingroup$ Welcome to 3D Printing SE and thank you for your contribution. When you get a chance, please take the tour to understand how the site works and how it is different than others. $\endgroup$
    – agarza
    Commented Jul 31, 2021 at 13:06

I'm having the same issue with Ender 3 V2. Everything tightened, Z-axis coupler not "slipping"... I noticed, that the error is made by the Z-axis end switch itself. I am not sure how that is possible but try homing several times and you'll see that the loud click when the switch is triggered occurs in a span of +/- 3 mm, which then results in a collision of the hot end and the bed, or the hot end being too high.

From what I noticed, the problem got worse after installing OctoPi. Strangely enough, I get very different results when homing "manually" (from the machine display menu), and when homing is done at the beginning of printing.

I believe that the problem has three solutions:

  1. At least 3 skirt loops and adjust the bed on the fly. This is a very unfortunate solution, but that's what I have now.
  2. I suggest some sort of speed regulation when approaching the switch (Z -> 0), thus making the switch always trigger at the same height. I'm a programmer, but not familiar with G-code, I'll make this solution publicly available when I get to it.
  3. Change the switch. The tin "paw" that can bend is unfortunate when you need 0,01 [mm] precision. The video is unrelated to the topic, but run 10-15 seconds and you'll see what I mean: Z-axis switch replacement
  • $\begingroup$ Hello again. For anyone interested: 1) it was the loosened Z-axis coupler. 2) I think that the described software feature can be achieved with existing equipment using PID regulation. $\endgroup$
    – Klemikaze
    Commented Dec 5, 2021 at 11:42

I have just had exactly the same symptoms with different clearances b/w the bed and the nozzle after homing. In order to reproduce that, I simply had to do subsequent homings and measure the clearance. The variance was around 0.15 mm.

I was not moving my printer. No wobbling was found. If the printing cycle is started successfully, then I have no issues with the printing quality. No missed steps on Z or any other axis.

The solution for me was in software. I have followed the comment here saying "You may want to try reducing the Z-axis homing speed to prevent it from exerting too much force, or tightening the switch more."

SOLUTION: I have compiled Marlin firmware myself with the only changes made to the homing speeds. Namely

in Configuration_adv.h

#define HOMING_BUMP_DIVISOR { 2, 2, 10 }       // Re-Bump Speed Divisor (Divides the Homing Feedrate)

and in Configuration.h

#define HOMING_FEEDRATE_MM_M { (50*60), (50*60), (3*60) } 

Now during homing, the Z-axis movement is so gentle that the endstop triggers reliably at the same position. It costs me only extra 10 seconds but saves a lot of time in restarting the print.

It looks like my problem is a combination of things: speed of homing and some issues with the endstop. I am ordering endstops anyway but meanwhile... anyone who can compile Marlin may consider this approach as it requires no tinkering with the HW part of the printer and is easy to roll back or configure.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .