Diagnosing layer shifts: belts, pulleys, nozzle collisions and stepper limits

Published October 15, 202614 sources

Short answer

A layer shift is the X or Y axis losing its position mid-print, so every layer above that height is offset. Prusa's Knowledge Base names wrong belt tension and loose pulleys as the most common causes, and a loose pulley as the usual source of staircase shifts [1]. Bambu Lab adds collisions with warped or nozzle-stuck parts and speeds that are too high for the motion system [5].

Prusa’s Knowledge Base describes a layer shift as an abnormal movement of the X and/or Y axis that leaves the print head misaligned partway through a print, and says the first step is to work out which axis shifted [1]. Bambu Lab’s definition also covers height errors between layers, which is why a sudden step in Z belongs on the same checklist [5].

Read the shift before you touch the printer

The shape of the defect narrows the search before any tools come out.

  • Which axis. Measure the offset at the shifted layer. If the part moved toward the front or back on a bed-slinger, suspect Y; left or right, suspect X. Prusa’s troubleshooting steps are the same for both axes once the axis is known [1].
  • One step or a staircase. A single large offset points to an event at one height, such as a collision. Repeated small offsets in the same direction point to something slipping every so often. Prusa calls a loose or misaligned pulley the usual main cause of staircase shifts [1].
  • CoreXY diagonals. On the CORE One, Prusa says inconsistent movement along X or Y usually comes from belt tension, while inconsistent movement along a diagonal points to the motor or pulley that drives that diagonal [1].
  • What was printing at that height. A shift that starts where an overhang, a curled corner or a tall thin feature begins is usually a collision, not a drive problem.

Symptom, likely cause, what to check

Symptom Likely cause What to check
Small repeated offsets in one direction (staircase) Motor pulley slipping on the shaft Both grub screws tight, one seated on the flat of the shaft [1]
One large offset at the height of an overhang or curled edge Nozzle hit a warped or curled feature Watch the layers below the shift; raise Z-hop or part cooling [2]
Shift on PETG with filament collecting on the nozzle Material stuck to the nozzle drags across the part Dry the filament or add a prime tower [5]
Shift after switching to a faster speed mode mid-print Speed too high for the axis resistance Lower speed; clean carbon rods on X1/P1 [5]
Shift together with a Klipper shutdown reporting ot=1(OvertempError!) Stepper driver overheating and disabling itself Lower motor current or add cooling to driver and motor [9]
Shifts on large prints in quiet mode Lower torque in stealth or stealthChop mode Prusa: use Normal mode; Klipper: spreadCycle gives more torque [1, 9]
Toolhead stops short at one end of travel Cable bundle, zip tie or debris blocking the axis Move each axis through its full range by hand [1, 5]

Ordered checks

Work from the cheapest mechanical checks to firmware settings. Power the printer off before handling belts, pulleys or wiring.

  1. Move the axes by hand. With the printer off and cold, push the head and bed through their full travel. Feel for binding, rough spots or a cable that hits the frame. Prusa’s example is filament from an earlier print caught around the belt, usually at the Y pulley, and Bambu Lab lists purge-chute debris and damaged cable chains [1, 5].
  2. Check the pulleys. Each motor pulley needs both grub screws tight, one on the flat of the motor shaft, and the pulley must line up with the idler so the belt runs straight. Prusa also suggests holding the motor shaft with pliers and pushing the carriage: any slack means a loose pulley or belt [1].
  3. Check belt tension. On the MK3 family, Prusa’s Belt Status readout targets about 250 on X and 275 on Y, within ±15; the number is inversely related to motor load, so values near 240 mean loosen and near 290 mean tighten [1]. On X1 and P1 printers, Bambu Lab’s procedure loosens the four tensioner screws, moves the toolhead so the springs set the tension, and re-tightens them, followed by a recalibration [6].
  4. Clean and lubricate the guides. Prusa recommends checking smooth rods for scratches and lubricating the bearings [1]. Bambu Lab recommends cleaning the X1/P1 carbon rods after every 5 kg of ABS or ASA and says oil or grease must not be used on those rods [7].
  5. Look for collisions. If the shift lines up with an overhang, Prusa suggests more part cooling or more Z-hop, or cutting the model to avoid the overhang [2]. In OrcaSlicer the setting is z_hop (Z-hop height), which lifts the nozzle on every retraction [8]. Curling edges are a warping problem first; for PETG sticking to the nozzle, Bambu Lab’s first suggestion is drying the filament, covered under wet filament [5].
  6. Reduce speed and acceleration. Klipper uses max_accel for most accelerating moves and lets you lower it at runtime with SET_VELOCITY_LIMIT [11]. Marlin sets print, travel and retract acceleration separately with M204 P, M204 T and M204 R [12].
  7. Check motor current and driver temperature. Klipper’s TMC guide explains that higher current gives more torque and positional accuracy but more heat, and that an overheated driver disables itself [9]. The current is run_current in each TMC section [11]. On Marlin with Trinamic drivers, M906 sets currents in milliamps and M911 reports the overtemperature pre-warning [13, 14].
  8. Confirm the fix. In Klipper, home, run GET_POSITION, run fast test moves or a print, home again and compare the mcu: values; a lost step shows up as a multiple of 4 full steps [10].

What the printer can catch on its own

Prusa MK3-series printers use the Trinamic drivers on the Einsy board to detect skipped steps from a crash, but only in Normal mode, and the thresholds are tuned for fast moves because shifts usually happen when the extruder travels quickly and hits a curled part [2]. On printers running Prusa’s Input Shaper firmware, crash detection is not compatible because of the higher accelerations [3].

Bambu Lab printers offer Auto-recovery from step loss. When a lost step is detected, the X, Y and Z axes are repositioned to where they were before the shift and the print continues. It is under Control → Print Options on the X1, Setting → Print Options on A-series, H2, P2S and X2D printers, and in Bambu Studio for the P1 series [5].

Both features recover from an event. Neither tightens a pulley, so a printer that keeps triggering them still needs the mechanical checks above.

Speed, acceleration and quiet modes

Quiet driver modes trade torque for noise. Prusa recommends Normal over Stealth mode for large or complex prints [1]. Klipper’s documentation says spreadCycle gives more torque and positional accuracy than stealthChop and recommends not switching modes while a motor is moving [9].

High acceleration is the other lever. Before raising it on a tuned printer, run input shaping calibration and review cornering settings. Prusa lists layer shifting and ghosting as effects of the same loose belts [4], so a printer showing both defects needs belt work before any ringing tuning.

Questions

Why does my printer shift layers on some prints but not others?

Geometry is the usual difference. Prusa notes that overhangs can curl upward and get hit by the nozzle, and that very low infill can cause the same collision [1]. Bambu Lab lists warped sections and filament stuck to the nozzle as collision sources [5].

Does slowing down fix layer shifts?

It can hide a marginal motion system, but it does not fix a slipping pulley or a loose belt. Prusa suggests lower speed for large objects on the MINI, and Bambu Lab ties shifts to raising speed to Ludicrous mode while carbon-rod resistance is high [1, 5].

Can Klipper tell me if steps were lost?

Yes, indirectly. The Klipper FAQ describes homing, running GET_POSITION, printing or running fast moves, homing again and comparing the mcu values; a stepper loses steps only in increments of 4 full steps [10].

Sources

  1. Layer shifting. Prusa Knowledge Base. Manufacturer documentation. Causes, belt status values, pulley grub screws, CoreXY diagonal test, print geometry. Accessed October 12, 2026.
  2. Crash detection. Prusa Knowledge Base. Manufacturer documentation. Skipped-step detection on MK3 Einsy boards, Normal mode only, Z-hop and fan advice. Accessed October 12, 2026.
  3. Input Shaper (CORE One, MK4/S, MK3.9/S, MK3.5/S, XL, MINI/+). Prusa Knowledge Base. Manufacturer documentation. Crash detection is not compatible with Input Shaper firmware. Accessed October 12, 2026.
  4. Adjusting belt tension (MK4/S, MK3.9/S, MK3.5/S, MK3/S/+). Prusa Knowledge Base. Manufacturer documentation. Loose belts cause layer shifting and ghosting. Accessed October 12, 2026.
  5. Layer Shift: Causes and Solutions. Bambu Lab Wiki. Manufacturer documentation. External interference, nozzle hitting the model, speed, Auto-recovery from step loss. Accessed October 12, 2026.
  6. X1/P1 Series Belt tensioning procedure. Bambu Lab Wiki. Manufacturer documentation. Spring tensioner procedure and recalibration afterwards. Accessed October 12, 2026.
  7. How to clean the carbon rods for Bambu Lab Printers. Bambu Lab Wiki. Manufacturer documentation. Cleaning interval after ABS/ASA, no oil or grease on X1/P1 carbon rods. Accessed October 12, 2026.
  8. Z Hop. OrcaSlicer Wiki. Slicer documentation. z_hop height and lift types. Accessed October 12, 2026.
  9. TMC drivers. Klipper documentation. Firmware documentation. Motor current trade-offs, spreadCycle vs stealthChop, overtemperature errors. Accessed October 12, 2026.
  10. Frequently Asked Questions. Klipper documentation. Firmware documentation. Checking for lost steps with GET_POSITION. Accessed October 12, 2026.
  11. Configuration reference. Klipper documentation. Firmware documentation. max_accel, SET_VELOCITY_LIMIT, TMC run_current. Accessed October 12, 2026.
  12. M204 - Set Starting Acceleration. Marlin Firmware. Firmware documentation. Print, travel and retract acceleration parameters. Accessed October 12, 2026.
  13. M906 - Stepper Motor Current. Marlin Firmware. Firmware documentation. Setting Trinamic stepper currents in mA. Accessed October 12, 2026.
  14. M911 - TMC OT Pre-Warn Condition. Marlin Firmware. Firmware documentation. Reporting TMC overtemperature pre-warning. Accessed October 12, 2026.