Please enter valid positive numbers for all fields.
Volumetric Flow Rate:0 mm³/s
Linear Filament Speed:0 mm/s
Understanding Extrusion Rate in 3D Printing
The Extrusion Rate, commonly referred to as the Volumetric Flow Rate, is a critical metric in FDM/FFF 3D printing. It determines the volume of plastic your printer needs to melt and push through the nozzle per second to achieve a specific print setting. Understanding this value is essential for identifying the maximum speed limits of your hotend and troubleshooting under-extrusion issues.
The Extrusion Rate Formula
The volumetric flow rate is calculated based on the geometry of the line being printed. The formula is:
For example, if you are printing with a standard 0.4mm nozzle (usually set to 0.4mm line width), a 0.2mm layer height, and a speed of 60mm/s, the calculation would be:
0.4 mm × 0.2 mm × 60 mm/s = 4.8 mm³/s
Why Volumetric Flow Rate Matters
Every hotend has a physical limit to how fast it can melt filament. Standard hotends (like the V6 or Mk8) usually top out around 10-15 mm³/s. High-flow hotends (like the Volcano or Rapido) can reach 25-50+ mm³/s.
If your calculator result exceeds your hotend's capacity, you will experience:
Under-extrusion: Gaps in your print layers.
Extruder skipping: The gears will click and grind the filament because the back-pressure is too high.
Weak parts: Poor layer adhesion due to insufficient melting.
Linear Filament Speed
This calculator also provides the Linear Filament Speed. This is the speed at which the raw filament enters the extruder. While the nozzle output is fast, the filament enters slowly because it is much thicker (1.75mm or 2.85mm) than the nozzle orifice. This metric is useful for tuning extruder e-steps/mm and verifying motor capabilities.
How to Optimize Print Speed
To print faster without upgrading hardware, you must balance your settings. If you increase your Layer Height, you must decrease your Print Speed to keep the Volumetric Flow Rate within your hotend's safe range. Use this calculator to simulate different scenarios before slicing your models.
function calculateExtrusion() {
// Get DOM elements
var lwInput = document.getElementById('lineWidth');
var lhInput = document.getElementById('layerHeight');
var psInput = document.getElementById('printSpeed');
var fdInput = document.getElementById('filamentDiameter');
var resultBox = document.getElementById('resultBox');
var errorMsg = document.getElementById('errorMsg');
var volResult = document.getElementById('volumetricFlow');
var linResult = document.getElementById('linearSpeed');
// Parse values
var width = parseFloat(lwInput.value);
var height = parseFloat(lhInput.value);
var speed = parseFloat(psInput.value);
var diameter = parseFloat(fdInput.value);
// Validation
if (isNaN(width) || width <= 0 ||
isNaN(height) || height <= 0 ||
isNaN(speed) || speed <= 0 ||
isNaN(diameter) || diameter <= 0) {
errorMsg.style.display = "block";
resultBox.style.display = "none";
return;
}
// Hide error if valid
errorMsg.style.display = "none";
// Calculation 1: Volumetric Flow Rate (mm³/s)
// Formula: Width * Height * Speed
var volumetricFlow = width * height * speed;
// Calculation 2: Linear Filament Speed (mm/s)
// Formula: Volumetric Flow / Cross-sectional Area of Filament
// Area = PI * r^2
var radius = diameter / 2;
var area = Math.PI * Math.pow(radius, 2);
var linearSpeed = volumetricFlow / area;
// Update UI
volResult.innerHTML = volumetricFlow.toFixed(2) + " mm³/s";
linResult.innerHTML = linearSpeed.toFixed(2) + " mm/s";
resultBox.style.display = "block";
}