3D Printer Skew Correction Calculator

Enter the three measurements from a skew calibration print to calculate the signed correction factor, angular error, and firmware command for XY, XZ, or YZ skew.

Your numbers
Choose the plane represented by the printed calibration object and its three measurements.
Select the firmware syntax to use for the generated correction command.
Measure from calibration-object corner A to corner C using the model reference points.
Measure the opposite diagonal from corner B to corner D without changing caliper technique.
Measure side AD between the model's defined endpoints, excluding any corner flats.
Enter the estimated plus-or-minus uncertainty of each measurement.

What this calculator leaves out

  • Software compensation does not repair a loose, racked, or out-of-square frame, gantry, belt path, or Z-axis assembly.
  • The result depends on the calibration model corner definitions and on consistent measurements; ordinary cube diagonals may not use the same labeled geometry.
  • Thermal shrinkage, axis scale error, backlash, and nonlinear distortion are separate issues and are not corrected by this calculation.

By using this calculator you agree to the Terms of Use. Results are estimates, not professional advice.

Skew correction factor-0.02

Angular error (degrees)
-0.97
Inferred adjacent side (mm)
100.46
Signed corner displacement (mm)
-1.69
Uncertainty range
Factor -0.017657 to -0.016244; angle -1.0116 degrees to -0.9306 degrees.
Measurement verdict
All valid uncertainty endpoints stay negative, so the measured skew direction is resolved as negative.
Firmware command
SET_SKEW XY=140.4,142.8,99.8

Print and measure the calibration object with any existing skew compensation disabled.

Follow the calibration model corner labels; swapping AC and BD reverses the sign of this correction.

How to use this calculator

  1. Disable existing skew compensation, then print a labeled skew calibration object in the plane you want to correct.
  2. Measure AC, BD, and AD from the model reference points using the same caliper technique each time.
  3. Choose Klipper or Marlin so the command row uses the right syntax for your firmware.
  4. Enter your estimated measurement uncertainty to see whether the skew direction is clear.
  5. Reprint and remeasure after applying the correction instead of stacking corrections from one old print.

How the skew factor is calculated

This calculator uses the same three-measurement geometry documented for Klipper skew correction and the same correction-factor convention used by Marlin bed skew compensation. The calibration print supplies two diagonals, AC and BD, plus the reference side AD. From those three values the missing adjacent side is inferred first:

s = sqrt(2 * AC^2 + 2 * BD^2 - 4 * AD^2) / 2

The cosine term for the measured corner angle is then:

c = (AC^2 - s^2 - AD^2) / (2 * s * AD)

The firmware correction factor is:

f = tan(pi / 2 - arccos(c))

The signed angular error shown by the calculator is atan(f) * 180 / pi. The signed corner displacement is f * AD, which expresses the same skew as a lateral offset over the measured AD span. A factor near zero means the two diagonals agree closely for the labeled geometry.

Plane and firmware output

For Klipper, the command keeps the raw measurements because SET_SKEW calculates and stores the factor internally. The output is shaped as SET_SKEW XY=AC,BD,AD, or the same pattern for XZ or YZ. For Marlin, M852 receives the calculated factor directly: I for XY, J for XZ, and K for YZ.

What moves the answer most

The difference between the two diagonals controls the sign and size of the correction. Swapping AC and BD reverses the sign, so the corner labels on the calibration model matter. The uncertainty range recomputes the factor at every plus-or-minus combination of AC, BD, and AD. If that interval crosses zero, the apparent skew is small enough that measurement error could explain the sign.

What this calculator leaves out

Software skew correction does not square the frame, gantry, belt path, or Z assembly. It also does not fix axis scale error, thermal shrinkage, backlash, loose motion parts, or nonlinear distortion. Use the result after the printer is mechanically sound, keep the test print free of old skew compensation, and confirm with a fresh calibration print.

Worked example

With the default XY measurements from Klipper's example, AC is 140.4 mm, BD is 142.8 mm, and AD is 99.8 mm. The inferred adjacent side is 100.459 mm. The correction factor is -0.016951, the signed angular error is -0.9711 degrees, and the corner displacement over AD is -1.692 mm.

With 0.05 mm measurement uncertainty, the sensitivity range is factor -0.017657 to -0.016244 and angle -1.0116 degrees to -0.9306 degrees. Because the whole interval stays negative, the measured skew direction is resolved by these measurements. For Klipper, the command is SET_SKEW XY=140.4,142.8,99.8.

Common questions

How do I measure AC, BD, and AD on a skew calibration print?

Use the corner reference points defined by the calibration model, not the outside of any corner flat unless the model says to. Measure AC, BD, and AD with the same caliper pressure and jaw placement, and keep the print free of old skew compensation while making the test object.

Which diagonal is AC and which is BD?

Use the labels from the skew calibration model. The math is signed, so entering the two diagonals backward reverses the correction direction. If the model is oriented for Klipper, corner A is normally placed toward the origin of the selected plane.

Should I correct printer skew mechanically or in firmware?

Fix obvious mechanical problems first. A racked frame, loose gantry, belt mismatch, or tilted Z assembly can create other errors that firmware skew compensation cannot remove. Software correction is best for small remaining squareness errors after the machine is mechanically stable.

How do I use SET_SKEW and save a Klipper skew profile?

Send the generated SET_SKEW command for the plane you measured, then print and measure again to verify the result. Klipper can save a named skew profile with SKEW_PROFILE SAVE, followed by SAVE_CONFIG when prompted by the firmware.

Which M852 parameter corresponds to XY, XZ, and YZ?

Marlin uses I for XY skew, J for XZ skew, and K for YZ skew. The older S parameter is an alias for I when only XY skew correction is enabled, so this calculator uses I, J, or K explicitly.

What is the difference between skew, dimensional scaling, and filament shrinkage?

Skew is a squareness error: axes are not at a true right angle. Dimensional scaling is a length error along an axis, and filament shrinkage is material behavior after printing. A skew factor can square the coordinate system, but it does not replace steps/mm, rotation distance, extrusion, or material calibration.

Put this calculator on your site

Paste the snippet below where you want the calculator to appear. It stays up to date automatically and links back here.

<iframe src="https://countfolk.com/embed/3d-printer-skew-correction-calculator/" title="3D Printer Skew Correction Calculator" width="100%" height="640" style="border:0;max-width:44rem" loading="lazy"></iframe>