Bed Leveling Calibration test object

by bsutton, published

Bed Leveling Calibration test object by bsutton Oct 29, 2011
1 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

99429Views 39820Downloads Found in 3D Printing Tests


This object is designed to help you check that you are correctly leveling you printer bed. It prints three nested squares.
Try to adjust your printer as the object prints (watch out for your fingers :) ). Keep adjusting the bed level until the lines are laid down evenly.


Level your bed, print the object and check the results.

I've uploaded six variations of the stl with different wall heights and widths.
Depending on your printer/slicer you may need to use one of these variants.

I've also published the original openscad file and I've now publish an onshape CAD document as I've abandoned openscad in favour of onshape.

If one of the standard stl files doesn't suit, then you can adjust the openscad or onshape model directly. Onshape is free to use for us hobbiest and I highly recommend it.

Onshape changes

(recommended if one of the default models doesn't work for you)
You will need to be signed up to onshape but if you are doing 3D printing then you should already be signed up :)
To create your own model double click to edit any of the variables (in the left hand side list) then click the 'tick' symbol and your model will update.
To export the model to an STL file, right click the 'tab' labelled 'Bed Calibration Model' (at the bottom of the page) and select export. The select STL as the format.
The onshape variables that you can adjust are:
BedXSize - the dimension of your bed in mm in the X direction.
BedYSize - the dimension of your bed in mm in the Y direction.
LineHeight - the height of each line that is printed. Default 0.3mm
LineWidth - the width of each line that is printed. This should be set to a multiple of you nozzle width. Default: 0.3mm


You may want to download the scad file and adjust the x, y and z dimensions to match your printer bed.
When in doubt start with the one labelled 'try this one first' (h=0.3, w=0.3)

The default values are:
height = .3;
border_width = 0.2; // This should be slightly less than your extruder width

If your gcodes are empty or simply doesn't print try increasing the height and or the border_width.

This is an updated version of the calibration tool as I've found this version easier to work with.

See the calibration page on reprap.org for full details on calibrating your printer.


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 business-to-business and business-to-consumer sales all over the world. W...

App Info Launch App

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

App Info Launch App

THANK YOU thankyouThankYouThAnKYoU! The 'try this one first' object just helped to do the best leveling job I've gotten, so far!!!

Would it make sense to set it up so it goes through the middle too? Perhaps print four squares, with two squares inside each. That way we can tell not only if one corner is high, but if our bed is warped. I guess I can just shrink and duplicate this, but it's something to think about.

thanks, I adjusted the bed in real time while this printed and got the best level I have ever had.

I print the "try this one first" every time I think I need calibration. Works great!

perfect, did a few runs with the "try this one first" and after some adjustments my printer is working better than ever. thanks alot.

This is brilliant. Get it "close enough" using the piece of paper technique or whatever is easy and quick, then print this. Just turn the print speed way down in the slicer to make it easier to make the adjustments while it's printing, and by the time you're done with this simple print, your machine should be leveled perfectly. Just use a filament that contrasts nicely with the background. For my glass surface, black PLA works great.

Hi - may I request a modification to this file? This does show the boundaries, but not the orientation. If you were to put, say, a triangular "Indent" at x=0, y = 100, and a double -indent at y=0, x==100, then any flips or rotations become immediately obvious.

I've finally got around to modifying the model to include your suggestions.

Hey, when I try to print this piece, all of the square prints on the same place (all stacked). Do you know where the problems come from ?


Not certain what you mean by 'stacked'.

Can you send a photo?

What I mean by stacked is that at the end of the print. All the square have been printed onto the previous one with some shift...
It looks like this picture : http://imgur.com/VOzQstp

So which file are you using to print with?

the "try_this_one_first" stl file. Here is the result : http://imgur.com/NZrO8ca (don't take account of the Z height problem)

basically I have no idea. I've just re-printed the 'try this one first' on my create bot dx and it worked perfectly.

Only thing to watch out for, make certain you don't have 'brim', 'raft' or any other adhesion schemes turned on as these will interfere with the print.

At the beginning I didn't understand the problem, but now the problem seems to be the bed size.

Mine is 200x200mm in theory, but when i try to print two pieces side by side (normaly they will fit in the 200mm width of the bed), the second one which is about 20 mm from the edge is cutted like it thinks it the end of the bed.

As far as I know the settings in repetier host and Slic3r about the bed size are correct (200mmx200mm).

I think the problem is the same with this piece (try_this_on_first); The piece is too large for the configured bed size, so it is cutted an printed like above.

But I don't manage to find where the settings are wrong.

OK bed size makes some sense.

So lets try something different.

I've created a model in onshape.
In case you don't know onshape is a free (at least for us hobbiests) CAD application that runs completely in your browser on any OS including tablets and phones.
I've been using the beta for a few months and its just gone to full release. To say the least its fantastic and I've abandoned openscad in favour of onshape.
So I've posted a link to the onshape model above, along with instructions on how to generate a model that fits your bed size (no programming skills required ;).

And no, I've have no association with onshape, but I do know a good bit of software when I see one.

Do you can post a library 2d.scad? Or link? Please.

I've uploaded a version that doesn't require the 2d.scad file.

Where have you uploaded it?

I think the author adapted the .scad source code from http://www.thingiverse.com/thing:34558, that thing's .scad file also includes


  • Print designed to check that you bed is level
  • print four small squares in each corner to ensure even print quality and good adhesion.

at the top.

Bed Leveling Calibration Test Object (Parametric)

Here is how mine printer . I think its pretty good - http://youtu.be/ZkA0xN0qHtY

Hello Greg,

How thick should this wall be? The shape seems to be pretty good, but my wall is quite thick it seems...and for some reason the next calibration object in your series (the little 10mm square) performs a LOT better when I more than halve the steps/mm...quite weird is it?


You only need to play with wall widths and heights if the stl fails to print (which can happen with some/slicers printers).

If the stl doesn't print try on of the variants the h=03, w=03 is the one most likely to print on any printer (this is also the one labelled 'try this one first')

hi, you can download the scad file (openscad) and create any wall width you want ;-)
if you need some more help you can join the irc channel #reprap on freenode. there are lot of people who can help, i'm very often there.


it seems that scad file can't work under OpenSCAD 2013.01 (windows version). when I try to compile it warned me that 2d.scad is missing and emptySquare modules are ignored.

in openSCAD libraries directory is only MCAD dir without 2d.scad. Can anybody give me link to download it??? I suppose that emptySquare is in that 2d.scad.

I have new instalation of OpenScad from www and new to reprap :)

this has now been fixed.

It still says "2d.scad" not found.

This worked great for me to fine-tune the level of my bed when I moved it from springs to hard mounts. The hard mounts are tougher to level but they hold far more accurately overall. Thanks for creating this!

Slic3r created a (more or less) empty gcode file out of thisfor me. :(

The stl model is only 0.1mm high. If your layer height is > 0.2mm, the first slice level will be above the top of the model.

Modify the cube() z dimensions in the scad file to be at least half your layer height and then generate your own stl for this model.

Or change your layer height, as @zbys suggested. A layer height of 0.199mm or less should work.

Reduce your layer height, might didn't slice at 0.3mm but it did with 0.1 (slic3r 0.8.2)

Download a new Slic3r maybe? It worked for me.