Bed mesh calibration explained: what it does and how to run it
Bed mesh calibration probes a grid of points across your build plate so the firmware can compensate for surface variation in real time, improving first-layer adhesion across the whole bed.
What is bed mesh calibration?
Bed mesh calibration is the process of probing multiple points across your printer's build plate to map its surface. No bed is perfectly flat — even a well-maintained glass or PEI sheet has slight warps, bows, and high spots. The mesh tells your printer's firmware where those variations are, so it can compensate in real time: raising or lowering the nozzle slightly as it travels, keeping a consistent gap between nozzle and surface.
Without a mesh, a printer that is trammed correctly at the corners may still have a centre bulge or edge dip that ruins first-layer adhesion across the bed. With a mesh, those variations are largely cancelled out during printing.
When do you need to run it?
Run a fresh calibration whenever:
1. You replace the build plate, spring steel sheet, or glass. 2. The printer is moved or knocked. 3. You notice inconsistent first-layer adhesion across different areas of the bed. 4. You change printing temperature significantly — PLA at 60 °C and ABS at 110 °C behave differently because the bed expands with heat, and a mesh taken cold will not match print conditions. 5. You update or reflash firmware. 6. Several weeks of heavy use have passed.
A single calibration does not last indefinitely. Temperature cycles and mechanical stress gradually shift the surface, so periodic recalibration is normal maintenance rather than a sign that something is wrong.
What you need before you start
- A printer with an automatic probe fitted — BLTouch, CR Touch, Klicky, an inductive probe, or similar. Manual mesh levelling exists but is uncommon and not covered here.
- Working firmware that supports bed mesh: Klipper, Marlin with UBL or bilinear levelling, RepRapFirmware, or the built-in calibration tools on Bambu Lab printers.
- The printer homed and at operating temperature. Always calibrate with the bed at your target printing temperature for that material. The surface expands when heated and a cold reading will not match actual print conditions.
How it works
The printer homes all three axes, then moves the probe to a grid of points — typically 3×3 to 9×9 depending on your configuration. At each point it measures the distance from probe to bed surface and records the offset. Once the full grid has been sampled, the firmware builds an interpolated surface map.
During printing, the firmware applies a real-time Z correction as the printhead moves, keeping the nozzle at a consistent distance from the actual surface rather than an assumed flat plane.
Running bed mesh calibration in Klipper
Klipper (used with Mainsail or Fluidd) is the most common firmware on which you will run mesh commands directly. The following assumes a working [bed_mesh] section in printer.cfg and a probe that has already been configured and tested.
1. Send G28 from the console or press Home All in your interface. The printer must be homed before any probing command will run. 2. Set the bed to your target printing temperature and wait for it to stabilise. For PLA this is typically 60 °C; for PETG, 70–80 °C; for ABS, 100–110 °C. Do not skip this step — a cold bed reads differently from a heated one. 3. Set the hotend to around 150 °C. This prevents oozing but softens any residue on the nozzle tip that could affect probe trigger height. 4. In the console, type BED_MESH_CALIBRATE. The printer will probe every point in your configured grid. This takes one to five minutes depending on grid size and travel speed. 5. Once probing completes, type SAVE_CONFIG. Klipper writes the mesh data to printer.cfg and the printer restarts. 6. After restart, open the Bed Mesh visualiser in Mainsail or Fluidd. A healthy mesh shows variation of no more than roughly ±0.3 mm on a reasonably flat bed. Larger deviation suggests a warped surface or a mechanical issue worth investigating before printing.
Running bed mesh calibration in Marlin
1. Home the printer with G28. 2. Heat the bed and nozzle as described above. 3. Send G29 to begin probing. On printers with UBL (Unified Bed Levelling), the full sequence is G29 P1 to probe, G29 P3 to fill any unprobed points algorithmically, then G29 S1 to save the mesh to slot 1. 4. Save to EEPROM with M500. Without this step the mesh is lost on power-off. 5. Add M420 S1 to your slicer's start G-code, after the G28 home command, to load the mesh before each print. Some printers load it automatically; many do not, and omitting this line means printing without the mesh.
Running bed mesh calibration on Bambu Lab printers
Bambu Lab printers (X1, X1C, P1S, P1P, A1, A1 Mini) handle bed levelling automatically through their proprietary firmware. The X1 series uses a Micro Lidar sensor; the P and A series use an inductive probe. You do not run manual mesh commands on these machines.
1. In Bambu Studio or on the touchscreen, navigate to Calibration. 2. Select Full calibration rather than quick calibration. This covers bed levelling, vibration compensation, and flow rate calibration. 3. Allow 10–20 minutes for the full process to complete. 4. For day-to-day printing, the printer runs a fast auto-level before each print by default. There is rarely a good reason to disable this.
If first-layer problems persist on a Bambu machine after a full calibration, the cause is more likely to be a worn or damaged PEI plate, an incorrect Z offset, or a nozzle issue rather than the mesh itself.
Common problems and what they indicate
Large central bulge or dip (more than 0.5 mm peak-to-valley): The bed itself may be warped. Glass and PEI steel sheets do warp over time, particularly under repeated high temperatures. A replacement build plate is often the correct fix rather than trying to work around the deviation in software.
Probe triggers inconsistently — errors mid-calibration: Check that the probe is mounted rigidly and that wiring is secure. A loose mount allows the trigger height to vary between samples, producing a noisy or unusable mesh. On BLTouch units, a bent or worn pin is a common culprit.
First layer still inconsistent after calibration: Confirm the mesh is actually being loaded before printing. In Marlin, M420 S1 must appear in your start G-code after G28. In Klipper, check that your print-start macro includes a BED_MESH_PROFILE LOAD=default or equivalent command.
Nozzle crashes or sits too far from the bed despite a good-looking mesh: The mesh compensates for surface variation but does not set your overall Z offset. Z offset — the distance from the probe trigger point to the nozzle tip — is a separate value that must be calibrated correctly before the mesh makes sense. If Z offset is wrong, the mesh shifts everything in the wrong direction.
A note on warranty
Running calibration commands does not void your warranty. Editing configuration files or flashing custom firmware may affect your warranty position, depending on the manufacturer. Creality supplies Klipper on several models as standard, so using it is fine on those machines. On Bambu Lab printers, the firmware is proprietary and closed; the supported route is the calibration tools provided in Bambu Studio. If you are unsure about your specific model, check the manufacturer's documentation before making changes to firmware or configuration.
When to mail it in
If bed mesh calibration is not resolving your first-layer problems — or if the calibration process itself is throwing errors, crashing the nozzle, or producing a mesh that looks wildly wrong — there is likely an underlying hardware fault. Common causes include a faulty or failing probe, a damaged mainboard, bent Z-axis components, or a severely warped bed. These are straightforward repairs in a workshop setting. Hark Tech offers mail-in 3D printer diagnostics and repair for a range of FDM machines. Send a description of the fault via our contact page and we will advise on likely causes and a quote, usually within a few working days.