3D print layer shifted halfway through — causes and fixes
Layer shift — where the print suddenly jumps sideways partway through — is almost always mechanical. Loose belts, a stalling stepper, or the toolhead hitting something mid-print. Here's how to find out which.
Layer shift — where a print suddenly jumps 5-20 mm sideways partway through — is one of the most infuriating failures. You've burned 4 hours of printing to find out the top half is offset from the bottom. The cause is always mechanical or electrical, and it's almost always fixable with basic tools.
How to tell which axis shifted
Look at the print. If the shift is only in the X direction (side to side as you face the printer), you have an X-axis problem. If it's in Y (front to back), Y-axis. Both at once usually points at a collision or a power glitch.
1. Belt tension
Loose belts are the #1 cause. When the printer tries to move fast, a slack belt lets the toolhead lag, then snap forward — and the actual position no longer matches the firmware's idea of where it is.
- Power off. Pluck the belt like a guitar string. It should twang at a clear pitch, not flop.
- Both X and Y belts should feel the same tension.
- If you tighten, go a bit at a time — over-tight belts wear the motor shaft and bearings and can actually cause skipped steps the other direction.
2. Pulley grub screws
Each stepper has a small pulley fixed to its shaft by a tiny grub screw (M3 or M4). These loosen over time from vibration. When the pulley spins free on the shaft, the motor turns but the belt doesn't — same result as a slipped belt.
- Check every grub screw with a matching Allen key.
- Make sure the grub screw is seated on the flat of the motor shaft, not on the curved part.
- A drop of thread-locker keeps them honest if they keep loosening.
3. Toolhead colliding with the print
If a curl or a stringy blob sticks up above the current layer, the toolhead smacks into it on the next travel move and skips steps. This is especially common with PETG.
- Look at the print's top surface in the area of the shift. Can you see a bump or blob right at the shift line?
- Fix: address the root cause (PETG stringing guide on this site) and/or enable Z-hop in the slicer (1 mm is plenty) so travel moves go over obstacles rather than through them.
4. Stepper motor overheating
When a stepper gets hot, the motor driver hits thermal cut-out and stops it for a few milliseconds. You hear a brief "tick" from the printer, and the axis loses its position. Symptoms:
- Long prints (3+ hours) always shift; short prints never shift.
- The stepper motor feels hot to the touch (more than warm).
Fixes: print slower, reduce acceleration, turn stepper current down in firmware by 10-15% (this usually helps), or add a small fan blowing on the motor.
5. Under-powered PSU
A flaky power supply browns out during high-current moves (heater kicking on plus a fast travel), and the stepper driver loses position. Look for:
- Random shifts at different heights in every print (no pattern).
- LED lights on the printer dimming briefly when the bed heater switches on.
- Multiple printers misbehaving on the same extension lead — try a different mains socket.
6. Firmware / slicer settings
Less common but worth checking:
- Acceleration / jerk settings too high for the printer's frame stiffness.
- Non-standard E-steps after a firmware update.
- Corrupted G-code from a bad SD card. Re-slice and copy again.
Diagnostic trick: print a shift-detection tower
If you can't reproduce the shift on demand, print a simple 50mm tall hollow cylinder with a single perimeter. Any shift is blindingly obvious on a round shape. Change one thing, print another. Three towers will usually narrow it down.
When to send it in
If you've retensioned belts, checked grub screws, confirmed it isn't thermal, and the printer still shifts, the stepper driver on the mainboard or the motor itself may have failed. Both are replaceable but require opening the control box and confirming the part number. We diagnose these on the bench — post the printer in and we'll identify the faulty component and swap it.