3D Print Cost CalcQuote workspace

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.0.0, stamped into every calculation, and this page was last verified against the implementation on 25 July 2026.

Estimates, not guarantees

Results are only as good as the inputs. Useful life, failure rate, average power draw and overhead are assumptions you own. Where a value is unknown, the tools say so rather than silently substituting zero.

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.

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 files provide geometry only — volume via the divergence theorem and a bounding box — and are labelled a geometry estimate. Non-watertight meshes are detected and flagged because their volume is unreliable. Files are parsed entirely in the browser and never uploaded.

Sources & limitations

Change log

VersionDateChange
v1.0.02026-07-25Initial 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.