A 3D print cost spreadsheet needs a block of 16 settings cells and one row per print with 11 columns, A to K. Built with the defaults below, a 100 g PLA part that prints in 5 hours with 10 minutes of your time costs $6.28 and sells for $8.16 at a 30% markup. Every formula on this page works unchanged in Excel and Google Sheets.
How do you make a 3D print cost spreadsheet?
Put your fixed costs in a settings block, one per cell, then give each print a row: job name, grams and hours from the slicer, hands-on minutes, then formula columns for filament, electricity, machine wear, labor, failure allowance, cost and price. Point every formula at the settings with absolute references, such as $B$2, and fill it down.
Step 1: the settings block (A1:C17)
Type the labels in column A and the values in column B. Rows 16 and 17 are formulas, so the printer’s price and upkeep become a cost per print hour.
| Row | Setting (A) | Default (B) | Where the default comes from |
|---|---|---|---|
| 2 | Spool price | 20 | Polymaker lists PolyLite PLA 1 kg at $19.99 on its US store |
| 3 | Spool grams | 1000 | Net filament on a 1 kg spool |
| 4 | Printer price | 800 | Placeholder, same as both calculators |
| 5 | Resale value | 150 | Placeholder |
| 6 | Service years | 3 | Placeholder |
| 7 | Printing hours per year | 2190 | 25% of the year’s 8,760 hours |
| 8 | Average watts | 80 | Prusa’s measured average for its MK-series printers on PLA |
| 9 | Electricity price | 0.18 | U.S. Energy Information Administration (EIA) residential average: 18.19¢ per kWh, January to July 2026 |
| 10 | Maintenance per year | 100 | Placeholder: nozzles, belts, build sheets |
| 11 | Labor rate | 20 | Placeholder, $ per hour |
| 12 | Failure rate | 0.05 | 5% of attempts fail |
| 13 | Markup | 0.3 | 30% on cost |
| 14 | Marketplace fee | 0 | Share of the sale price the platform keeps |
| 15 | Fixed fee per order | 0 | Per-order charges in dollars |
| 16 | Depreciation per hour | =(B4-B5)/(B6*B7) |
$0.099 with the defaults |
| 17 | Maintenance per hour | =B10/B7 |
$0.046 with the defaults |
Enter the rates in rows 12 to 14 as decimals, or type 5%. Both programs store 5% as 0.05. Prusa puts its printers’ average maintenance interval at about 800 print hours, so 2,190 hours a year means two or three service rounds. Price row 10 from your own parts receipts.
Named cells are optional. Excel names a cell when you type a name in the Name Box. Google Sheets uses Data > Named ranges. The formulas here use $B$ references instead, so they work the moment you paste them.
Step 2: the job columns (row 18 down)
Row 18 holds the headers. You type columns A to D for each print, and E to K calculate.
| Column | Header | What goes in it |
|---|---|---|
| A | Job | Name of the print |
| B | Grams | Filament from the slicer, purge and supports included |
| C | Hours | Print time in decimal hours (2 h 45 min = 2.75) |
| D | Hands-on minutes | Slicing, plate removal, support removal, packing |
| E | Filament $ | Formula |
| F | Electricity $ | Formula |
| G | Machine $ | Formula: depreciation plus maintenance |
| H | Labor $ | Formula |
| I | Failure allowance | Formula |
| J | Cost | Formula |
| K | Price | Formula |
Step 3: the formulas (row 19)
Paste these into E19 to K19, select the row and the empty rows below, then press Ctrl+D (Cmd+D on a Mac) to fill down.
E19 =B19*$B$2/$B$3
F19 =$B$8/1000*C19*$B$9
G19 =C19*($B$16+$B$17)
H19 =D19/60*$B$11
I19 =(E19+F19+G19)*$B$12/(1-$B$12)
J19 =SUM(E19:I19)
K19 =J19*(1+$B$13)/(1-$B$14)+$B$15
The failure allowance adds f / (1 - f) extra attempts per good part, about 5.3% at a 5% failure rate. Labor stays out of it because you slice and finish a part once, however many attempts the printer takes. The price divides by (1 - fee) because a platform takes its share of the final price, markup included.
The formulas use only arithmetic and SUM, which behave the same in both programs. Format E to K as currency instead of rounding inside the formulas, so the cost total never drifts by a cent. To round the price up to the next cent, wrap K in ROUNDUP(…,2). Excel and Google Sheets both take the number, then the decimal places.
Worked row: checking the sheet against the calculator
Row 19 with the defaults returns a $6.28 cost and an $8.16 price. Fed the same inputs, the print cost calculator returns both figures to the cent, because it runs the same six lines of math.
| Cell | Arithmetic | Result |
|---|---|---|
| E19 Filament | 100 g × $20 / 1,000 g | $2.00 |
| F19 Electricity | 80 W / 1,000 × 5 h × $0.18 | $0.07 |
| G19 Machine | 5 h × ($650 / 6,570 h + $100 / 2,190 h) = 5 × $0.1446 | $0.72 |
| H19 Labor | 10 min / 60 × $20 | $3.33 |
| I19 Failure | $2.795 × 0.05 / 0.95 | $0.15 |
| J19 Cost | sum of E to I | $6.28 |
| K19 Price | $6.275 × 1.3 / (1 - 0) + $0 | $8.16 |
Two ways to confirm it:
- Against the print cost calculator. Open the print cost calculator with this sheet’s machine figures (printer $650 after resale, 6,570 lifetime hours, $0.0457 maintenance per hour). It shows $6.28 and $8.16.
- Against its own default example. Set resale to 0, service years to 1, printing hours to 5000 and maintenance to 250. Rows 16 and 17 become $0.16 and $0.05, the calculator’s defaults, and row 19 returns its $6.62 cost and $8.61 price.
The machine cells also match the printer hourly rate calculator: $0.10 depreciation, $0.05 maintenance and $0.01 electricity per hour. Set its overhead and hands-on time to 0 and it shows the same $0.16 per machine-hour.
3D printing cost spreadsheet template (CSV)
Copy this comma-separated values (CSV) block into a plain-text file, save it as print-costs.csv and open it. The row order matters, because the formulas point at row numbers, so do not add blank lines.
Setting,Value,Unit
Spool price,20,$ per spool
Spool grams,1000,g per spool
Printer price,800,$
Resale value,150,$ at end of service
Service years,3,years
Printing hours per year,2190,h (25% of the year)
Average watts,80,W while printing
Electricity price,0.18,$ per kWh
Maintenance per year,100,$
Labor rate,20,$ per hour
Failure rate,0.05,share of attempts
Markup,0.3,share of cost
Marketplace fee,0,share of sale price
Fixed fee per order,0,$ per order
Depreciation per hour,=(B4-B5)/(B6*B7),$ per print hour
Maintenance per hour,=B10/B7,$ per print hour
Job,Grams,Hours,Hands-on minutes,Filament $,Electricity $,Machine $,Labor $,Failure allowance,Cost,Price
Sample part,100,5,10,=B19*$B$2/$B$3,=$B$8/1000*C19*$B$9,=C19*($B$16+$B$17),=D19/60*$B$11,=(E19+F19+G19)*$B$12/(1-$B$12),=SUM(E19:I19),=J19*(1+$B$13)/(1-$B$14)+$B$15
- Excel. Open the file with File > Open. Excel reads any cell that starts with
=as a formula. Then save it as an .xlsx workbook, because a CSV keeps no currency formats. - Google Sheets. Use File > Import > Upload and leave “Convert text to numbers, dates, and formulas” ticked. It is ticked by default.
None of the formulas contain a comma, so the CSV needs no quoting. If you add a ROUNDUP, wrap that whole field in double quotes.
Where the grams and hours come from
Your slicer reports both numbers after slicing. Copy them into columns B and C.
- Bambu Studio. The preview lists filament length and weight for the model, flushing and the prime tower, and print time by line type. Put the total grams, flushing included, in column B. Flushed plastic still comes off your spool.
- PrusaSlicer. The print time estimate appears in the G-code preview after slicing. Weight in grams appears only once the filament profile has a density; without one you get volume instead.
- OrcaSlicer. The wiki lists
total_weight(grams) andprint_timeamong the placeholders allowed in the export filename. A filename format such as{input_filename_base}_{total_weight}g_{print_time}.gcodewrites both figures into every file name.
Convert minutes to decimal hours before typing: 1 h 15 min is 1.25 and 6 h 40 min is 6.67.
Turning the cost sheet into a price sheet
Rows 13 to 15 turn the cost into a price. For a US Etsy shop, enter 0.095 as the marketplace fee: Etsy’s 6.5% transaction fee plus 3% payment processing. Enter 0.45 as the fixed fee: the 25-cent processing charge plus the 20-cent listing fee. The worked row then prices at $6.275 × 1.3 / 0.905 + $0.45 = $9.46. Offsite Ads fees are not included.
Two optional columns help when you sell:
L19 Cost per gram =J19/B19
M19 Profit after fees =K19*(1-$B$14)-$B$15-J19
With the defaults, L19 is 6.3 cents a gram and M19 is $1.88. For a single job without a spreadsheet, the print cost calculator runs the same math and saves your inputs in its link. The filament cost calculator compares spool prices per kilogram before you fill in row 2.
Published · Figures last checked
Sources
- U.S. Energy Information Administration, Electric Power Monthly, Table 5.6.B: Average price of electricity to ultimate customers by end-use sector, year-to-date through July 2026 (accessed 2026-10-10)
- Prusa Knowledge Base, FAQ: Frequently asked questions (power consumption, maintenance interval) (accessed 2026-10-10)
- Polymaker, PolyLite PLA (US store, 1 kg price) (accessed 2026-10-10)
- Bambu Lab Wiki, View slicing information (Bambu Studio) (accessed 2026-10-10)
- Prusa Knowledge Base, PrusaSlicer G-code viewer (print time estimate in the preview) (accessed 2026-10-10)
- PrusaSlicer GitHub issue #13893, Add filament weight to the Sliced Info pane (closed: weight shows once filament density is entered) (accessed 2026-10-10)
- OrcaSlicer Wiki, Built-in placeholder variables (print statistics and filename templates) (accessed 2026-10-10)
- Microsoft Support, Define and use names in formulas (accessed 2026-10-10)
- Google Docs Editors Help, Name a range of cells (accessed 2026-10-10)
- Microsoft Support, ROUNDUP function (accessed 2026-10-10)
- Google Docs Editors Help, ROUNDUP (accessed 2026-10-10)
- Google Docs Editors Help, Import data sets in Google Sheets (accessed 2026-10-10)
- xFanatical, Edit CSV file in Google Sheets (the Convert text to numbers, dates, and formulas import option) (accessed 2026-10-10)
- OWASP Foundation, CSV Injection (spreadsheets read cells starting with = as formulas) (accessed 2026-10-10)
- Etsy, Fees & Payments Policy (accessed 2026-10-08)
- Etsy, Etsy Payments Policy (payment processing fees by country) (accessed 2026-10-08)