Machine Shop Rate Calculator

Machine Shop Rate Calculator body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; margin: 0; padding: 0; } .calculator-container { max-width: 800px; margin: 40px auto; padding: 30px; background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .calc-header { text-align: center; margin-bottom: 30px; } .calc-header h2 { color: #2c3e50; margin-bottom: 10px; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } @media (max-width: 600px) { .calc-grid { grid-template-columns: 1fr; } } .input-group { margin-bottom: 15px; } .input-group label { display: block; margin-bottom: 5px; font-weight: 600; color: #495057; font-size: 0.9em; } .input-group input { width: 100%; padding: 10px; border: 1px solid #ced4da; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .input-group input:focus { border-color: #007bff; outline: none; } .full-width { grid-column: 1 / -1; } .btn-calculate { background-color: #0056b3; color: white; border: none; padding: 12px 20px; font-size: 16px; border-radius: 4px; cursor: pointer; width: 100%; margin-top: 10px; transition: background-color 0.2s; font-weight: bold; } .btn-calculate:hover { background-color: #004494; } .results-area { margin-top: 30px; padding: 20px; background-color: #ffffff; border: 1px solid #dee2e6; border-radius: 6px; display: none; } .result-row { display: flex; justify-content: space-between; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #eee; } .result-row:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .result-label { font-weight: 500; color: #666; } .result-value { font-weight: bold; color: #2c3e50; } .highlight-result { background-color: #e8f4fd; padding: 15px; border-radius: 4px; border-left: 5px solid #0056b3; margin-top: 15px; } .highlight-result .result-label { color: #0056b3; font-size: 1.1em; } .highlight-result .result-value { font-size: 1.5em; color: #0056b3; } /* Article Styles */ .content-article { max-width: 800px; margin: 40px auto; padding: 0 20px; } .content-article h2 { color: #2c3e50; margin-top: 30px; } .content-article h3 { color: #34495e; margin-top: 25px; } .content-article p { margin-bottom: 15px; } .content-article ul { margin-bottom: 15px; padding-left: 20px; } .content-article li { margin-bottom: 8px; } .info-box { background-color: #f1f8ff; border-left: 4px solid #007bff; padding: 15px; margin: 20px 0; }

Machine Shop Rate Calculator

Determine your hourly shop rate based on overhead, labor, efficiency, and profit goals.

Total Annual Overhead: $0.00
Total Annual Labor Cost (Fully Burdened): $0.00
Total Annual Operating Cost: $0.00
Total Annual Billable Hours: 0
Break-Even Hourly Rate: $0.00 / hr
Required Shop Rate: $0.00 / hr
This rate achieves a 0% profit margin on revenue.

Machine Shop Rate Calculator: A Guide to Profitable Pricing

Calculating the correct shop rate is one of the most critical administrative tasks for any machine shop, fabrication facility, or job shop. Pricing your services too low leads to "busy poverty" where machines are running but money is lost, while pricing too high can drive customers to competitors. This Machine Shop Rate Calculator uses the cost-plus-margin method to determine exactly what you need to charge per hour to cover all expenses and achieve your profit goals.

How to Calculate Your Machine Shop Rate

To determine a profitable hourly rate, you must account for both direct expenses (labor) and indirect expenses (overhead), as well as the efficiency of your shop floor. Here is the logic used in the calculator above:

1. Determine Total Annual Overhead

Overhead includes every cost required to keep your doors open that isn't directly tied to a specific customer part. This includes:

  • Rent or Mortgage payments for the facility
  • Utilities (electricity for CNC machines can be significant)
  • Machine payments and depreciation
  • Software subscriptions (CAD/CAM licenses, ERP)
  • Administrative salaries (sales, office manager, owner's draw)
  • Consumables and shop supplies

2. Calculate Fully Burdened Labor Cost

The cost of an employee is not just their hourly wage. You must calculate the "Labor Burden," which includes:

  • Employer payroll taxes (Social Security, Medicare)
  • Worker's Compensation insurance
  • Health insurance and retirement benefits
  • Paid time off and sick leave

A typical labor burden adds 20% to 30% to the base hourly wage. If you pay a machinist $30/hour, their actual cost to the company is likely closer to $39/hour.

3. Estimate Billable Efficiency

This is where most shops make mistakes. You cannot bill for 100% of the hours you are open. Machines require setup, maintenance, and warming up. Employees take breaks, attend meetings, or clean up. A realistic efficiency rate for a job shop is often between 70% and 85% (about 28 to 34 hours per week per employee).

Pro Tip: Never divide your annual costs by 2080 hours (40 hours × 52 weeks). Using 2080 assumes 100% efficiency, which mathematically guarantees you will lose money because no human or machine is 100% efficient.

Understanding the Formula

The calculator uses the following mathematical framework:

Step 1: Total Annual Cost = (Annual Overhead) + (Annual Fully Burdened Labor)

Step 2: Break-Even Rate = Total Annual Cost ÷ Total Billable Hours

Step 3: Target Shop Rate = Break-Even Rate ÷ (1 – Desired Profit Margin)

Note: We calculate margin based on revenue (selling price), not markup on cost. This ensures that if you aim for a 20% margin, 20 cents of every dollar billed is profit.

Factors Influencing Your Shop Rate

Machine Complexity

Not all machines should have the same rate. A 5-axis machining center has higher electricity costs, higher tooling costs, and higher purchase costs than a simple 3-axis mill or lathe. Advanced shops often use this calculator to determine a "blended rate" or run separate calculations for different departments.

Market Tolerance

While this calculator tells you what you need to charge to be profitable, the market dictates what you can charge. If your calculated rate is $150/hr but competitors charge $90/hr, you may need to reduce overhead, improve efficiency, or specialize in more complex parts where higher rates are acceptable.

Setup vs. Run Time

Some shops charge a different rate for programming and setup versus "lights out" run time. If a machine runs unattended overnight, the labor component drops significantly, allowing for a lower blended hourly rate on high-volume production runs.

Frequently Asked Questions

What is a standard machine shop hourly rate?

In the United States, general CNC machine shop rates typically range from $60 to $120 per hour. Specialized shops (Aerospace, Medical, 5-Axis) often charge $120 to $200+ per hour. Manual machining rates are usually lower, ranging from $50 to $90 per hour.

What is the difference between Markup and Margin?

Markup is a percentage added to your cost. Margin is the percentage of the final price that is profit. A 20% markup on a $100 cost results in a $120 price. A 20% margin on a $100 cost results in a $125 price ($125 × 20% = $25 profit; $125 – $25 = $100 cost).

Does this calculator include material costs?

No. This calculator determines your Shop Rate (the cost of your time and facility). Material costs should be calculated separately for each specific job and added to the quote, usually with a material markup (10-20%) to cover handling and financing.

function calculateShopRate() { // 1. Get Inputs var numEmployees = parseFloat(document.getElementById('numEmployees').value); var hourlyWage = parseFloat(document.getElementById('hourlyWage').value); var laborBurden = parseFloat(document.getElementById('laborBurden').value); var monthlyOverhead = parseFloat(document.getElementById('monthlyOverhead').value); var billableHoursWeek = parseFloat(document.getElementById('billableHours').value); var weeksYear = parseFloat(document.getElementById('weeksPerYear').value); var profitMargin = parseFloat(document.getElementById('profitMargin').value); // 2. Validate Inputs if (isNaN(numEmployees) || isNaN(hourlyWage) || isNaN(monthlyOverhead) || isNaN(billableHoursWeek) || isNaN(weeksYear)) { alert("Please fill in all required numeric fields."); return; } // Handle Burden and Profit defaults if empty if (isNaN(laborBurden)) laborBurden = 0; if (isNaN(profitMargin)) profitMargin = 0; // 3. Logic // Annual Overhead var annualOverhead = monthlyOverhead * 12; // Annual Labor Cost // Assumption: You pay employees for 40 hours a week regardless of billable efficiency // If your shop pays only for hours worked, change 40 to billableHoursWeek, but standard practice is paying full time. var paidHoursPerWeek = 40; var annualBaseLabor = numEmployees * hourlyWage * paidHoursPerWeek * weeksYear; var annualLaborWithBurden = annualBaseLabor * (1 + (laborBurden / 100)); // Total Annual Cost (Operating Expenses) var totalAnnualCost = annualOverhead + annualLaborWithBurden; // Total Billable Hours (Capacity) var totalBillableHours = numEmployees * billableHoursWeek * weeksYear; // Break Even Rate var breakEvenRate = 0; if (totalBillableHours > 0) { breakEvenRate = totalAnnualCost / totalBillableHours; } // Target Shop Rate // Formula: Price = Cost / (1 – Margin%) var targetRate = 0; var decimalMargin = profitMargin / 100; if (decimalMargin >= 1) { alert("Profit margin cannot be 100% or more."); return; } if (totalBillableHours > 0) { targetRate = breakEvenRate / (1 – decimalMargin); } // 4. Output Results document.getElementById('resAnnualOverhead').innerText = formatCurrency(annualOverhead); document.getElementById('resAnnualLabor').innerText = formatCurrency(annualLaborWithBurden); document.getElementById('resTotalCost').innerText = formatCurrency(totalAnnualCost); document.getElementById('resBillableHours').innerText = formatNumber(totalBillableHours); document.getElementById('resBreakEven').innerText = formatCurrency(breakEvenRate) + " / hr"; document.getElementById('resShopRate').innerText = formatCurrency(targetRate) + " / hr"; document.getElementById('resMarginDisplay').innerText = profitMargin; // Show results area document.getElementById('resultArea').style.display = 'block'; } function formatCurrency(num) { return '$' + num.toLocaleString('en-US', {minimumFractionDigits: 2, maximumFractionDigits: 2}); } function formatNumber(num) { return num.toLocaleString('en-US', {maximumFractionDigits: 0}); }

Leave a Comment