XYZ 20mm Calibration Cube

by iDig3Dprinting, published

XYZ 20mm Calibration Cube by iDig3Dprinting Jan 19, 2016
492 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps

Liked By

View All

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

427073Views 211581Downloads Found in 3D Printing Tests


This is a simple calibration test cube for your 3D printer with X, Y & Z written on the axis.

To further calibrate your 3D printer print one out and you can then measure this models dimensions against the expected dimensions.

Once this is done you are able, if your 3D printer allows it, to adjust your Steps per mm in your printers firmware.

e= expected dimension
o = observed dimension
s = current number of steps per mm


(e/o) x s = your new number of steps per mm

In part though this is the result of a guide on how to make your own 3D printer calibration cube using Freecad ( https://www.idig3dprinting.co.uk/news/how-to-guides/create-a-3d-printer-calibration-cube-in-freecad/ )

So why not have a go at making your own!

Print Settings

Printer Brand:



Prusa i3 rework









How I Designed This

Designed using this guide

If you want to know how we designed it then please take a look at our post on the subject. All the information is there so that you can design your own ( https://www.idig3dprinting.co.uk/news/how-to-guides/create-a-3d-printer-calibration-cube-in-freecad/ )

More from 3D Printing Tests

view more

All Apps

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

Treatstock is an online platform that offers decentralized manufacturing services such as 3D printing and CNC machining for clients all over the world. We offer free and instant access to comparati...

App Info Launch App

3D print your favourite design with NinjaPrototype, a professional 3D manufacture with consistent quality and speed.

App Info Launch App
Comments deleted.

hy! which one softver use it to this work? slicer? or what?

Well designed and very handy for calibration. Thanks a lot!

I am fairly new to 3D Printing and did lots of research to see how I could optimize my printer to print at it's best. One area is proper calibration of the XYZ steps/mm to ensure more accurate prints. I came across this calibration cube but could not find an easy step by step process all in one place that showed me all of the steps. I summarized what I found below. I hope this helps you. Also, if anyone sees an error in my instructions, please point it out and I will make corrections.

  1. This printed cube should be ideally 20.00mm X 20.00mm X 20.00mm
  2. After you successfully print your XYZ calibration cube, measure it.
    To measure "X", measure from left to right along the face of the "X" (width). Record that value. For me it was 20.00.
    To measure "Y", measure from left to right along the face of the "Y" (depth). Record the value. For me it was was 20.28.
    To measure the "Z", measure from the bottom (blank) up to the "Z" face (height). Record the value. For me it was 19.93.
  3. If you have not already, you will need to download a program to interface directly with your printer in order to adjust your XYZ steps/mm. For my MonoPrice Select Mini, I connect via USB and use pronterface. Lots of helpful videos and guides on the internet on how to use this program.
    (1) launch Pronterface.exe
    (2) Connect your printer via USB to your PC.
    (3) Click the "connect" button (on your PC in the pronterface interface) and it should connect your printer to the interface (you should see confirmation on the RH box.
    (4) On the command line (lower RH text box), type "M503"
    (5) Look for "M92 ...." this will show you your current X, Y, Z, and E steps/mm
    For example, mine was set "M92 X93.00 Y93.00 Z1097.5 E97.00"
    6) I then used the ratio formula to determine my 'should be' steps/mm.
    New X = (20/20) 93.00 = 93.00 (no adjustment needed)
    New Y = (20/20.28)
    93.00 = 91.72
    New Z = (20/19.93) * 1097.5 = 1101.35
  4. To change the M92 values in pronterface you will use the M92 Gcode. In my case, I typed M92 X93.00 Y91.72 Z1101.35
  5. To confirm the values, type M503 and check M92
  6. If it is correct, type M500 to save the values to the EEPROM
  7. Disconnect from printer in pronterface (click "disconnect" button) and power your printer off for a couple of seconds.
  8. Power on your printer and click "connect" in pronterface to reconnect.
  9. Type M503 command and verify the M92 values are perminently changed.
  10. Reprint cube and see how well this worked.
  11. My new cube measured X=20.00mm, Y=20.02, Z=20.00

That’s a good guide! Thank you!

Much thanks for writing this up. I had no idea how to finely calibrate my CR-10 and this did the trick!

Thx again.

Thanks for the write-up. I followed the instructions and it worked great. I would suggest just a couple of edits though; in step 3.6 you need to edit the New X and New Y to include a multiplication symbol.

i came across this while trying to get my printer working maybe someone can help with my problem, using crealitycr10s. I do the donload onto cura save g code to SD put SDinto printer it goes through motions of heating up gets to heat then nothing just one little movement on home the screen shows 000 on gcode XYZ what am I doing wrong ? do I somehow need to calibrate the XYZ somewhere I'm not looking

Hi guys, I’m getting started on 3D printing and I’ve been struggling to get to the perfect cube. I’m using a modified Ord Bot Hadron with E3D Titan Extruder and an E3D V6 Hotend (a Bowden hotend being used as direct, adapted with PTFE tube). I’m printing with PLA, on kapton polymide film. I don’t have a fan for the print. Slic3r settings are the following:

Layer height: 0.2
First layer height: 0.3
Infill: 30%, rectilinear
Print speed: 20
Extrusion multiplier: 1.1
Nozzle temperature: 215
Nozzle diameter: 0.4
Bed temperature: 50

We can notice a little warping and the X, Y and the corners are ugly. I also noticed sometimes the infill is faulty, missing some filament. What could be causing these problems? Any help would be very much appreciated.

I am using 1.75mm PLA filament from Hatchbox

This is my first attempt at 3D printing. I put together a PRUSA REPRAP GURU i3 kit.
I used the settings given in the RepRap Guru configuration manual for the printer in the Repetier-Host software.

I tried two prints. Both times, when the layer reached around the top of the "Y" (around layer 80) the cube came unstuck from the bed and messed up the print. The bed is heated to temperature 70C. How does one ensure that the part stays stuck to the bed? Should I clean the glass with alcohol before printing?

I just built a printer myself. I found that my live z adjust wasn't low enough so the plastic was not 'squishing' to the bed well and thus would come unstuck. That could be the same issue you're having.

Comments deleted.

Hi to all,
I am new to 3d printing and I have purchased an anet a8 to begin. After 10 days of building, reading, and printing some upgrades like front frame brace, linear bushings for x and y-axis(originals was like they have gravel inside from the noise), and belt tensioners (for both x and z-axis), and some 3d models for fun, I decided to print this test cube to see what happens. I have printed the famous 3d benchy and the results ware well (the dimensions was relatively accurate). The calibration cube dimensions were 20mm (with an analog caliper) in all axis. Can someone see the photos and tell me if I need to calibrate or adjust something else.

Thank you very much in advance, and many thanks to the creator of the cube.

I forgot to mention that the
layer height was 0.1 ,
shell thickness 1.6,
print speed 50,
temperature 200,
bed temperature 50,
nozzle 0.4,
travel speed 150,
and retraction was enabled.

All settings with Cura 14.07.

Looks great. You do have some "ghosting" beside the "X" and "Y" letters. This is caused by the print head oscillating after a sharp move. If lower the print speed, you can usually eliminate them. Also looks like you're under extruding on the top layers. Make sure you're measuring the actually diameter of the filament and not just entering the sold size.

Happy printing

Thank you very much! I will fix those and try again to see if comes out better.

Comments deleted.

Regarding measuring this..

If you have the face marked as X facing you, with Z on top, you would measure from left to right across X to get the measurement for the x axis.
Same with Y.
For the Z axis, you will have the letter Z on one side of your caliper and clamping against the opposite side (the bottom). This is contrary to how you measure the other two axes.

Someone please correct me if I'm wrong. I just had a debate with a friend about something I find so simple or obvious.

Yeah, you're right. With X looking at you, Y on the right, and Z facing the ceiling; X-axis is left to right, Y-axis is front to back, and Z-Axis is top to bottom. Just like when you move those axes manually.

My X and Y are a bit of center.
I am very happy with te result of my first print.

The Y is off center in the STL file so dont worry about it.

I did not measure the X but I bet its the same...

centering these has no effect on calibration.

Comments deleted.
Comments deleted.

My "X" didn't turn out so hot. The top of the cross as well as the bottom right both have some disfigurement.
Also, I noticed the bottom of the print (top of the raft) has a slight bow up.
The "Y" and "Z" look pretty good!

This is my second print. Any tips for a noob?

your temp may be fairly high. Look up a temp tower and work out how to use it.

here is a good one:



my cube came out to be
x - 14.69 mm
y - 15.13 mm
z - 15.29 mm
any suggestions?

Comments deleted.

I printed this and my "Y" is off center. What does this mean and how can I fix it?

The Y is off center in the stl, no need to fix it. unless you really want to make a new design....

Thanks for the file upload! I've had my CR-10S for less than a week. Now that I finally got my bed level I'm getting pretty good prints. I'd love to use this calibration tool; however, I have a couple questions:

  1. What print "quality" should be used for this?

    Cura list quality at 0.06 as High, 0.1 as Normal, and 0.25 as Fastest

  2. The ReadMe says "Steps per mm in your printers firmware." Is that actually on my controller box or through software?

Need to twist quality but ok

Not great for calibration.
In my case it printed pretty well while I still had to tension both belts.

For me the best model I found yet for calibration is a small piece fast to print:

Anet A8 Hotbed Spring Bushing

I've an Anet A8 standard configuration with semicircular fan duct.
I realized cube to calibrate XYZ steps, after having calibrated extruder steps.
My settings with BQ PLA:
Resolution: 0.1mm
Infill: 30%
shells: 0.8
Print temp: 200
First layer print temp: 210
Bed Temp: 50
Bed temp first layer: 60
Fan Speed: 75%
Print speed: 50mm/s
infill speed: 65mm/s
forward speed: 80mm/s

Cube is 20x20x20, but X (https://ibb.co/hwXQi6), Y (https://ibb.co/kADnwR) and opposite Y (https://ibb.co/hOmUAm) faces have holes and layers are not homogeneous.
Photos are macro and seem to show more flaws than they do not notice in the real world with a naked eye, but I'm not satisfied.

How can I improve print quality?

Here photos:

Calibrate your Extruder.
It seems like Over extruding

I'm fairly happy with my X-Y dimensions although Z is running about .20mm over as well.
Maker Select v2.1
.09375 layer height
ext temp: 210C
bed temp: 55C
infill: 30%

I was getting ghosting so I lowered my x/y print acceleration and jerk. That really helped the ghosting on the X and slightly on the Y. The thing I am seeing is the back right corner has protruding rounded corners on the top and bottom of the print. This is the section above and below the letter imprint.

I made one and was pretty happy with my results. I wish I had purchased a better test filament.
X axis- .17mm over
Y axis- .13mm over
Z axis- .26mm over
Needs a lead screw upgrade from threaded rod.

Just had a look at your makes.

We would always recommend buying good quality filament, it means that you can rule that out when it comes to optimising your print. We always recommend Colorfabb ( https://www.idig3dprinting.co.uk/product-category/brand/colorfabb/ ).

One thing we did notice is that you are using supports and also a raft, this should not be necessary on such a print, overall this will reduce the quality of the finish of your prints, these settings should only be used if necessary, not as a matter of course.

Also your corners re not quite right, you should check you belt tension, its probably to do with sudden changes in direction.

Thank you for your input. I appreciate it and will be installing belt tension upgrades in the near future.

So I just printed this, it actually looks pretty good. However, when measuring the X and Y sides of the cube with a digital caliper, each side reads 20.16mm. The Z height is 20.02 are these off enough to warrant a change?

Well this kinda depends on what is important to you. One thing to bear in mind is that, for example the 20.16mm side, that the inaccuracies magnify as the distance gets greater. so if you are out by 0.16mm over 2cm then you could expect that to be .32mm over 4cm and over 10cm 1.6mm.

Ok, thank you for pointing that out. I really didn’t think about the inaccuracies getting larger as the print gets larger...I will take a look and see what I need to do to tighten things up a bit.

remember to use M502 to make your setting live.

made this one a couple of time 1st time the z was sideways and the y was infill then i found out i was getting a mirror image swapped my axis and now printed perfect thank you for making this useful and providing it Excellent!

Printer Robo 3D R1+ (Modified Extruder: E3D Hotend with Bowden Direct Drive PTFE)
Filement: PLA
Extruder Temp: 210
Bed Temp: 50
Infill: 20%

I know the Extruder steps are correct because I measured with calipers.
The Z steps should be correct because the height of the cube is 20mm

The base and top are also at 20mm around all sides, Its just that the middle is not, It seems to be 18mm at the shortest point.Its also bending up on the corners.

Here's what mine looks like, any ideas? Any help would be much appreciated:







Again, any help would be much appreciated.

You need to use an infill of 30% as stated in the settings.

hello. im having problems like the one on the picture. i've searched everywhere and i cant seem to fix it. like the blue test cube on the picture, my surface is exactly like that there are gaps in it and the walls are not touching like the cube perimeter and the letter Z on top of the cube. it should be one solid line and not have spaces in between correct?

have you tried upping your overlap setting? Some people run it as high as 25%

This is done to extruding less plastic than is expected.

This can be due to not enough steps/mm for your extruder stepper motor, it can also be down to poor quality filament, i.e. it says it is on average 1.75mm but in reality it is closer to 1.7mm

So the answer is to firstly check your filament. Then look at optimising your extruder steps/mm. If you can't do the latter use the extrusion width multipliers in your slicer software.

Thanks a lot :) i'll try that.

Thank you for the Cal cube

Thanks for your build. I have one question: Am I correct in assuming that rotating the cube 45 degrees will allow it to be used on a core XY 3d printer?

Yes, either that or measure from the corners.

Hi, you know why the faces have that lines? I have 2 printers and one printer, print the cube very nice, but the other printer make lines similar and I modificate the flow and temperature and the lineas don't desapere.

Not too sure what you mean by lines. If you post your make you can get some feedback on it.

Try reducing the nozzle temp and increasing the flow rate in the top/bottom.

That's definitely not normal. I've printed a few of these with different types of filament on my A8, and they've all come out fine. It looks kinda like the parts where is misses would have filament put down after being retracted. How far and how fast do you have it doing the retraction? It also looks a lot like the print is printing too far from the bed.

Very good object to test the quality of your printer
This is my first objet that i have print with my Anet A8 and the quality is realy good for a printer without improvement !


I really like this calibration cube just wish my printer wasn't having extreme layer problems. I print out the cube and it looks like a messy stack of papers...

You should post a picture of your make and ask for feedback from the community.

I think my problem was that my nozzle position was too low for me. I have been having banding going on in my prints a lot and after raising my nozzle up a little bit it seemed to print a lot better before the power went out.

Sometimes banding issues can be overcome by optimising your layer height, reducing the error in layer height caused by the specifications of your extruder.

take a look at: http://www.prusaprinters.org/calculator/ and scroll down to optimal layer height.

How useful this is will depend on your printer and the software it uses.

I feel really stupid now... I just noticed that you are using the prusa printer and not the lulzbot... sorry about that.

I'll be honest with you. I'm using a Lulzbot Taz 6 and am very new to 3D printing. I'm actually trying to fully set this thing up for my work. So I have no idea what to put in for those drop down boxes, but I'd love to learn. My work has actually gotten me into 3D printing so much I just bought the Monoprice Delta Beta so anything that you can teach me here with these drop down menus the better haha.

Hello all, admittedly my skills in math are horrible. Was hoping some one could show example using actual numbers please.

Thank you!

No problem.

Lets say you have your x stepper motor set at 100 steps per mm

The cube is 20mm in each plane so your expected length for the side printed along the x axis is 20mm

You print out the cube and measure the x axis side of the cube and you get 19mm, this is your observed length.

so the function to work out what your new steps per mm should be is:

New steps per mm = Current steps per mm X (expected length / observed length)


New steps per mm = 100 (20/19)

or 105.263 steps per mm

In this case your x axis is not moving enough. Its 100 steps is moving it only 19mm so you need to increase the number of steps it moves in order for it to move 20mm.

Sorry i'm so new to 3D printing, how would you go about compensating the stepper should it come up short on the cube?

Read the post immediately above yours

You might also be able to use the M92 gcode command in the starting script. For example, if my desired Z steps/mm is 395.06, I would put:
M92 Z395.06
in my starting script. Please note that you should check the compatibility of this gcode command with your printer and firmware before implementing it in your slicer. Hope this helped!

This is going to depend upon the 3D printer you have. If you are using open source firmware then this setting is in your configuration.h file, otherwise it may be more problematic.

Thank you so much, that helped! Turns out she is dialed in just fine, will upload shortly

This is so handy, my prints are waaaaaay more accurate now! I just printed an iPhone 5S case that fit first print! Funny thing is I've been printing something, then guessing it bigger, then I'd measure a dimension and do the same formula you use here but to scale individual prints... every time! I never realized how easy it was to change this permanently! In RepetierHost just go to Config>Firmware EEPROM Config and it's the first few values on the screen (X, Y and Z axis resolution, respectively). I had assumed this would require recompiling the firmware and flashing my printer again, but nope, it's very easy! Thank you for this simple yet amazingly powerful tool to perfect our prints!

One small confusing point for me thought: If you look at the Z label and measure from the Z to the opposite side, you are indeed measuring the effect the Z axis had on the block... But if you look at the X label and measure from X-side to the opposite side, you are not measuring the effect that the X axis had on the block, but rather the effect the Y axis had, right? Same idea with Y. So it seems that when you measure your values for X and Y you need to have the letter facing you, with Z facing up, and then measure the distance between the left and right sides when you look at it that way. So for X axis, you have 'X' facing you, 'Z' on top, and 'Y' is on the right-hand side... then you measure across from the 'Y' side to the opposite side (the left and right sides when looking at this angle) to get the value for 'Observed X axis'. I hope this makes since, it did give me a brief bit of confusion. I don't want to say they're labeled wrong... because it feels right when it's sitting there after printing is complete... but it's just a bit confusing when you go to measure haha.

Glad you found it useful.

If you want to change the way the X and Y labelling works you can always rotate the model to suit. Or why not have a go and create your own calibration cube using freecad (see the link on the model page).

Comments deleted.

Isn't it a bit ironic to post a calibration cube and use a phtoo where infill doesn't touch up with the wall?

Yes, and it's ironic to the next level when you make spelling errors while trying to correct another's ironic test cube pic. Impressive!

I've removed it, as I hate these senseless flamewars. Seems like whenever I try to calm stuff down, people just takes new offense.

I was not disagreeing with your point, IDK why you think that. As for your accusation of Troll, I disagree but I do find laughably ironic that you still didn't get the irony. Have a Snickers and you might get it..... Peace man.

I've removed it, as I hate these senseless flamewars. Seems like whenever I try to calm stuff down, people just takes new offense.

Language ability seems irrelevant considering you are displaying a decent command of the language. English is not my first language either. (I speak French, Latin, English, German, some Spanish, Chinese, Russian and Klingon). I know how to:

A) How to proofread.
B) How to sense irony.

It is painfully clear to me that you are not going to accept my point as valid as it was
so I'm going to officially "dismiss" you as a worthwhile human being and move on. My self esteem levels are not low enough to waste any more of my time with thick headed, unenlightened and ignorant people like you. Have a Snickers - I think this thread shows you might need more nutrition. Peace.

You really just are an ass kg0wx and a huge troll.

I'm Danish.. English is my 4th language.. and as @DarkShadowX5 says, it's two completely different things... so say sorry, move on, and stop using sarcasm and irony online, as you need facial expression to convey it properly.

No, I'm not going to accept your point as being valid, as it's not valid.. it's a stupid dumb argument you are making

I have to agree with dintid you're being a troll. Calibration error and spelling are 2 completely separate issues and you just want to find a middle man to belittle him with. people make mistakes and being a troll and acting like a perfect entity doesn't help or prove a point...
Yes, I get that he's making a mistake while talking about someone else's mistake. still, the 2 cases are irrelevant as they pointed out..

Hello, hello. What's going on? What's all this shouting? We'll have no trouble here.

Thanks for getting this. It is a shame nobody else is listening.

I have flagged kg0wx comment as Trolling.

We have been waiting for someone to comment on the quality of the print in the picture, although despite it's shortcomings we quite like the look of the Z on the top.

Hehe, yea it looks nice, but it's just a bad reference to have - say, if you are a new user and all :)

Well I suppose we should consider changing it. We will try and remember to take another picture.

Thanks. We find it incredibly useful for getting our printing settings right.

the orientation imported into Simplify3D seems off? Am I just wrong about X/Y/Z? I always thought looking down on the print bed I would see like a normal x/y graph and then add z in the direction I am looking from. (as S3D labels the board)


EDIT: just thinking more about it... the side that says X represents the "x factor" so I can see why you would name it like that without "disagreeing" on what I have said before :) (though then there would be no reason to not name all sides) Will print it with Z rotation 270° now :) Thanks for the design!

Yes you can rotate the model so that it fits with your interpretation of axis labelling. The X & Y are labelled such that errors occurring on those sides will be down to movement in those planes, then if you measure the widths of the corresponding faces then this will be used to calibrate your printers steps/mm for that axis. So your image is the correct orientation.

If you changed the wall thickness you would get rid of those lines at the top of your print. I created one of these too for testing I must have printed like 12 20x20x20 bricks.

I think that was the first one we printed out, so you are right, it is not perhaps the best example. Although, we quite like the patterning on the top of this one.

We are moving towards being able to build a house with all of our cubes. The great dice drought is finally over!

Haha nice yeah I printed like a dozen myself was thinking if I had enough I could make a death star. It's cool I wasn't the only one to think of it. Good idea are shared by many.

This is so smart. I cant count the times i have pulled a calibration cube off the print bed before marking the sides x,y and z. Two thumbs up for thinking ahead. Love it!

Thanks very much. We find it invaluable for dialling in our printers for different materials as well as initial 3D printer calibrations.

Comments deleted.

This is NOT the correct way to calculate your steps per mm! You should calculate it from the belts and pulleys and such, not from what you "expect". Thomas has a good video on it. https://www.youtube.com/watch?v=VIHgDiCCY0Y

Hi @nutcase84,

The expected value refers to what one would "expect" the dimensions of the cube to be. In this instance we expect each side to be 20mm.

You are right in that you should set you initial steps per mm based upon your hardware set up. This, as you know is the website that will help you derive these initial values ( http://prusaprinters.org/calculator/ ). So for instance with a Prusa i3 one would usually start off with 80 steps per mm for belt driven axes.

So this initial value would be used to set up your printer. In a perfect world these initial values would mean that your cube would be 20x20x20mm, unfortunately there will be many sources of error that mean that you are unlikely to get this. This is where you need to set about calibrating the printer further. If you use the formula in this models description you should be able to get your printer making objects whose dimensions more closely match those that would be "expected" given the model.

It is a good idea to also use larger objects as small deviations from expected will be harder to measure, due to measurement errors having a larger impact on your observed values.

You could in theory enter any initial value if you wanted and over successive prints, using this method, arrive at a good steps per mm value but, as you rightly point out, it's better to start with a steps per mm that would work given your hardware set-up.

Our intentions was not to deceive or give false information. This is a common method to hone your steps per mm and does work. Why not try it?