3D printable QR code

A raised code in one colour on a base in another, exported as a 3MF that opens in your slicer with both colours already assigned. Not an engraved picture — real geometry.

Build my 3D object

Contrast is what makes a printed code scan

A scanner does not see height, it sees light and dark. A QR code embossed in a single colour relies entirely on shadow, and shadow disappears under flat lighting or at the wrong angle. It sometimes works, which is worse than never working.

So the object is built as two separate parts: a base, and the raised code and text. Print them in colours that differ in lightness — dark base with a light code, or the reverse — and the code reads like ink on paper.

There is a real minimum size, and it depends on your link

A 0.4 mm nozzle cannot hold a feature much finer than itself. Below roughly 1.2 mm per module the printed squares blur into each other and the code stops reading.

How many modules you need depends on how long your link is. That is why a long URL forces a bigger object: the same 50 mm keychain that comfortably fits a short g.page/r/…/review link cannot fit the long writereview?placeid=… version of the same destination.

The generator measures this for your exact link and refuses to export below the limit rather than letting you find out after two hours of printing.

Why the printed code is always square-module

Rounded and dotted module styles look good on screen and are available for your flat downloads. They are deliberately not carried over to the printed object: at nozzle scale those shapes lose their form, and separated dots lose the contact that holds them together. Square is what survives a print.

3MF or STL

3MF is the one to use. It stores units, colours and materials inside the file, so the slicer opens the model with the base and the code already distinguished. STL stores triangles and nothing else — same shape, one colour, and you assign everything by hand.

One hard-won detail: Bambu Studio ignores the 3MF standard’s basematerials. It reads colours through its Standard 3MF Color Parsing step instead, which uses the materials extension’s colour groups. The exporter here writes that form, so Bambu detects both colours on import. This was established by testing in Bambu Studio, not assumed.

Printing it

No supports are needed. The table stand is a wedge whose every layer is smaller than the one below it, and the keychain and wall sign are flat plates.

If you have a single-colour printer you can still get two colours: insert a filament change at the layer where the raised code starts. Your slicer will call it a colour change or an M600 pause. The relief is 0.8 mm, so on a 0.2 mm layer height that is the last four layers.

Frequently asked questions

Will a 3D printed QR code actually scan?

Yes, if the modules are large enough and the two colours contrast in lightness. The generator enforces a minimum of about 1.2 mm per module for a 0.4 mm nozzle and blocks the export below it.

What is the minimum size for a 3D printed QR code?

It depends on your link, because a longer link needs more modules. For a short link a 45–50 mm code works; for a long URL you may need 70 mm or more. The tool calculates it for your exact link and tells you the module size in millimetres.

Should I download the 3MF or the STL?

3MF unless your software cannot open it. It carries units, colours and the two-part structure. STL is geometry only — the same object in a single colour.

Which slicers can open the 3MF?

Bambu Studio, OrcaSlicer, PrusaSlicer and Cura all read 3MF. Bambu Studio shows a colour parsing dialog on import and picks up both colours.

Do I need a multi-colour printer?

No. With a single extruder you can insert a filament change at the layer where the raised code begins — a colour change or M600 pause in your slicer. The relief is 0.8 mm, which is four layers at 0.2 mm.

Build my 3D object

Free, no account, and everything is generated in your browser.

Open the generator