Printing on glass with the Prusa i3 MK2

Glass on heatbed

Reflective printPrinting on glass can be useful for a number of purposes. Many people like the shiny reflective surface finish on the bottom of prints done on glass, or the fact that you can quickly and easily switch between glass plates on the printer. It may also be desirable for its adhesive properties with some materials.

Through some clever manipulation of your starting gcode script in your slicer, it is possible to pause the printer for a period of time at the beginning of a print after the mesh bed levelling is complete. This will allow you to place the glass down on the bed and secure it in place, ready for the print to begin on top of it.

Starting script

If you just came for the custom gcode, then here it is. For a further explanation and more details, feel free to keep reading.

M115 U3.0.10 ; tell printer latest fw version
M83 ; extruder relative mode
G28 W ; home all without mesh bed leveling
G80 ; mesh bed levelling
G1 Z100 F1000; raise nozzle 100mm
G1 Y200 F6000; bring bed to the front
G4 S60; wait 60 seconds for glass to be placed on the print bed
; if you'd like more time here, you can pause the print
; or extend the wait time in the G4 command
G1 Y0 F6000; move bed back
G1 Z#.## F800; lower nozzle back down over glass
; IMPORTANT: replace the hashes above with the thickness of your glass
G92 Z0; set as zero position for z axis
G1 X60.0 E9.0 F1000.0 ; intro line
G1 X100.0 E12.5 F1000.0 ; intro line


First, you’ll need to source some glass. I use 1.55 mm thick glass from a picture frame, which I find is a good thickness. If you go much thinner than that,  you’ll find that its very fragile and can break easily, but if you go much thicker then it’ll take longer to heat up the glass and the surface temperature will be significantly lower than what you’ve set your heatbed to. Whichever thickness you choose, measure it (accurately), preferably with some digital calipers and replace the hashes in the G1 Z#.## F800 line of the starting script with your measurement.

With regards to sizing, you can either cut your glass to size or find an orientation that works for you. The most important thing is that it’s not too wide to fit through the frame.

Once the printer has completed the mesh bed leveling Bulldog clip
and is waiting for you to put your glass down, make sure that there are no wisps of plastic left on the bed so that the glass sits completely flat. Also, if you’d like to give the glass a bit more time to heat up then you can pause the printer on the LCD and resume when you’re ready. I secure the glass with bulldog clips on the front and back of the print bed. Be careful if you place them on the sides as they’ll most likely be knocked as the bed moves through the frame.

Fine Tuning

If you measured your glass thickness correctly and the glass is perfectly flat on the heatbed then there should be no need to adjust your live z, it should print exactly as it was when you were printing on the PEI. If there is still fine tuning that needs to be done, then it might be a good idea to remember your current live z value, then adjust it as necessary. Then you can take the difference between your final live z and your original live z and add it to/subtract it from your glass thickness value in the starting gcode script. That way you don’t need to change your live z value every time you switch between printing on glass and PEI.


You should now be able to successfully print on glass with your MK2! You might find it useful to bump up the heatbed temperature a little bit to make up for the extra layer of glass on top that needs heating. With my laser thermometer I noticed a difference of about 4 degrees between the 1.55 mm glass and the actual temperature of the heatbed, so you can use that as a rule of thumb.

The process of getting prints to stick to glass is completely different to PEI. Some people use hairspray and glue stick whilst others can print fine on clean glass. You’ll need to play around and find what works best for you and your materials.


If you found this post helpful and you’d like to show your support, feel free to leave a tip!

11 thoughts on “Printing on glass with the Prusa i3 MK2

  1. Hi Matt. Newbie here. Will this be reset back to default at the next bed levelling ? G92 Z0; set as zero position for z axis


    1. Hi Gert, yes that will set it back to the default behaviour. I haven’t tested it myself but I assume that just homing the z axis would also reset the offset


  2. Hi. Love your articles, just finshed the extruction calibraiton and you article guided me well through it. Thank you!

    Now back to this, do you think its possible to adjust the sensitivit of the probe so you can to bed leveling through the glass?


    1. Thanks for the comment! I’m glad I’ve been able to help you. I’m actually planning on doing some tests on exactly that and I’ll have an article up about it as soon as I’m done


  3. Have you ever used this in combination with Prusa’s colorprint? Seems to work at first, but then after the color change it resumes the print but doesn’t add the adjusted Z height of the glass and crashes into the already partially printed object. Any chance you have a solution?


    1. I haven’t tried that before actually, but I think the issue is to do with the way that colorprint implements the M600 gcode. I’ll be doing a post in a few days about how to manually insert colour changes in your code which should solve the problem


    2. So I had another look and I can’t seem to find anything in the colorprint implementation that would cause this. I also had a look in the prusa marlin firmware and everything looks fine there. Before anything moves it remembers the z position with lastpos[Z_AXIS]=current_position[Z_AXIS] and then returns to that after it’s done. And the G92 completely overwrites the existing z position with current_position[i] = code_value()+add_homing[i]… So i’ll need to do some more experimenting and get back to you on that!


      1. Thanks for investigating! I’ve tried it a few times successfully without the glass, but that colorprint is really throwing me through a loop. Maybe I just need to take a deep breath and double check all my settings. I’m using S3D so maybe it’ll play nicer with the Prusa edition of Slic3r (I just haven’t used that before and S3D makes me feel good inside hahaa)


      2. Ok – Problem identified and solved! The issue was that I was using exactly the same print settings without the glass as with the glass. I set up a webcam to see what’s going on, and my print is actually lifting from the surface and that’s what is actually causing the crash into the printed part. All I did was up the bed temperature so that the glass gets hotter, now it sticks and it prints! Really thought it was something in the gcode as it worked perfectly before, but that was because the print bed was hotter with direct contact than with the glass applied.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s