Trust
Methodology
Every number this site produces is a transparent estimate built from the formulas below, using the inputs you provide. Nothing is a guarantee of print success, dimensional accuracy, strength, safety or delivery time. The current formula version is v1.1.0, stamped into every calculation, and this page was last verified against the implementation on 25 July 2026.
Estimates, not guarantees
The formulas
Material — filament
cost/gram = spool_price ÷ (spool_weight_g × (1 − waste)) material = grams_used × cost/gram
Support / purge material is costed as a separate line when present.
Material — resin
cost/mL = price_per_litre ÷ 1000 resin = mL_used × cost/mL total = resin + IPA + gloves + FEP_wear
Consumables are user-entered lines; no safety defaults are invented.
Energy
energy_kWh = average_watts ÷ 1000 × print_hours energy_cost = energy_kWh × rate_per_kWh
Nameplate watts are a rough input; a measured average is more accurate.
Machine ownership
depreciable = purchase + lifetime_maintenance − residual cost_per_hour = depreciable ÷ useful_print_hours machine_cost = cost_per_hour × print_hours
Useful life is the user's assumption, never a universal fact.
Labour
labour = Σ(minutes_by_task ÷ 60 × hourly_rate)
One-time order setup is kept separate from per-unit work so quantity tiers stay honest.
Failure reserve
reserve = repeatable_cost × p ÷ (1 − p)
An expected-value reserve for a failure probability p, not a guarantee. The user chooses which layers repeat.
Overhead
hourly: job_overhead = (monthly_overhead ÷ billable_hours) × print_hours explicit: per-order and per-unit lines entered directly
The two models are labelled and never combined invisibly.
Price, fees, margin, markup
margin price = (cost + fixed_fee) ÷ (1 − percentage_fee − margin) markup price = (cost × (1 + markup) + fixed_fee) ÷ (1 − percentage_fee) margin = profit ÷ price markup = profit ÷ cost
Inputs where percentage fee + margin ≥ 1 are rejected as impossible rather than returning a bogus number.
Sales tax / VAT
tax_amount = final_price × tax_rate gross = final_price + tax_amount ← what the customer pays
Applied strictly after the fee/margin solve — tax never enters the cost base or the solver. Inclusive vs exclusive changes the display (“£X inc. VAT” vs “£X + VAT”), never the customer total. Default is none; the user opts in.
Quantity tiers
tier_total = one_time_order_cost + quantity × per_unit_cost tier_unit_cost = tier_total ÷ quantity
One-time costs amortise across the batch, so per-unit cost falls with quantity.
Rounding & currency
Calculations run in plain numbers and round only at the currency boundary, using round-half-up to minor units (cents). This avoids the binary-float drift that makes naive Math.round(x*100)/100 mis-round values like 1.005. The calculators support arbitrary currencies; conversions are yours to supply, since live exchange rates are intentionally out of scope.
File parsing & accuracy
G-code is the truthful source for estimated print time and filament usage; the parser reads the slicer’s own header comments (Cura, PrusaSlicer, OrcaSlicer, Bambu Studio, SuperSlicer), attributes the slicer, and records the exact lines it used. STL and 3MF files provide geometry only — volume via the divergence theorem and a bounding box — and are labelled a geometry estimate; for 3MF the declared model unit and build transforms are applied before any figure is reported. Non-watertight meshes are detected and flagged because their volume is unreliable. Files are parsed entirely in the browser and never uploaded.
Sources & limitations
- The failure-reserve formula is the standard expected-value result for retries until success (expected attempts = 1 ÷ (1 − p)).
- Marketplace fee presets (e.g. Etsy) are dated and sourced but editable, because rates change and vary by account and region. They are a starting point, never an authority.
- Material densities and default rates are illustrative, and the printer power-draw presets (sourced above) are averages or nameplate maxima. Replace them with measured values for a quote you intend to send.
- This is not tax, legal, structural, medical or accounting advice, and it does not predict whether a part is fit for any purpose.
Sales tax / VAT presets
The tax presets are standard rates, last verified 2026-07-25. The default is always “none / not registered” — no one is opted into a rate they did not choose, and whether you must charge VAT or sales tax depends on your registration and jurisdiction. Sources: GOV.UK — VAT rates and European Commission — VAT rates applied in EU member countries. This tool does not give tax advice — confirm the rate that applies to you.
Preset sources
Every preset offered in the tools is dated and sourced, and editable — a preset is a starting point, never an authority. All were last verified 2026-07-25.
Printer power-draw presets
“Measured” figures are manufacturer-measured averages while printing; “max (nameplate)” figures are rated input power — real printing draw sits below the rating, so those presets are marked approximate in the tool. Measured averages are material-dependent (a hotter bed and chamber for ABS draws more than PLA).
| Printer | Watts | Figure type | Source |
|---|---|---|---|
| Prusa MK4 / MK3S+ | 80 | measured average — avg printing PLA; 120 W for ABS | Prusa Knowledge Base |
| Bambu Lab A1 mini | 80 | measured average — avg printing PLA; 75 W for PETG | Bambu Lab Wiki |
| Bambu Lab A1 | 95 | measured average — avg printing PLA; 200 W for ABS | Bambu Lab Wiki |
| Bambu Lab P1S | 105 | measured average — avg printing PLA; 140 W for ABS | Bambu Lab Wiki |
| Bambu Lab X1 / X1C | 105 | measured average — avg printing PLA; 150 W for ABS | Bambu Lab Wiki |
| Creality Ender-3 | 150 ≈ | max (nameplate), approximate — rated max — real printing draw is lower | Creality |
| Creality Ender-3 V2 | 270 ≈ | max (nameplate), approximate — rated max — real printing draw is lower | Creality |
| Anycubic Kobra 2 | 150 ≈ | measured average — independent measurement, 140–160 W while printing | Notebookcheck review |
| Anycubic Photon Mono (resin) | 45 ≈ | max (nameplate), approximate — rated input power | Anycubic |
| Elegoo Mars 4 (resin) | 72 ≈ | max (nameplate), approximate — rated input power (24 V × 3 A) | Elegoo |
| Elegoo Saturn 3 (resin) | 144 ≈ | max (nameplate), approximate — rated input power (24 V × 6 A) | Elegoo |
Electricity rate presets
| Preset | Rate | Period | Source |
|---|---|---|---|
| US average (residential) | $0.1844/kWh | May 2026, preliminary | U.S. EIA |
| UK price cap | £0.2611/kWh | 1 Jul – 30 Sep 2026 | Ofgem |
The EIA figure is a preliminary monthly average; the Ofgem cap is revised quarterly (the rate shown expires 30 September 2026). Your own tariff beats either.
Marketplace fee presets
The Etsy US preset (6.5% transaction fee, 3% + $0.25 payment processing, $0.20 listing fee) is sourced from the Etsy Fees & Payments Policy and last verified 2026-07-25. Fees vary by account, region and time — every field is editable.
Change log
| Version | Date | Change |
|---|---|---|
| v1.1.0 | 2026-07-25 | Added a sales tax / VAT layer applied after fees and margin (with inclusive/exclusive display), one-click customer-quote and internal-audit PDF export, and sourced, dated presets surfaced in the tools: VAT standard rates, printer power draws, electricity rates, and the Etsy US fee preset. |
| v1.0.0 | 2026-07-25 | Initial published formula set: material (filament & resin), energy, machine ownership, labour, expected-value failure reserve, overhead, margin/markup pricing with fee solve-back, and quantity tiers. |
Questions about a formula? The pricing guide works through them with numbers, and the privacy page covers how your data is handled.