Guide · 3D-printed tools

Auto bed leveling: what it fixes and what it can't

Auto bed leveling doesn't make your bed flat. It measures a bed that isn't, and adjusts around it. Those are different things, and the difference explains most of the "ABL didn't fix it" complaints.

By Christopher Ross · Annapolis Tools

An auto bed leveling (ABL) probe touches down at a grid of points across the bed and records how far each one sits from where the nozzle expects it. The firmware turns those readings into a mesh, a map of small Z corrections it applies while printing. The nozzle then follows the real shape of the plate: a little high in the middle, leaning toward one corner, whatever the bed is doing that day.

That is the whole job, and the job is compensation. The bed is no flatter after the probe runs than it was before. The printer now knows the shape and steers around it. Klipper's own documentation puts the limit plainly: software correction "can only approximate the shape of the bed."

What the mesh compensates for

Marlin describes ABL as taking several measurements of the surface and "adjusting all movement to follow the tilt or contours of the bed." Tilt and contour are two different corrections, and the firmware modes split along that line.

Either way, the correction is only as fine as the grid. Klipper requires at least three probe points along each axis, and a bump that sits between two points is invisible to the mesh. More points cost probing time and buy resolution, and that trade is yours to make per printer.

Tram first, then probe

Both firmwares treat the mesh as the second step, and I'd hold to that order. Marlin's setup page says to level the bed corners "using the 'paper method'" before beginning, and Klipper's bed leveling guide walks through the same paper test with the bed screws. The reason is range. Every bit of tilt the mesh has to absorb is correction it cannot spend on the warp, and a probe has a limited stroke. Get the corners close with the screws, so the mesh only handles what the screws cannot.

Temperature belongs in that step too. Klipper's guide says to run the paper test with the nozzle and bed at room temperature, and notes that a heated nozzle grows by "typically around a 100 microns," about the thickness of the paper. Its probe page adds that many probes have a "systemic bias" and trigger at a different height when hot, so the leveling tools should run at one consistent temperature. Pick a temperature and keep it. A mesh probed cold one day and hot the next is two meshes that disagree with each other.

Where a bad first layer is coming from instead

The trap is running the mesh again after a bad print, watching it succeed, and assuming the print is fixed. Klipper's documentation is direct about this: "Bed Mesh also cannot compensate for mechanical and electrical issues." A skewed axis or an inaccurate probe feeds the mesh bad numbers, and the mesh applies them faithfully. The table is where I'd look before probing again.

Symptoms that look like leveling, and what to check first
SymptomCheck firstWhere that comes from
First layer will not stick, even after a fresh meshThe surface. Wipe it with 90% isopropyl alcohol; if adhesion has faded over time, wash with a few drops of dish soap and warm water. For a material that will not adhere, try 5 to 10 °C more on the bed, then a slower first layer.Prusa, first layer issues
One corner is bad, the other three are fineMechanics: a loose bed mount, a binding Z screw, or a gantry that is out of square. A Z correction cannot square a frame.Klipper, bed mesh limits; the rest is general practice
Ridges, gaps or skips while the mesh looks cleanNozzle height and flow. A nozzle set too close leaves no room for the plastic to come out. Then a partial clog, then wet filament.Prusa, first layer issues; clog and moisture are general practice
The mesh reads differently every time it runsThe probe. Klipper's PROBE_ACCURACY runs it ten times; a range over 0.025 mm means the probe is not accurate enough for bed leveling. An inductive probe over a bed magnet or screw head triggers high or low; Klipper masks those spots with faulty_regions.Klipper, probe calibration and bed mesh
First layer is fine, the part lifts laterCooling, shrinkage and adhesion. The mesh stopped mattering layers ago.General practice

Two settings that undo a good mesh

Fade height. Marlin's M420 page: with fade enabled, "bed leveling correction is gradually reduced as the nozzle gets closer to the Fade height," and above it "movement is machine true." Klipper explains the point: once fade completes, the top of the print is flat instead of mirroring the shape of the bed. Both warn the same way. Klipper says fading too quickly "can result in visible artifacts," and Marlin's zero setting applies the correction to every layer, so a tall part comes out bed-shaped. Spread the fade over enough height that no single layer carries a visible step.

Leveling switched off by homing. Marlin's M420 page states that "by default G28 disables bed leveling," and that you follow homing with M420 S to turn it back on. If the start G-code homes and never sends that command, the mesh you probed is sitting in memory doing nothing. Read the start G-code before blaming the probe.

Before you re-run the mesh

  1. Is the surface clean? No oil, dust or old adhesive, washed rather than wiped if it has been a while.
  2. Is the nozzle clear of a partial clog, especially after a material change?
  3. Has the filament been dry? A print that pops and strings is a wet-filament print, whatever the mesh says.
  4. Are the corners trammed with the screws, cold, before the probe ever runs?
  5. Does the probe repeat? Run its accuracy test and read the range, not the average.
  6. Is leveling still on after homing, and is the fade height where you think it is?

If all six check out and the first layer is still uneven, the mesh deserves a second look, and that is where a known height helps. A machined puck of known thickness on the bed gives the probe something to measure against, so "probably level" becomes a number you can check. That is the idea behind the bed-level calibration puck set shown on the home page, an example part from my own bench that is not for sale yet. The same thinking runs through the tolerances guide: a number is only useful if you know how it was measured.

Takeaway

Auto bed leveling compensates for a bed that is not flat. It cannot see a dirty sheet, a loose gantry, a drifting probe or wet filament, and re-running the mesh fixes none of them. Tram the corners cold, probe at one temperature, confirm leveling is on after homing, and only then judge the mesh.

Checked against Klipper, Marlin and Prusa help pages on 2026-09-21: Klipper, Bed Mesh, Klipper, Probe calibration, Klipper, Bed leveling, Marlin, Automatic bed leveling, Marlin, M420 bed leveling state, Prusa, First layer issues.

Share this guide

Christopher Ross

Written by

I design and make these tools myself, and the guides come from that work.

More about my work here

Get notified when the newsletter launches

Leave your email and I will send a note when the newsletter starts. No spam, and you can unsubscribe in one click.