Practical guide

How to 3D print in multiple colours without an AMS (by changing filament between layers)

Multicolour systems like Bambu Lab's AMS swap filament on their own, but they're not the only way to print in colour. If the colours in your part change with height (a base in one colour and raised text in another, say), all you need is for the printer to stop at the right layer so you can swap the filament by hand. It works on almost any printer and costs nothing, which is worth knowing: of the 72 FDM printers in our catalogue, only 32 support a system that swaps filament on its own (AMS, CFS, ACE Pro, IFS, MMU or a toolchanger).

What you can print this way (and what you can't)

The rule is simple: one colour per layer. The change happens between one layer and the next, so everything at the same height comes out in the same colour. With that in mind, these work very well:

What you can't do is put two colours side by side in the same layer, like a figure's eyes at face height. That needs a system that switches filament within a layer: we explain it in what is AMS and how multicolour works, and the printers that support it are in multicolour 3D printers.

The same pause is handy for something else: embedding objects inside the part, such as nuts or magnets, before the printer covers them. Prusa recommends securing magnets with a drop of super glue so they don't jump out; if you're unsure about the glue, here's what to use with each filament.

How to pick the layer for the change

This is the step most people get wrong. In PrusaSlicer, Cura and Bambu Studio the pause goes in at the start of the layer you pick, before printing it. So the layer to mark is the first one that should come out in the new colour, not the last one of the old colour.

An example with the 3D text generator, which by default makes a 3 mm base with 1.6 mm of raised relief on top:

  1. With 0.2 mm layers, the base ends at 3.0 mm.
  2. The first relief layer is the one ending at 3.2 mm: that's where the change goes.
  3. In the slicer preview, move the layer slider up until the first letters appear on the base and confirm the height it shows. Trust the height in millimetres over the layer number, because the first layer is sometimes thicker than the rest.

A tip from Prusa: give each colour at least two layers, because filament is slightly translucent and a single layer lets the colour underneath show through. The 1.6 mm relief in the example is plenty (that's 8 layers).

Step by step in each slicer

Bambu Studio

  1. Slice the part and go to the preview.
  2. Slide the vertical layer bar to the first layer of the new colour.
  3. Right-click the "+" on the bar and choose "Add Pause". Slice again.

Watch out for the filament-change option in the same menu: on printers without an AMS, several users on the official Bambu Lab forum report it didn't stop the print. The pause is the reliable route. Run a short test before committing to a long print.

PrusaSlicer

  1. Slice and, in the preview, drag the layer slider to the chosen layer.
  2. Click the orange "+" icon to add a colour change (M600 command). The printer stops when it gets there and prompts you to swap filament.
  3. If you'd rather have a plain pause, right-click the "+" and pick "Insert pause print (M601)", with an optional message for the screen.

Requirements according to Prusa: PrusaSlicer 2.2 or later, and it doesn't work with sequential printing enabled.

Cura

  1. Open Extensions › Post Processing › Modify G-Code and add the "Filament Change" script (or "Pause at Height" if your printer doesn't support M600).
  2. Enter the layer number as shown in Cura's preview. You can list several, separated by commas.

Cura's own script spells it out: the change happens at the start of the given layer.

Creality Print

The flow matches Bambu Studio: slice, move the layer bar to the chosen layer, right-click the "+", "Add Pause" and slice again. According to the official Creality forum, during the pause the toolhead moves aside, the bed holds its temperature and the nozzle cools down.

What to do when the printer stops

  1. Don't touch the part. It has to stay exactly where it is so the next layer lands in place.
  2. Unload the filament from the printer's screen. If the nozzle cooled during the pause, heat it back up first.
  3. Load the new colour and let it purge. At first a mix of both colours comes out, as Bambu Lab describes: wait until it runs clean in the new colour.
  4. Remove the purged strand hanging from the nozzle and resume the print.

Always use the same type of filament (PLA with PLA, PETG with PETG): Prusa warns that different materials usually stick to each other poorly.

If your printer ignores the change

Colour changes rely on the M600 command. In Marlin firmware it only works if the advanced pause feature is enabled and the printer has a screen; otherwise the printer won't do the change and keeps printing. In that case, use the slicer's pause and swap filament with the printer's load and unload menus.

Ideas to get started

Frequently asked questions

Can you print in multiple colours without an AMS?
Yes, as long as the colours change with height: a base in one colour and raised text in another, stripes, lettering on a plate… You schedule a pause or colour change at the right layer, the printer stops, you swap the filament by hand and it carries on. What you can't do is have two colours in the same layer.
Which layer should the change go on?
The first layer that should come out in the new colour. PrusaSlicer, Cura and Bambu Studio insert the pause at the start of the layer you pick, before printing it. Check in the slicer preview that the raised part begins on that layer.
How many colours can I use?
As many as changes you schedule: each change is one more pause. In PrusaSlicer you just repeat the step on other layers, and on the Bambu Lab forum users print four colours with three pauses. The limit is your patience, since you need to be there for each one.
Can I mix PLA and PETG in one print?
It's not a good idea. Prusa recommends always using filaments of the same type (PLA with PLA, PETG with PETG), because different materials usually stick to each other poorly and the part can split right at the change.
My printer doesn't stop for the filament change. Why?
Colour changes use the M600 command, which the firmware has to support (Marlin needs a specific option and a screen). On top of that, on printers without an AMS some slicers' "filament change" doesn't stop the print. The fix is to use "Add Pause" instead and swap by hand.

Sources