3D Printing · Cost Estimation
How to estimate 3D print cost from an STL
A practical, math-first walkthrough of how to estimate 3D print cost from an STL file — material, print time, machine time, markup, and the assumptions each depends on.
The short answer
The cost of a 3D print is, roughly:
cost = material_weight × filament_price_per_gram
+ print_time × machine_hourly_rate
+ fixed_setup_fee
+ labor / post_processing
+ markupEverything else is just figuring out each term. The hard part is estimating material weight and print time from your STL file before you hit print.
Step 1 — get the actual mesh volume
An STL file describes a solid as a mesh of triangles. To calculate its true volume (not its bounding-box volume, which is always larger), each triangle is treated as the base of a signed tetrahedron with the origin. Summing the signed volumes gives you the enclosed volume of the mesh.
For a model that's 40 × 40 × 20 mm, the bounding-box volume is 32 cm³, but the actual printed volume is almost always much smaller because of the interior. A small desk hook might be 6–8 cm³ of printed plastic even when its bounding box is 10× that.
Step 2 — apply shells and infill
FDM prints aren't solid — the outer perimeters (walls) and the top/bottom layers are solid plastic, and everything inside is filled at a chosen infill percentage. A reasonable default split:
- Perimeter walls and top/bottom layers: ~30% of total volume, always solid.
- Interior: the remaining ~70%, filled at your infill percentage (typically 15–40%).
So a 10 cm³ mesh at 20% infill prints somewhere around 10 × (0.30 + 0.70 × 0.20) ≈ 4.4 cm³ of plastic. Supports add on top of that — usually 5–25% more volume depending on how much of the part overhangs.
Step 3 — convert volume to weight
Cost is per gram, not per cm³. Multiply printed volume by the material's density:
- PLA — 1.24 g/cm³
- PETG — 1.27 g/cm³
- ABS — 1.05 g/cm³
- TPU — 1.20 g/cm³
- Resin (standard) — ~1.10 g/cm³
A 4.4 cm³ print in PLA is about 5.5 g. At a typical retail filament cost of $0.03/g, that's $0.16 of material. The scary-sounding prints are almost always the machine time, not the plastic.
Step 4 — estimate print time
FDM throughput — how many cm³ per hour the machine can actually lay down — is approximately:
throughput (cm³/h) = layer_height × nozzle_width × print_speed × 3.6
For a typical 0.2 mm layer height, 0.4 mm nozzle, and 60 mm/s print speed, that's roughly 17 cm³/hour before travel moves. Adding ~25% for travel and retraction overhead gives ~13 effective cm³/hour. A 4.4 cm³ print takes about 20 minutes.
Resin is different: print time scales with the number of layers, not the volume. Each layer takes a fixed exposure plus a lift time, and all parts on the plate print simultaneously.
Step 5 — add the non-material costs
- Machine hourly rate — electricity, nozzle wear, bed wear, amortized printer cost. Hobbyists often price this at $1–$3/hour; commercial shops typically run $5–$15/hour per machine.
- Setup fee — slicing, bed prep, first-layer inspection, removal. Even a two-minute print has a few minutes of human time around it.
- Post-processing — support removal, sanding, painting. Usually billed by labor hours or a flat per-part fee.
- Markup— covers failed prints, shipping supplies, platform fees, and actual margin. 30–60% is common for small shops; it's part of the price, not a bonus on top.
Common mistakes
- Using bounding-box volume. Always parse the mesh. Bounding-box estimates can be 5–10× off for anything non-cubic.
- Forgetting supports. A 10 cm³ figurine with an arm outstretched might need 3 cm³ of support scaffolding that you throw away.
- Pricing from weight only. Two parts can weigh the same but take very different amounts of machine time — thin tall parts are far slower per gram.
- No setup fee on small jobs. A $0.50 part that takes 10 minutes of human time around it is a loss. Set a minimum.
Skip the manual math
The Syntax Forge 3D print cost calculator does every step above automatically — parses your STL, models shells and infill, applies the right density, estimates print time from your chosen settings, and lets you plug in your own shop rates. Drop an STL and you get a breakdown in seconds.