Calibrating a Delta 3D Printer: Trammel, Diagonal Rod Length, and Endstop Offsets
Delta printers are a small but stubborn minority in a market dominated by CoreXY and bed-slinger machines, and Kossel-style builds, SeeMeCNC Rostocks, and a handful of commercial deltas are still running in plenty of shops. Our kinematics explainer covers why delta's three parallel towers and diagonal rods move a nozzle the way they do, but it stops short of the question anyone who actually owns one eventually has to answer: why is the first layer thick in the middle and thin at the edges, or thin in the middle and thick at the edges, even after a dozen bed level attempts? Delta geometry calibration is a different discipline from bed-slinger or CoreXY tuning, because a single wrong number — rod length, tower radius, or a steps/mm error — distorts the entire print volume in a dome or saddle shape rather than causing a simple parallel offset. This guide walks through the calibration sequence in the order that actually fixes problems instead of chasing them in circles.
Why Delta Calibration Is Different
On a Cartesian or CoreXY machine, X, Y, and Z motion map directly to motor steps on independent axes. On a delta, every nozzle position is computed from the combined position of three towers using trigonometry — the nozzle's X/Y/Z coordinates are a function of all three tower carriage heights simultaneously. That means a single bad parameter doesn't just shift one axis; it warps the shape of the entire calculated print surface. A bed that reads "level" with a single-point check can still produce a bowl-shaped or dome-shaped first layer because the firmware's model of the printer's geometry — not the physical bed — is wrong.
The parameters that actually matter, roughly in the order you should tune them, are: endstop offsets (where each tower thinks Z=0 is), delta radius (the horizontal distance from the center of the bed to each tower's effector pivot), diagonal rod length (the physical length between the carriage and effector joints), and tower angle offsets (correcting for towers that aren't mounted at exactly 120° from each other). Steps/mm for the towers also has to be correct before any of this works, since Marlin and Klipper both assume accurate vertical tower movement as the starting point for the delta kinematics math.
Mechanical Trammel Before Touching Firmware
Before any software calibration, get the frame itself square. "Trammeling" a delta means confirming the three vertical extrusions are parallel to each other and perpendicular to the bed, and that the top and bottom triangular frame plates are true equilateral triangles with each tower at exactly 120°.
- Check tower-to-tower spacing. Measure the distance between each pair of towers at the same height on all three. On a correctly built frame all three distances should match within a millimeter or so. If one is noticeably off, the bottom or top plate is cut or assembled incorrectly, or a tower has racked under belt tension.
- Check verticality with a long level or plumb line. Each extrusion should read plumb in both the plane facing the center of the printer and the plane facing outward. A tower that leans even a degree throws off the entire kinematic model, and no amount of firmware tuning will fully correct for it — you'll just be fighting a bent mental model of a straight machine.
- Confirm belt tension is even across all three towers. Uneven belt tension causes one carriage to lag or lead the others during fast moves, which shows up as layer shift artifacts that look like ringing but only appear in certain areas of the print.
- Measure physical diagonal rod length directly. Most rod sets are sold as a matched set with ball joints already pressed on; measure center-to-center of the ball joints with calipers rather than trusting the vendor's spec, since manufacturing tolerance on these commonly runs a millimeter or more. Enter the real measured value, not the catalog number.
Any of this that's wrong physically will show up as calibration numbers that never converge, or that converge to a value far from the printer's nominal design figures. If your delta radius calibration keeps landing 8mm away from where the frame geometry says it should be, go back and recheck the mechanical trammel rather than trusting the software fit.
Endstop Offset Calibration
Endstop offsets set where each tower's carriage is when the firmware considers it "homed" — effectively, how far the nozzle sits below the physical point where the carriage triggers its endstop switch. Get this wrong and the nozzle crashes into the bed on one side while hovering too high on the other, even if every other parameter is perfect.
FirmwareParameter(s)Calibration method MarlinM666 per-tower endstop adjustments, saved with M500Home, then jog each tower individually to just touch paper-drag resistance on the bed at the center, adjust M666 X/Y/Z offsets iteratively Klipper[delta] section position_endstop, PROBE_CALIBRATE / DELTA_CALIBRATE routineAutomated: run DELTA_CALIBRATE with a probe (BLTouch or inductive) attached; Klipper probes multiple points and computes a least-squares fit for endstop offsets, delta radius, and rod length togetherIf you have a probe, Klipper's automated DELTA_CALIBRATE macro is dramatically faster and more accurate than manual paper-test tuning, because it fits all four major parameters (endstop offsets × 3, radius, rod length, and tower angle corrections) simultaneously using a proper least-squares solver instead of a human iterating by feel. If your delta has no probe, this is the single best upgrade to make before investing more time in manual calibration — a $10 inductive probe or a BLTouch pays for itself in calibration time alone.
Delta Radius and Diagonal Rod Length
Once endstops are close, the next failure mode to diagnose is bed shape: print or probe a grid across the bed and look at the pattern.
- Dome shape (center high, edges low): almost always delta radius set too large, or rod length set too short relative to the real machine. The firmware thinks the towers are farther from center (or the rods are shorter) than they really are, which pulls the calculated center position down relative to the edges.
- Saddle/bowl shape (center low, edges high): the opposite — delta radius too small or rod length too long in the firmware's model.
- Triangular distortion that isn't symmetric: usually one tower's individual angle offset or endstop is off rather than a global radius/rod error. Klipper's DELTA_CALIBRATE output will show per-tower angle corrections; large asymmetric corrections point at a mechanical trammel problem on that specific tower rather than something to paper over in firmware.
On Marlin, M665 sets delta radius (R), diagonal rod length (L), and tower angle trims (XA/YA/ZA) directly; without a probe, tuning these by hand means printing a calibration object like a flat single-layer disc, measuring where it bulges or dishes, and nudging values in small increments, reprinting, and comparing — a slow process that can take a dozen iterations. With a probe and Marlin's G33 auto-calibration (if your build enables DELTA_AUTO_CALIBRATION), the process mirrors Klipper's automated routine and converges in a few minutes.
Bed Mesh and Final Verification
After radius, rod length, and tower angles converge, run a final bed mesh (Klipper BED_MESH_CALIBRATE or Marlin's equivalent UBL/ABL mesh) to catch any remaining small-scale bed warp or build-plate unevenness that global kinematic parameters can't model. This mesh is a correction layer on top of correct kinematics, not a substitute for it — meshing over badly-calibrated delta radius just means the mesh has to apply large, uneven corrections across the bed, which shows up as visible first-layer banding even though the mesh is technically "compensating."
Print a large single-wall calibration ring or a full-bed-size single layer and inspect squish consistency from the center out to each of the three tower corners. Consistent first-layer squish across the full radius, not just the center, is the real pass/fail test — a delta that only looks good in the middle 60% of the bed still has a radius or rod length error you haven't fully chased out.
Delta calibration rewards patience more than any other common printer type: because every parameter interacts with every other one through the kinematics math, chasing a single number in isolation without first confirming mechanical trammel wastes time at every stage. Get the frame physically square and the rod length measured accurately first, lean on an automated probe-based calibration routine if your firmware supports one, and treat the final bed mesh as a fine-tuning step rather than a fix for an uncalibrated machine.