⬢ prusa-profile-tuning

Phase 0 · Fundamentals · L3

What the slicer actually decides

One equation with three terms, and the reason "print faster" quietly becomes "melt more per second".

⏱ ~15 minutes• 🧠 Builds on L1–L2• Fundamentals
⏩ Already know this?

This lesson covers what a slicer produces, reading G-code, the extrusion equation flow = height × width × speed, and why max volumetric speed clamps everything else. If that's already yours, skip straight to Phase 1 →

◎ Why this lesson

Every remaining lesson in this course is a number you will type into PrusaSlicer. This is the lesson that makes those numbers mean something physical instead of being knobs. Get the extrusion equation and you can predict, before you press print, whether a speed you just set is inside your machine's melting capacity — which is the difference between tuning and guessing. It's also how you'll read the results of the max volumetric speed test in Lesson 15 rather than eyeballing them.

PrusaSlicer's job is narrow. It takes a solid model and produces a text file of movement instructions. It decides where the nozzle goes, how fast, and how much filament to push while it gets there. Everything you tune is one of those three.

1G-code is a list of moves, and you can read it

Slice anything and look at the output. Almost all of it is one command:

A single extruding move
G1 X120.5 Y98.2 E1.842 F2700
;      ^ go here     ^ push this much  ^ at this speed

Four things worth internalising:

Some commands are settings rather than moves, and these are the ones this course will have you writing by hand in Phase 2:

The G-code you'll actually type. Note the split by firmware family.
CommandDoesWhere
M104 S220set nozzle temperature, don't waitall three printers
M221 S95firmware flow multiplier, in %all three printers
M220 S150feedrate override, in %all three printers
M900 K0.04set Linear AdvanceMK3S only (Marlin)
M572 S0.045set Pressure AdvanceMK4S / Core One only (Buddy)
⚠ K and S are not the same scale

An MK3S M900 K value and an MK4S M572 S value both compensate for melt-zone pressure, and they are not interchangeable numbers. Pressure Advance replaced Linear Advance on the MK4 family from firmware 5.0.0.1 Copying 0.05 from one to the other is the single most expensive mistake available in this course, because the print will still work — just slightly wrong, everywhere, forever.

2The extrusion equation

The slicer computes each E value from a simple physical picture. An extruded line is approximately a rectangle in cross-section: as tall as the layer height, as wide as the extrusion width. Move that cross-section along at some speed and you get a volume per second:

The whole course, in one line
volumetric flow (mm³/s)  =  layer height  ×  extrusion width  ×  print speed
                              (mm)              (mm)            (mm/s)

Two things follow immediately, and both are counter-intuitive enough to be worth stating out loud.

First: extrusion width is not nozzle diameter. A 0.4 mm nozzle typically lays a ~0.45 mm wide line, because the plastic is squashed against the layer below. PrusaSlicer sets it per feature type and you read the real value at Print Settings → Advanced → Extrusion width. You'll need that exact number in Lesson 11 — using 0.4 there will hand you a wrong extrusion multiplier that looks right.

Second: mm/s is a dishonest unit for speed. Consider two prints:

Same speed. Nearly double the demand on the hotend.
 LayerWidthSpeedFlow
Fine detail print0.150.451006.75 mm³/s
Draft print0.250.4510011.25 mm³/s

Both say "100 mm/s". One asks the hotend for two-thirds more plastic per second than the other. The MK3S, with its ~11–13 mm³/s ceiling, is comfortable in the first row and at its limit in the second — same number on the slider. This is why the honest unit for "how fast is this printing" is mm³/s, and why every hotend comparison in this course is quoted that way.

3The ceiling, and what happens when you hit it

Max volumetric speed (MVS) is a per-filament setting at Filament Settings → Advanced → Max volumetric speed. It is a hard cap: PrusaSlicer will silently slow any move whose speed would exceed it.

That word silently is the trap. If you set 150 mm/s perimeters and MVS is 8 mm³/s, you do not get an error. You get 150 in the settings box, something much slower in the G-code, and a print time that makes no sense. And in the opposite case — MVS left at a permissive default while you raise speeds — you get the failure from Lesson 1: plastic arriving faster than the melt zone can heat it, walls going matte, thin and weak, with no warning at all.

▲ The order this forces

MVS is measured before speeds are set, in Lesson 15, not after. Set speeds first and you're tuning numbers that a cap you haven't measured yet may already be overriding. This is the first concrete example of the calibration order — and Lesson 4 is entirely about why that order is not negotiable.

Finally, the equation cuts the other way too, and this is the practical trick worth remembering: to print faster without asking more of the hotend, raise layer height rather than speed. Going from 0.15 mm to 0.25 mm layers at the same speed prints a given object in roughly 40 % less time — but it also raises flow by two-thirds, so you have to check the equation, not just the clock.

4Do the arithmetic before you look

Work each one out on paper first — actually compute it. Retrieval is the point; reading the answer teaches nothing. The calculator below is for checking your answer and then for playing with the three terms until the shape of the equation is yours.

🧮 The extrusion equation, live

Type your own profile's numbers in. Read extrusion width out of Print Settings → Advanced → Extrusion width — not off the nozzle.

Working ceilings from Lesson 1, until you measure your own: MK3S ~11–13 · MK4S ~22–28 · Core One ~22–28 mm³/s. After Lesson 15 you type your measured MVS in here instead, and this becomes a calculator about your machine rather than a table.

Volumetric flow
Share of the ceiling
Speed that saturates it
Comfortable. You have headroom — and if you want the part sooner, raising layer height buys more time than raising speed does, right up until it doesn't.
Inside the ceiling, but within 15 % of it. That is where a cold draught, a slightly wet spool or a thicker patch of filament starts showing up as matte walls. Fine for infill, tight for external perimeters.
Over the ceiling. With max volumetric speed set correctly, PrusaSlicer silently clamps this move to about and your print takes longer than the settings suggest. With MVS left permissive, the machine attempts it and under-extrudes.
Nothing is saved — this is a scratchpad, not a profile.
Your MK3S at 0.20 mm layers, 0.45 mm width, 45 mm/s perimeters. What flow, and is it safe?

0.20 × 0.45 × 45 = 4.05 mm³/s

Comfortably inside the MK3S's ~11–13 mm³/s ceiling — roughly a third of it. Perimeter speed is almost never what saturates a hotend; infill is. Which is exactly why external perimeter speed is free to be slow: you're spending time you weren't going to spend melting anyway.

Same machine, 0.20 mm, 0.45 mm, but infill at 200 mm/s. Now what?

0.20 × 0.45 × 200 = 18 mm³/s

Over the MK3S's ceiling by a wide margin. If MVS is set correctly at ~13, PrusaSlicer clamps this move down to about 145 mm/s and your print takes longer than the settings suggest. If MVS is left permissive, the machine tries it and under-extrudes. Neither outcome matches the "200" you typed — which is the whole lesson.

Core One, 0.25 mm layers, 0.45 mm width. What speed exactly saturates 24 mm³/s?

Rearrange: speed = flow ÷ (height × width) = 24 ÷ (0.25 × 0.45) = 213 mm/s

So a Core One at 0.25 mm layers can genuinely sustain ~213 mm/s of solid extrusion — and the same machine at 0.15 mm layers could sustain 355 mm/s for the same demand on the hotend. Thinner layers buy speed headroom; they just spend it on more layers.

Why does a PETG profile cap out around 8–13 mm³/s when the same machine does 24 with PLA?

Because MVS is a property of plastic and hotend together, not of the hotend alone. PETG is more viscous and needs more heat per mm³ to reach a printable state, so the same heater block delivers fewer mm³/s of usable melt. It's a per-filament setting for exactly this reason — and it's why you'll measure it once per material per machine, not once per machine.

5Check yourself

From memory. Question 3 reaches back to Lesson 1.

Question 1 of 3
You halve your layer height and keep print speed the same. What happens to volumetric flow?
Question 2 of 3
You set perimeters to 150 mm/s but the sliced print time barely changes. Most likely cause?
Question 3 of 3
You measure M900 K0.045 on the MK3S. What should you put on the Core One?
✎ Your task · do this with your tutor

Read your own G-code

Slice anything — a calibration cube is ideal — with the stock 0.20 profile for one of your printers. Then:

  1. Export the G-code and open it in a text editor. Find one G1 line with an E value in it. Write down its F value and convert it to mm/s.
  2. Look up the real extrusion width at Print Settings → Advanced → Extrusion width → Perimeters. Write down the actual number, not 0.4.
  3. Compute the volumetric flow for that move. Compare it to your machine's ceiling from Lesson 1.
  4. Find the M572 or M900 line near the top of the file and write down what value your stock profile is currently using. That's your Phase 2 starting point.

→ Paste the four numbers back to me, with the machine you used. I'll tell you whether that profile is leaving throughput on the table or already at the edge.

What you can now say

  1. G-code is mostly G1 moves: position, filament consumed, feedrate in mm/minute.
  2. Flow = layer height × extrusion width × speed. Three terms, and speed is only one of them.
  3. mm/s is a dishonest unit — the same number is a different demand at a different layer height.
  4. Max volumetric speed clamps silently, which is why it gets measured before speeds are set, not after.
  5. M900 K and M572 S are different features on different scales, and neither converts to the other.
📖
Primary source · read this next
The authoritative list of what M572 and its neighbours accept on the MK4S family and Core One. Worth skimming now so that when Phase 2 asks you to write a custom G-code block, you're checking a reference rather than guessing.
💬 I'm your tutor — ask me anything. Paste me a chunk of your own G-code and I'll walk you through it line by line, including the bits at the top that look like noise. Reading your own sliced output is the fastest way to stop treating the slicer as a black box. Confused beats stuck.

§References

  1. Prusa Research. Pressure Advance. Pressure Advance (M572 S) replaces Linear Advance on the MK4 family, XL and MINI/+ from firmware 5.0.0. Link.
  2. Prusa Research. Buddy firmware-specific G-code commands. Reference for the commands accepted by MK4-family and Core One firmware. Link.
  3. Prusa Research. Extrusion multiplier calibration. Total flow rate is the firmware multiplier (M221) multiplied by the slicer's extrusion multiplier. Link.

Lesson L3 of the prusa-profile-tuning course · all lessons · The Calibration Card · glossary