Adaptive Bed Mesh in OrcaSlicer: Setup & Probe Guide
Wiki · Bed Leveling

Adaptive bed mesh in OrcaSlicer

Adaptive bed mesh in OrcaSlicer probes only the area under your actual print instead of the whole bed — faster prep time, without giving up mesh accuracy where it matters. Below you’ll find where OrcaSlicer’s settings for this live, how it maps to firmware, and a probe-point calculator to see the time saved on your own bed size.

Firmware: Marlin, Klipper, RRF Default probe spacing: 50mm × 50mm Setting level: Printer (Advanced)

What adaptive bed mesh does

It meshes the print, not the printer’s entire bed.

A standard bed mesh probes a grid across the whole build plate, whether your model is 20mm square or fills the entire bed. Adaptive bed mesh instead calculates the area actually needed for the current print and probes just that — with margin — cutting probing time on small or off-center prints without losing mesh accuracy where the nozzle actually goes.

OrcaSlicer builds this support directly into the machine start G-code, working across Marlin, Klipper, and RepRapFirmware (RRF) — no plugins or firmware modifications required.

Where the settings live

All under Printer Settings, in Advanced mode.

Bed mesh min / max

Printer Settings → Basic Information (Advanced)
  • Variables: bed_mesh_min, bed_mesh_max
  • Sets the boundary the probe is physically able to reach

Probe point distance & mesh margin

Printer Settings → Basic Information (Advanced)
  • Probe point distance — default 50mm in X and Y
  • Mesh margin — extra clearance added around the adaptive area
Why bed mesh min/max matters: because of the probe’s own XY offset, most printers physically can’t probe the entire bed surface. OrcaSlicer keeps adaptive_bed_mesh_min/max from ever exceeding these limits — the default is (99999, 99999), meaning no limit, so set this properly if your probe can’t reach the bed edges.

Setting it up, start to finish

  1. Open Printer Settings

    Switch to Advanced mode to see the bed mesh options under Basic Information — if you haven’t set up a profile yet, start with printer selection. If the menu layout doesn’t match, check the interface guide.

  2. Set bed mesh min/max

    Match this to the area your probe can physically reach — check your printer manufacturer’s specs, or our list of 3D printers compatible with OrcaSlicer, if unsure. Some Bambu Lab and Creality machines handle adaptive meshing in their own firmware by default — see OrcaSlicer vs Bambu Studio vs Creality Print for how that compares.

  3. Set probe point distance

    50mm × 50mm is the default — smaller values mean a denser mesh but more probing time.

  4. Set mesh margin

    This expands the adaptive area a bit beyond the model’s footprint for a safer mesh.

  5. Configure firmware macros

    On Klipper specifically, set your config’s own margin to 0 and pass ADAPTIVE=0 — see the Klipper section below.

  6. Slice and verify

    Check the generated G-code calls BED_MESH_CALIBRATE (or the Marlin/RRF equivalent) with the min/max points you expect.

Probe point & time-saved calculator

Rough estimate only — actual probing speed depends on your probe type and Z-hop settings, but this shows the scale of the time saved.

Adaptive probe grid: 4 × 3 = 12 points
Full-bed probe grid: 6 × 6 = 36 points
Estimated points saved: 24 (~67%)

Estimate assumes probing time scales roughly with point count. PROBE_COUNT in Klipper is grid intersections along each axis, so a 4×3 grid means 4 columns and 3 rows of points.

How it works across firmware

FirmwareMechanism
MarlinAdaptive min/max points passed via the machine start G-code to Marlin’s own bed leveling command.
KlipperPassed to BED_MESH_CALIBRATE as mesh_min/mesh_max, with OrcaSlicer’s own margin already applied.
RepRapFirmware (RRF)Adaptive area passed to RRF’s mesh bed compensation G-code equivalent.

Setting it up with Klipper

Two things trip people up here: double-applied margins, and Klipper’s own adaptive logic fighting with OrcaSlicer’s.

BED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} \ mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} \ ALGORITHM=[bed_mesh_algo] \ PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} \ ADAPTIVE=0 ADAPTIVE_MARGIN=0

Two settings matter here: pass ADAPTIVE_MARGIN=0 because OrcaSlicer has already applied adaptive_bed_mesh_margin internally, and pass ADAPTIVE=0 so Klipper doesn’t run its own built-in adaptive mesh logic on top of OrcaSlicer’s calculated area.

Set your Klipper config margin to 0. OrcaSlicer already adjusts the adaptive bed mesh area according to its own margin setting. If your [bed_mesh] config also applies a margin, or you pass a non-zero value when calling BED_MESH_CALIBRATE, the two margins stack and the probed area ends up larger than intended.

Questions people ask about this

Does OrcaSlicer support adaptive bed mesh?

Yes — natively, across Marlin, Klipper, and RepRapFirmware, with no plugins required. The settings live under Printer Settings in Advanced mode.

Why is my bed mesh probing outside the print area?

Check bed_mesh_min/bed_mesh_max — if left at the unrestricted default, OrcaSlicer assumes the probe can reach the full bed, which isn’t true on every printer.

How many probe points does OrcaSlicer’s adaptive mesh use?

It depends on your model’s footprint, margin, and probe point distance — use the calculator above to see the exact grid for your own numbers.

Adaptive bed mesh vs. full bed mesh — which is more accurate?

Full-bed mesh probes more points overall, but adaptive mesh probes at the same density under the actual print — so accuracy where it matters is comparable, with less time spent probing area you’re not printing on.

Klipper’s own adaptive mesh vs. OrcaSlicer’s — do they conflict?

They can. Pass ADAPTIVE=0 in your BED_MESH_CALIBRATE call so Klipper doesn’t run its own adaptive logic on top of the area OrcaSlicer already calculated.

Why did my adaptive mesh area not shrink for a small print?

If there are multiple objects on the plate, the adaptive area covers all of their combined bounding box, not just one part — a small object sharing a plate with a large one won’t produce a small mesh area.

Troubleshooting

  • Probe tries to go outside the bed

    Check bed_mesh_min/bed_mesh_max match what your probe can physically reach — the default (99999, 99999) means no limit, which assumes full-bed reach.

  • Mesh area looks bigger than the model

    You’re likely double-applying margin — check for a non-zero margin in both OrcaSlicer and your Klipper [bed_mesh] config, or a non-zero ADAPTIVE_MARGIN passed in the macro.

  • Klipper ignores the adaptive area OrcaSlicer calculated

    Make sure ADAPTIVE=0 is set in the BED_MESH_CALIBRATE call — otherwise Klipper’s own adaptive mesh logic takes over instead of using OrcaSlicer’s min/max points. If the option is missing entirely, confirm you’re on a current OrcaSlicer version, or check Orca Slicer not working if the slicer itself is misbehaving.

  • Probe count exceeds what your firmware supports

    Some Marlin builds cap the number of mesh points at compile time (GRID_MAX_POINTS_X/Y). A very small probe point distance on a large adaptive area can request more points than the firmware allows — widen the spacing or raise the compiled limit.

  • Mesh looks right for single parts but wrong on multi-object plates

    Adaptive bed mesh calculates its area from the combined bounding box of everything on the plate. If objects are spread across the bed, the “adaptive” area can end up close to full-bed size anyway — this is expected, not a bug, since the mesh still has to cover every object.

  • Marlin doesn’t seem to support this at all

    Adaptive bed mesh support in Marlin depends on firmware version and compile-time options for mesh leveling. Older Marlin builds without the relevant mesh commands compiled in will ignore the adaptive min/max points entirely — check your firmware version before assuming it’s an OrcaSlicer setting issue.

  • RRF still probes close to the full bed

    If your config.g already defines a fixed mesh grid with M557, that can override what OrcaSlicer is trying to pass in. Remove or adjust any hardcoded M557 grid definition if you want RRF to follow the adaptive area.

  • Mesh results vary between otherwise identical prints

    Usually a probe repeatability issue rather than an adaptive-mesh problem — check probe deployment consistency, bed temperature at probe time (thermal expansion shifts the surface slightly), and whether the probe needs a warm-up routine before meshing. If OrcaSlicer itself crashes mid-slice while testing this, see fixing an Access Violation error.

Frequently asked questions

What is adaptive bed mesh in OrcaSlicer?

A feature that probes only the bed area under the actual print instead of the entire bed, reducing probing time while still compensating for surface irregularities.

Which firmware does OrcaSlicer’s adaptive bed mesh support?

Marlin, Klipper, and RepRapFirmware (RRF), with no additional plugins required.

What is the default probe point distance?

50mm in both X and Y by default, adjustable to trade off mesh resolution against probing time.

What margin should I use in Klipper’s own config?

Set it to 0. OrcaSlicer already applies its own mesh margin, so an additional margin in the Klipper config can double up the expansion.

What does ADAPTIVE=0 do in the Klipper macro?

It tells Klipper not to run its own built-in adaptive mesh logic, since OrcaSlicer has already calculated the mesh_min and mesh_max points to pass in.

Why does bed mesh min/max matter?

Because of the probe’s physical XY offset, most printers can’t probe the entire bed surface — setting min/max correctly stops the adaptive mesh from trying to probe outside the reachable area.

Recent insights

Latest updates across the OrcaSlicer.pro wiki and blog.