Z-banding versus layer-time lines: sorting Z hardware from slicer and heater causes
Short answer
Not every horizontal line is Z-banding. Prusa traces the single line on a Benchy hull to a sudden change in layer time and cooling, not to belts or lead screws [2], and Bambu Lab lists cross-section changes, flow changes, a loose hotend and variable layer height as common line sources [1]. Bands that repeat at a regular height interval point to the Z drive or to temperature cycling, which Klipper and Marlin document as watermark or bang-bang bed control versus PID [7, 11].
Z-banding is the name usually given to horizontal ridges or stripes that wrap around a print at certain heights. The useful first question is whether the bands are regular. Prusa’s article on the Benchy hull line separates a single line at one height, which it attributes to slicing and physics, from uneven layers top to bottom, which it says is most likely a hardware problem [2]. Bambu Lab’s layer-lines guide adds several causes that are neither [1].
Sort the pattern first
- One line at a change in cross-section. On the Benchy this is around 8 mm, where sparse infill turns into the solid deck and the time per layer changes abruptly. Prusa lists the filament’s thermal expansion, print cooling, the room and filament dryness as factors, and calls loose belts, bent Z rods and lead screw irregularities incorrect explanations for this line [2]. Bambu Lab sees the same on boxes and traces it to shrinkage stress where bridging meets the outer wall [1].
- Lines right after bridges or other slow sections. Bambu Lab attributes these to rapid flow changes that leave bulges or dents [1].
- Random, irregular lines. Bambu Lab lists a loose hotend, abrupt variable layer height transitions and filament with poor diameter consistency [1].
- Bands at a regular spacing over the whole height. This is the case that points to the Z drive or to cyclic temperature changes, covered in the sections below.
Measure the spacing between bands with calipers over ten or more bands and divide; a constant spacing is the strongest clue you will get.
Symptom, likely cause, what to check
| Symptom | Likely cause | What to check |
|---|---|---|
| Single line where infill turns into a solid top or floor | Layer-time and cooling change | Modifier or geometry changes, lower overhang fan speed [2, 1] |
| Lines on walls printed right after a bridge | Flow-rate change between bridge and wall | Flow Dynamics calibration, smoother speed transitions [1] |
| Random lines, nozzle assembly moves by hand | Loose hotend or nozzle | Hotend clip, magnet or fastening screws [1] |
| Lines that match variable layer height steps | Abrupt layer height transitions | Smooth mode for variable layer height [1] |
| Random over- and under-extruded bands | Filament diameter variation | Try another spool; Bambu Lab cites 1.75 ± 0.02 mm [1] |
| Regular bands; lead screw moves up and down by hand | Loose Z timing pulley or other play in the screw drive | Z pulley and screw fixings [3] |
| Regular bands that change with lubrication or cleaning | Dry or dirty lead screw | Clean and grease the screws [4, 5] |
| Regular bands; bed temperature swings in a cycle | Bang-bang or watermark bed control | PID bed control and tuning [9, 11] |
Slicer and process causes
Bambu Lab’s fixes for cross-section lines start with the model: inner fillets or chamfers so the bridging layer no longer touches the outer wall. In the slicer, it suggests a lower overhang fan speed, Gyroid or Concentric sparse infill with the infill/wall overlap reduced from 15% to −10%, and printing several parts at once to lengthen layer time [1]. Prusa’s own workaround for the Benchy used a modifier mesh, changed the print order inside the layer and printed perimeters two layers at a time [2].
For flow-change lines, Bambu Lab recommends Flow Dynamics Calibration, enabling Smooth Speed for Discontinuity Area with a lower smoothing coefficient such as 0.1, or matching the outer wall speed to the bridge speed [1]. On other printers the equivalent calibration is pressure advance. If the bands look like local starvation, check under-extrusion causes before touching the Z axis.
The Z drive: screws, nuts and pulleys
When the bands are regular, inspect the parts that turn motor rotation into bed or gantry height.
- Pulleys and couplings. Bambu Lab’s X1 guide describes a loose Z timing pulley that lets the screw rod move in the Z direction; the fix re-locks the pulley, re-tensions the Z belt and, if the belt slipped, re-synchronizes the three Z sliders [3]. On printers with a separate coupler between motor and screw, check its set screws the same way.
- Lubrication. Prusa recommends lubricating the XL’s Z leadscrews after about 500 hours of printing [4]. Bambu Lab’s H2 guide uses grease on the lead screws and oil on the linear rods, warns not to mix them up, and calls for maintenance when the printer prompts, the axes look dirty or they make unusual sounds [5].
- Compare spacing with screw lead. Klipper’s
rotation_distancefor a lead screw is the screw pitch times the number of thread starts, so the common T8 screw moves 8 mm per motor turn [6]. Bands spaced at that distance repeat once per screw turn, which points at the screw, nut or coupling rather than at the slicer.
Layer height and full steps
A 1.8° stepper has 200 full steps per rotation [6], so a T8 screw advances 8 / 200 = 0.04 mm per full step. Layer heights of 0.12, 0.16 or 0.20 mm are whole multiples of that distance; 0.10 or 0.15 mm are not.
Klipper is the only firmware reviewed here that documents a related option. In an [endstop_phase stepper_z] section, endstop_align_zero: True moves the Z zero to a full step, and the reference notes that when the layer height is a multiple of the full-step distance, every layer then lands on a full step [7]. The endstop phase feature relies on reading the stepper phase, which Klipper can query from Trinamic drivers in run-time configuration mode (other drivers only if they can be reset reliably), and it is not valid with a probe:z_virtual_endstop Z endstop [8]. None of the Prusa, Marlin or Bambu Lab pages reviewed here discusses layer height in relation to full steps. The rotation distance calculator gives the per-step distance for other screws and motors.
Bed heater control: bang-bang or watermark versus PID
Klipper heaters use either pid or watermark control. With watermark, the heater switches off at max_delta above the target and back on at max_delta below it, 2 °C by default [7]. Klipper recommends PID for a bed that can be driven by PWM and gives PID_CALIBRATE HEATER=heater_bed TARGET=60 as a typical tuning command [9].
In Marlin, bed PID is the PIDTEMPBED option, shown disabled in the documented configuration. Without it the bed uses bang-bang control, checked every BED_CHECK_INTERVAL (5000 ms in the example), with an optional BED_HYSTERESIS band of 2 °C [11]. In its hotend section the same page describes bang-bang as the heater being fully on or fully off for long periods, and PID as superior for holding a stable temperature in most cases [11]. Tune the bed with M303 E-1, for example M303 E-1 C8 S60, set the values with M304, and save them with M500 [12, 13].
None of these documents links bed heater cycling to banding directly; they document how each mode holds temperature. To test the idea on your printer, log the bed temperature during a print. If it swings in a regular cycle and the band spacing matches the height printed during one cycle, switching to tuned PID control is the documented way to steady it.
Order of checks
- Measure band spacing and decide: single line, random, or regular.
- For single lines, change geometry, cooling or layer-time settings.
- For random lines, check the hotend mounting, variable layer height and the filament.
- For regular bands, compare the spacing with the screw’s rotation distance, then inspect pulleys, couplings and nuts and clean and grease the screws.
- Check bed temperature stability and move to PID control if the hardware supports it.
- On Klipper with suitable drivers, consider full-step layer heights with
endstop_align_zero.
If the stripes follow corners rather than height, the defect is ringing, not banding.
Questions
Is Z-banding the same as ringing?
No. Ringing is a ripple that follows sharp corners along the wall, caused by vibration after direction changes [10]. Banding runs around the whole part at particular heights.
Can variable layer height cause bands?
Yes. Bambu Lab shows lines that match layer height changes exactly and recommends the Smooth mode of variable layer height in Bambu Studio for gradual transitions [1].
Should the heated bed use PID control?
Klipper recommends PID for a bed heater that can be driven by PWM, but notes that PID may switch the heater about ten times a second, which may not suit a heater on a mechanical switch [9]. Marlin's documentation advises verifying the bed hardware before enabling PIDTEMPBED [11].
Sources
- Troubleshooting and Solutions for 3D Printing Layer Lines. Bambu Lab Wiki. Manufacturer documentation. Cross-section, warping, flow-change, loose hotend, variable layer height and filament diameter causes. Accessed October 12, 2026.
- The Benchy hull line. Prusa Knowledge Base. Manufacturer documentation. Layer-time transition as cause of a single line; factors and G-code workarounds. Accessed October 12, 2026.
- Solutions for Z-axis screw rods looseness and Z sliders misalignment. Bambu Lab Wiki. Manufacturer documentation. Loose Z timing pulley lets the screw rod move in Z; slider sync. Accessed October 12, 2026.
- Regular printer maintenance (XL). Prusa Knowledge Base. Manufacturer documentation. Lubricate Z leadscrews after about 500 print hours; tool-changer cleaning for banding. Accessed October 12, 2026.
- H2 series XYZ axis and extruder lifting rail Maintenance Guide. Bambu Lab Wiki. Manufacturer documentation. Grease on Z lead screws, oil on linear rods, when to maintain. Accessed October 12, 2026.
- Rotation distance. Klipper documentation. Firmware documentation. Lead screw rotation_distance and full steps per rotation. Accessed October 12, 2026.
- Configuration reference. Klipper documentation. Firmware documentation. endstop_align_zero; heater control pid or watermark; max_delta. Accessed October 12, 2026.
- Endstop phase. Klipper documentation. Firmware documentation. Stepper phase adjusted endstops and their requirements. Accessed October 12, 2026.
- Configuration checks. Klipper documentation. Firmware documentation. PID calibration for extruder and bed; PID_CALIBRATE example. Accessed October 12, 2026.
- Resonance Compensation. Klipper documentation. Firmware documentation. Definition of ringing for comparison. Accessed October 12, 2026.
- Configuring Marlin. Marlin Firmware. Firmware documentation. PIDTEMP and PIDTEMPBED, bang-bang bed heating, BED_HYSTERESIS. Accessed October 12, 2026.
- M303 - PID autotune. Marlin Firmware. Firmware documentation. Bed autotune with E-1. Accessed October 12, 2026.
- M304 - Set Bed PID. Marlin Firmware. Firmware documentation. Bed PID values; requires PIDTEMPBED. Accessed October 12, 2026.