How to 3D print a two-color QR code
Three proven methods —multi-material, filament change and paint— with the exact settings so the code prints crisp and scans on the first try.
A QR code only works if a phone can clearly tell the dark modules from the light background. In 3D printing that means two high-contrast colors: one for the base and one for the raised relief. You don't need a multicolor printer; there are three ways to do it and all of them work with the files QRelieve generates.
Before you start: the right file
Download the two-color 3MF. It contains two separate parts —“Base” and “QR code and text”— already stacked and with their colors assigned. If your slicer doesn't support 3MF, download the STL: you'll get a .zip with both parts that you import together.
- Light base: white, beige or yellow.
- Dark relief: black, navy or brown.
- Each QR module at least 1.5 mm: the tool shows it live.
- 1–1.2 mm relief: enough for contrast without distracting shadows.
Method 1: multicolor printer (AMS, MMU, CFS)
If you own a Bambu Lab with AMS, a Prusa with MMU3, a Creality with CFS or any multi-material system, this is the easiest way: the printer swaps filaments on its own.
- Open the 3MF in Bambu Studio, OrcaSlicer or PrusaSlicer. If it asks whether to load it as a single object with multiple parts, answer Yes.
- Assign the light filament to “Base” and the dark one to “QR code and text”.
- Slice at 0.2 mm layers (0.16 mm for small codes).
- Check the preview: the relief should start right on top of the base.
- Print. The purge tower will use some filament; that's normal.
💡 To save purge filament in Bambu Studio and Orca, enable “Purge into infill” and lower the flush volume from light to dark: dark covers light easily.
Method 2: single extruder with a filament change
The most popular method, and it works on any printer: Ender, Prusa MK4, Bambu A1 mini without AMS, Anycubic… Print the base in one color, pause, and finish the relief in another.
- Open the 3MF or import both STLs together.
- Slice normally and, in the layer preview, find the first layer where the relief appears.
- Add a “filament change” (M600) or “pause” there. In Bambu Studio and Orca: right-click the layer slider → Add pause / filament change. In PrusaSlicer: the “+” icon next to the layer. In Cura: Extensions → Post-processing → Pause at height.
- Print the base in the light color.
- When the printer stops, load the dark filament, purge a little and resume.
💡 Since the relief is the only thing printed above the base, everything after the pause is already the second color. No other change is needed.
Method 3: one color plus paint
If you'd rather not swap filament, print everything in white and paint only the top face of the relief. Use a foam roller or a sponge with black acrylic paint and pass it lightly over the top: it only touches the raised part. Quick for one-offs, though less durable than two filaments.
Test before printing more
Scan the first piece with several phones, in normal light, from about 20–30 cm. If it doesn't read right away, see why a 3D printed QR code won't scan: it's almost always contrast or module size.