QR Forge
3D-printable QR codes, made in your browser
Free · No sign-up

Two-Color QR Codes on a Single-Nozzle Printer: Adding a Filament Change

A QR code plaque needs exactly one color change, at exactly one height. That makes it one of the easiest two-color prints to do on an ordinary single-nozzle printer — no automatic material system required.

Updated October 12, 2026 · 4 min read

Multi-material systems are great, but they aren't necessary for most QR code prints. Because the raised pattern starts at a single layer, you only need the printer to stop once, let you swap filament, and carry on. Every major slicer can insert that stop for you. This guide shows how.

How the layer-change method works

The print builds in two stages:

  1. The base plate prints in your first color — usually the light one, if you want dark modules on a light base.
  2. At the first layer of the raised pattern, the printer pauses. You swap to the second color, and everything above that height — the QR modules and any text — prints in the new color.

The result looks just like an automatic two-color print from the front. The only difference is that the side edges of the raised parts are also in the second color, which is exactly what you want.

Which color first? The base prints first. So if you want a white plaque with a black QR pattern, load white first and switch to black. For an inverted design (light pattern on a dark base), start with the dark color.

Step 1: Find the right layer

Slice the model (STL or 3MF both work), then use the slicer's layer preview slider to scroll up until you reach the first layer where the raised QR modules appear on top of the solid base. That's the layer where the color change goes. In the preview, the layer number and height are shown next to the slider.

Double-check by stepping one layer down — you should see only the flat top of the base — and one layer up — you should see the modules. The change must happen at the start of the first module layer.

Step 2: Insert the change in your slicer

PrusaSlicer

After slicing, drag the vertical layer slider to the first module layer and click the small plus (+) icon next to the slider handle. This adds a color change at that height, shown as a colored tick on the slider. PrusaSlicer writes an M600 command into the G-code. Prusa printers and many other Marlin-based printers with filament-change support recognize it and prompt you on screen. You can right-click the plus icon to choose a pause or custom G-code instead if your printer doesn't support M600.

Bambu Studio and Orca Slicer

Slice, move the layer slider in the preview to the first module layer, then right-click the slider handle. Choose "Add pause" to stop the print there, or "Change filament" where the option is available for your setup. When the printer pauses, unload the current filament, load the new color, purge until the color runs clean, and resume from the printer screen or the app.

Cura

Cura uses a post-processing script. Go to Extensions → Post Processing → Modify G-Code, add the "Filament Change" script (or "Pause at height" if your printer handles pauses better), and enter the layer number you found in the preview. Slice again after adding the script; the change only appears in newly generated G-code.

Step 3: Do the swap cleanly

When the printer pauses:

  1. Leave the print on the bed. Don't touch or bump the plate — it has to stay exactly where it is.
  2. Unload the old filament using the printer's unload function, which heats the nozzle and retracts it.
  3. Load the new color and let it extrude until the plastic coming out of the nozzle is the new color with no streaks of the old one. With a dark-to-light change this takes noticeably longer, because a little dark plastic lingers in the hot end.
  4. Remove the purged strand from the nozzle tip with tweezers before resuming, so it doesn't get dragged onto your print.
  5. Resume.

Don't wait too long. Some printers let the bed cool during a pause, and a cooled part can lift or shift. If your printer allows it, keep the bed heated while paused, and do the swap within a few minutes.

Common problems and fixes

  • Gray or streaky modules: not enough purging after the swap. Push more filament through next time until the color is completely clean.
  • A blob or line on the face: leftover purge strand got dragged across. Wipe the nozzle tip before resuming.
  • Modules shifted relative to the base: the plate or print moved during the swap, or the printer lost position. Avoid touching the bed, and on printers that re-home after a pause, make sure the print isn't in the way of the homing path.
  • Color change in the wrong place: the change landed one layer too early (part of the base top is the second color) or too late (the bottom of the modules is still the first color). Re-check the layer in the preview.
  • The printer ignored the command: your firmware may not support M600. Use a plain pause (M0/M1, or "Pause at height" in Cura) instead, and swap the filament manually through the printer's menu.

Want more than two colors?

You can add more than one change — for example, making the text a third color — but only if the text sits at a different height from the QR modules. In a standard QR Forge design they share the same height, so they print in the same color. For most uses, two colors give the cleanest, most scannable result anyway.

Batch printing tip

If you're making a stack of table stands, put as many as fit on one plate. The pause happens once for the whole plate, so you swap filament once and get every stand done at the same time. It's the most efficient way to produce a batch without a material changer.

For the full design-to-print process, see How to 3D print a two-color QR code.

Ready to make one? The generator is free and runs in your browser.

Open the QR generator