Free 3D Printable QR Code Generator
Download your QR as an ASCII STL file: a 60mm x 60mm base plate with 1.5mm raised modules (3.5mm total height). Drop it straight into Cura, PrusaSlicer, or Bambu Studio and print it as a coaster, sign, or keychain.
Slicer-ready STL
Standard ASCII STL, one solid object. Works in every slicer.
Two-color ready
The base and raised modules meet at exactly Z = 2mm, a clean point for a filament swap.
Browser only
The mesh is generated locally. Your content is never uploaded.
✓ No Signup Required·✓ Static · Never Expires·✓ Free · No Signup·✓ Works Offline · Unlimited
Free QR Code Generator
Paste a link, customize, and download. Free, no account, and 100% in your browser - your data never leaves your device.
How to print a QR code in 3D
- Enter your URL or content above.
- Open the customize panel and set Error Correction to H (it defaults to M, which is not raised automatically for STL export). Higher error correction tolerates the print imperfections a raised-plastic code is more likely to have.
- Click 🧊 STL in the export row.
- Open the .stl in your slicer. For two-color contrast, pause and swap filament at Z = 2mm, exactly where the base plate ends and the raised modules begin.
- Print at 0.2mm layer height. Black-on-white or any dark-on-light combination scans most reliably.
The STL file, exactly
The export is two solid layers fused into one ASCII STL object: a flat base plate 60mm x 60mm x 2mm, and raised modules 1.5mm tall on top of it (3.5mm total height at the tallest point). A 2-module quiet zone border sits around the code on all four sides. Wherever two or more dark modules sit in a row, the generator merges them into a single rectangular box instead of one box per module, which keeps the file smaller without changing the printed shape.
| Property | Value |
|---|---|
| Base plate | 60mm x 60mm x 2mm |
| Raised module height | 1.5mm (3.5mm total height) |
| Quiet zone border | 2 modules on every side |
| File format | ASCII STL (model/stl), one solid named "link2qr" |
| Error correction used | Whichever level (L/M/Q/H) is set in the customize panel at export time |
Module size by QR version
The base plate is always 60mm square, so the physical size of each raised module shrinks as your content needs a higher QR version (more modules). A short link like https://link2qr.com encodes as version 2 at error correction M, or version 3 at H (H needs more error-correction data, which pushes it up a version). Multi-link codes or long URLs can reach version 6 or higher.
| QR version | Modules | Module size on a 60mm plate |
|---|---|---|
| Version 2 | 25x25 | 2.07 mm |
| Version 3 | 29x29 | 1.82 mm |
| Version 4 | 33x33 | 1.62 mm |
| Version 5 | 37x37 | 1.46 mm |
| Version 6 | 41x41 | 1.33 mm |
A standard 0.4mm nozzle can resolve features well below any of these sizes through version 6. Beyond that, check your slicer's minimum wall/feature settings before printing at 60mm - or scale the model up in your slicer.
Slicer settings that matter
- Layer height: 0.2mm gives 10 layers of base and 7-8 layers of raised module, enough resolution for the module edges to stay sharp.
- Filament swap: pause exactly at Z = 2mm (a filament-change or color-change G-code command at that height) so the base is one color and every raised module is another.
- Infill: 20% is plenty for a flat coaster or sign; the raised modules print solid regardless of infill since they are only 1.5mm tall.
- Orientation: print flat, base down. No supports needed since nothing overhangs.
Design considerations before you print
- Adding a stand, hole, or text: the STL is a single solid, so bring it into Blender, Tinkercad, or Fusion 360 first if you want to cut a keychain hole, add a stand, or emboss a caption below the code - the flat 2mm base gives you room to union or subtract new geometry without touching the QR modules themselves.
- Content length: shorter links land on lower QR versions with bigger, more forgiving modules (see the table above). A plain destination URL prints more reliably at small sizes than a long tracking link or a multi-link code.
- Material: PLA holds sharp module edges well at this scale; PETG or ABS work too but can lose a little edge sharpness to warping on a 60mm flat plate.
Scan notes for physical prints
- Two-tone beats single-color. A filament swap (or a painted top layer) gives a scanner real color contrast. Single-color prints rely entirely on the shadow cast by the raised modules, so they need angled, even lighting to scan.
- The quiet zone here is 2 modules, thinner than the 4-module border most of the QR spec's reference implementations use. If you mount or frame the piece, leave extra plain margin around it rather than cropping tight to the plate edge.
- Always test-scan the physical print with two or three phones before a production run - printer calibration, filament color, and lighting all affect real-world results in ways a screen preview cannot.
Advertisement
FAQ
Will a 3D printed QR code scan?
Yes, with enough contrast. Two-tone prints (for example a white base with black raised modules) scan reliably under normal lighting. Single-color prints rely on shadow from the raised modules and need good, angled lighting to read.
What size should I print?
The exported STL is 60mm x 60mm by default. You can scale it up in your slicer for signs (100-200mm works well) or down to around 40mm for a keychain; below about 30mm, module size gets too small for most phone cameras to resolve reliably.
What error correction level should I use for 3D printing?
The generator defaults to M, which is not raised automatically for STL export. Set it to H in the customize panel before exporting: H tolerates print imperfections, lighting variance, and a slightly rough surface far better than lower levels.
Can I edit the STL after downloading it?
Yes. The output is a standard ASCII STL, one solid object named "link2qr". Open it in Blender, Tinkercad, or Fusion 360 to add a stand, mounting holes, or engraved text.
How do I get two colors on one print?
Pause your print and swap filament at Z = 2mm - that is exactly where the flat base plate ends and the raised 1.5mm modules begin, so the color change lines up perfectly with the module edges.