Consistent X/Y size difference (0.2–0.29 mm) — Bambu Lab H2S

Hello.

I’m observing a consistent dimensional difference between the X and Y axes on my Bambu Lab H2S, which becomes noticeable on larger parts.

Test case:
• Model size: 100.00 × 100.00 mm
• Material: ABS
• Shrinkage compensation: not applied
• Expected overall size: approximately 99 mm due to ABS shrinkage

Measured results (without shrinkage compensation):
• X ≈ 99.2 mm
• Y ≈ 99.0 mm
• Difference between axes: ~0.2–0.29 mm

The exact value varies slightly from print to print, but the difference itself is stable and repeatable.

If I apply shrinkage compensation to bring the part back to nominal size, the result becomes approximately
100.0 × 100.2 mm, meaning the axis-to-axis difference remains and is simply shifted to the final dimensions.

It is not clear whether the Y axis is underscaled or the X axis is overscaled — what is consistently observed is the relative difference between the two axes.

Additional observations:
• Hole radius is the same in both X and Y directions
• On shorter dimensions, the difference between X and Y is minimal or nearly absent
• The deviation appears on longer dimensions, suggesting that the error accumulates with increasing model length
• The overall dimensional deviation visible in photos is caused by ABS shrinkage and is not considered in this analysis; only the stable system-level difference between X and Y is evaluated

What I’ve checked:
• Belt tension appears normal
• No visible mechanical play
• Same behavior across different ABS filaments
• XY / dimensional compensation in the slicer is disabled

Question:
Could this stable X/Y difference on the H2S be related to axis mechanics, belt routing or elasticity, or scaling calibration?
Are there recommended calibration procedures or diagnostic test prints to verify large-scale axis accuracy?

Sorry for my English — I’m writing this with the help of a neural network.

1 Like

I have similar deviations on the X1C. I think, that is one of the drawbacks of the CoreXY gantry, which is difficult to align the axis perfectly perpendicular, which results in slightly different dimensions.

I guess on H2x, the best way to get rid of those deviations is the Vision Encoder plate.

1 Like

Maybe different shrinkage in different direction due to the infill pattern/direction?

Maybe try a large flat cylinder with spiral or concentric infill.

Do you get similar results using a filament with minimal shrinking like PLA? That lets you narrow down if this is printer / settings specific and effects all filaments or if this is from shrinking of (in your case) ABS?

If you find this is shrinking specific, one note you made makes me think -

ABS is more susceptible to shrinking/warping with temperature fluctuations, especially when cooling. It’s not uncommon for the bed temperature to be lower closer to the edges than in the middle to some extent, and so parts of the print closer to the edges will be at a lower temperature sooner than the rest of the model. Ideally this difference is small enough not to matter. There is no mention of cooling – how long are you letting the part cool down before removal? Letting it cool longer to a lower temperature before removal may be helpful, but maybe you already are letting it get quite cool?

Edit: … and in regard to shrink, I like this model for finding good shrink values for the filament profile. ShrinkingTest V4.1 by Alex_vG - Free 3D Print Model - MakerWorld

I measured a consistent X:Y ratio of 1:1.0015 on printed objects on a X1C, which I was able to correct by adding M290.2 X1.0000 Y0.9985 to the start gcode.

The same thing may or may not work on the H2S. I suggest the OP try asking support because that’s where these undocumented gcode came from.

Have you calibrated the printer using the Vision Encoder “plate” (Vision Encoder | Bambu Lab US Store)?

Run the vision encoder calibration …

  • Bi-weekly for heavy production environments (to correct for belt loosening/wear).
  • Any time you move the printer physically.
  • If you notice dimensional inaccuracies in your functional parts.

You’ll also want to keep the layer times consistent and avoid short or excessively long layer times (especially with a material like ABS that shrinks significantly).

Separately, regarding PLA:

I printed cross-shaped test parts in black PLA, oriented diagonally and placed in the same positions on the build plate.

The measured dimensions of these PLA cross parts are identical, which suggests that there is no XY skew or diagonal distortion.

This indicates:

Thanks.

From what I understand, this approach most likely does not work on the H2S, or at least it’s not documented.

I wasn’t able to find any official or reliable instructions for using axis scaling G-code (like M290/M92-style adjustments) on the H2S specifically.

So at the moment, I don’t have confirmed values or a supported way to apply this kind of correction on this model.

If there is any official documentation or recommended procedure for H2S, I’d be happy to follow it — but so far I haven’t found one.

Thanks for the clarification.

That’s unfortunate that this requires an additional tool to be purchased separately.

I already have the Vision Encoder, but it’s currently in transit and is expected to arrive on January 11.

Once it arrives, I’ll run the Vision Encoder calibration and report back with the results.

No shrinkage coefficient was applied — this model was printed without any shrinkage calculation or compensation. I understand how ABS shrinkage works and I’m not focusing on the absolute size deviation.

The printed part (red ABS) measures:
• X = 148.92 mm
• Y = 149.15 mm

This results in a stable axis-to-axis difference of ~0.23 mm.

The concern is not that the part is smaller overall (which is expected with ABS), but that one axis is consistently larger than the other.
Even if shrinkage compensation is applied



later, the part would only shift closer to nominal size, while the ~0.2 mm difference between X and Y would remain.

This consistent axis-dependent difference is what I’m trying to understand.

This cross was printed aligned normally along the X and Y axes (not at 45°).

There is a small difference between the X and Y measurements, but it is minor — depending on how it’s measured, it may be around 0.1 mm or slightly more.


So if we say that the printer will not do anything different for PLA vs ABS other than temperature and any configurable options like pressure advance / flow rate and the deviation from true is twice to almost three times (2.9, correct?) that of PLA, this would seem to point to a characteristic difference between ABS and PLA. This is where my thoughts were going in regards to the cooling of the plate since ABS can be effected by rapid cooling as well as the build plate temperature differences as you get closer to the edges. Perhaps upping the chamber temperature which would in turn make for a more extended cool-down time.

You’ve done tons of troubleshooting, I’m anxious to see what results you get after the encoder plate.

Have you considered only printing big chunky children’s toys, I think you’d find your variance totally acceptable. :grin:

Yes, that would be an incredible coincidence if I actually needed to print something like that.

I printed ABS at 65 °C chamber temperature. I also have other prints of different shapes, and they show the same 0.2 mm error. It’s incredibly frustrating.

At this point the only options left are printing diagonally, or trying again without an actively heated chamber. Although I already tried to rule out shrinkage at this scale — I kept the part on the bed for a couple of hours at 65 °C with both the chamber and the bed heated. I even tried putting it in the freezer. There was no meaningful difference.

It’s still the same damn two-tenths.

And what’s surprising is that when printed diagonally, PLA comes out accurate to within just a few hundredths of a millimeter

I also separately printed calibration models. Dimensional differences are still present, even with a shrinkage compensation factor applied. The shrinkage factor used was 99.41. The measured dimensions are approximately Y ≈ 99.98 mm and X ≈ 99.81 mm.

I am attaching the 3MF file as well as photos for reference. The overall trend of an approximately 0.2 mm dimensional discrepancy remains consistent across prints



TEST XY.3mf (34,9 КБ)

Here are samples printed at 45 degrees. There is still a difference, but it is already minor and, overall, acceptable to me. A shrinkage compensation factor was applied, although not very precisely.


Bambu Lab support reply:

“Due to the design of the chamber heating assembly and the airflow within the chamber, the XY environment is not completely uniform. As a result, slight differences in shrinkage across the build area are normal.
In chamber temperature hold mode, the heated air circulates from the bottom towards the door. Not all areas of the chamber will have identical temperatures, and some variation in shrinkage is expected. These differences are considered normal and do not indicate any malfunction of the printer.”

Honestly, this answer sounds like complete nonsense.

If the printer has non-uniform shrinkage across the XY plane and this is considered “normal”, then how exactly is the user supposed to compensate for it in a reasonable and repeatable way?
• Should I apply different scaling factors for X and Y?
• What if the shrinkage depends on the part’s position on the build plate?
• What if the same part changes dimensions simply by being moved a few centimeters?

In that case, dimensional calibration becomes meaningless, because any compensation assumes stable and uniform behavior.

Saying “this is normal” without providing a practical and actionable compensation method is not an answer.
From a user perspective, this turns precise engineering prints into guesswork.

Sounds a bit like an AI answer to me.

I can imagine a slight temperature deviation at different locations in the chamber, but not to that extend that it results in those differences.

I would just await my Vision Encoder, and see what the result is after calibration.

Yes, English is not my native language. I can understand and read it, but my grammar is basically zero.

A regular translator tends to translate things literally and mechanically, so I use ChatGPT to translate my messages instead.

The Vision Encoder is my only hope at this point — I’m waiting for it to be delivered by the 11th of this month.:grin: