3D Printer Bed Mesh Leveling: Probe Types, Mesh Density, and Fade Height Configuration — 2026 Guide

Your printer’s bed isn’t flat. Even a cast aluminum bed on a $1000 printer deviates 0.05-0.15mm across its surface. Bed mesh leveling maps those deviations and compensates in software. But a poorly configured mesh is worse than no mesh at all. Here’s how to set it up correctly.

Probe Types: Inductive vs BLTouch vs CR Touch vs Strain Gauge

Inductive Probes (PL-08N, LJ12A3-4-Z/BX)

Detect metal through electromagnetic induction. Work with metal build plates only — useless on glass or PEI-on-glass. Accuracy: ±0.02mm repeatability after thermal stabilization. Drawback: temperature drift. As the probe heats up from the bed, the sensing distance changes by 0.01-0.03mm. Run the probe routine after the bed has been at temperature for 5 minutes, not cold. Cost: $5-10. Best for: budget builds with bare aluminum or magnetic spring steel beds.

BLTouch / CR Touch

Physical contact probe — deploys a plastic pin, touches the bed, retracts. Works on any surface: glass, PEI, BuildTak, bare metal. Accuracy: ±0.005mm repeatability. The gold standard for consistency. Drawback: mechanical complexity — the pin mechanism can jam if debris accumulates. Periodic cleaning with isopropyl alcohol prevents this. Cost: $35-45. Best for: any printer where consistent first layers matter.

Strain Gauge (Prusa, Voron Tap)

Measures force on the nozzle tip directly. No offset between probe and nozzle — the nozzle IS the probe. Accuracy: ±0.002mm. Eliminates z-offset drift because there’s no physical offset to calibrate. Drawback: requires a rigid toolhead mount — flexible hotend mounts dampen the force signal. Cost: $20-50 in parts. Best for: high-end builds where every micron counts.

Mesh Density: How Many Points

A 3×3 mesh (9 points) interpolates between measurements. On a 235x235mm bed, each point covers a 78x78mm zone. A 0.15mm dip between two measured points is invisible to the mesh — the printer assumes the surface is flat between points.

A 5×5 mesh (25 points) provides 47x47mm coverage per point. This catches mid-scale warps that 3×3 misses. For most printers, 5×5 is the sweet spot — good enough to detect typical bed warping without taking 5 minutes to probe.

7×7 (49 points) and higher densities matter for large beds (300x300mm+) or beds with known complex warping (high spots near the heater, low spots in corners). The probing time scales linearly — a 10×10 grid on a 350mm bed takes 3-4 minutes. Use UBL (Unified Bed Leveling) in Marlin to store a high-density mesh once, then tilt-adjust with 3 points before each print.

Fade Height

Mesh compensation doesn’t need to run for the entire print. After a few layers, the plastic above fills in any remaining deviation. Fade height tells the firmware to gradually reduce compensation from 100% at Z=0 to 0% at the configured height.

Set fade height to 5-10mm for most prints. At 10mm (50 layers at 0.2mm), the compensation smoothly reduces to zero. Too low (2-3mm) causes an abrupt transition — visible as a horizontal line in the print wall. Too high (20mm+) wastes CPU cycles and can interact with other compensation (input shaping) on Klipper machines.

Zero fade height means the mesh compensates forever. On tall prints (150mm+), this can cause the Z-axis to oscillate slightly as the firmware chases a 0.02mm deviation that’s no longer mechanically relevant. Always set a fade height.

Bed Mesh Quick Reference

Firmware Probe Type Recommended Mesh Fade Height Command
Marlin BLTouch 5×5, bilinear 10mm G29 (auto) or M420 S1 (load saved)
Marlin Inductive 5×5, bilinear 10mm G29 after 5min heat soak
Marlin UBL 10×10 (once), 3-point tilt 10mm G29 P1 (save), G29 P3 (fill), G29 A (activate)
Klipper BLTouch 5×5, Lagrange 5mm BED_MESH_CALIBRATE
Klipper Strain Gauge 7×7, Lagrange 5mm BED_MESH_CALIBRATE

Common Mistakes & How to Avoid Them

Mistake 1: Setting z-offset before running the bed mesh. The probe measures relative to its trigger point. If you set z-offset cold and then probe while hot, thermal expansion shifts everything by 0.05-0.10mm. Consequence: the nozzle drags on one side and floats on the other — exactly what the mesh was supposed to prevent. Fix: Heat the bed to printing temperature, wait 5 minutes, probe the mesh, THEN set z-offset with a live-adjust print.

Mistake 2: Saving the mesh and never re-probing. Bed geometry changes over time. Removing prints flexes the build plate. Temperature cycling slowly warps aluminum beds. After 50-100 print hours, your saved mesh is 0.05-0.10mm wrong. Consequence: first-layer adhesion degrades gradually and you spend hours troubleshooting filament and temperature settings instead. Fix: Re-probe every 20-30 prints, or add G29 to your start G-code for automatic probing before every print.

Mistake 3: Running UBL tilt-adjust on a dirty nozzle. UBL tilt adjustment probes 3 points and calculates the plane of the bed. If the nozzle has a blob of plastic on the tip, all three probe points are offset by 0.1mm — the tilt calculation is garbage. Consequence: the entire mesh is shifted by a constant offset, producing either a smashed first layer or zero adhesion. Fix: Heat the nozzle to 160°C, wipe it clean with a brass brush, then run tilt-adjust at full printing temperature.

Mistake 4: Not including M420 S1 in start G-code. Marlin disables the saved mesh on G28 (home). If your start G-code runs G28 after M420 S1, the mesh is loaded then immediately cleared. Consequence: printer acts as if no mesh exists. The first layer fails on one side of the bed. Fix: Place M420 S1 AFTER G28 in your start G-code. Or use the RESTORE_LEVELING_AFTER_G28 option in Configuration.h.

⚠️ Safety Notice: Bed probing involves physical contact between the probe/nozzle and the build surface. Verify your printer’s endstop and probe operate reliably before automated probing. A failed probe trigger can crash the nozzle into the bed, damaging both. As of 2026, Klipper’s probe accuracy validation (samples_tolerance) and Marlin’s multiple probing options provide protection — always enable at least 2-probe verification for each mesh point.

For getting the first layer right after your mesh is dialed in, see our first layer calibration guide. If you’re fighting Z-axis issues, our Z-wobble fix guide covers mechanical corrections.

The uavmodel BLTouch kit includes an extended wiring harness and pre-configured Marlin firmware for Creality and BTT boards — install in 20 minutes and start printing with mesh-leveled first layers.

Leave a Comment

Scroll to Top