DEV Community

張旭豐
張旭豐

Posted on

The Freelance Rate Calculator I Actually Use (Copy & Paste Ready)

After years of underquoting, I built this calculator to stop guessing. It's not a Google Sheet — it's a JavaScript snippet you can copy and run in 30 seconds. No account needed.

Why Most Developers Underquote

The root cause isn't lack of confidence. It's lack of math.

When you're freelancing, you need to account for:

  • Base salary you'd accept as an employee
  • Taxes (25-30% on top)
  • Health insurance ($300-800/month in the US)
  • Vacation days (22 days/year = ~9% unpaid)
  • Sick days, holidays, benefits
  • Admin work, meetings, emails (20-30% of your time)
  • Tools and subscriptions
  • Getting fired / slow months

Most developers take their desired monthly salary and divide by 160 hours. That gives you a day rate that's probably 40% too low.

The Calculator

Here are two ways to use it — pick whichever is faster for you.

Option 1: Browser Console (30 seconds)

Open your browser's developer console (F12 → Console), paste this, and press Enter:

// Freelance Rate Calculator
const baseSalary = 85000; // Your target annual gross
const workHoursPerYear = 1600; // 40hrs × 50 weeks
const taxRate = 0.28;
const benefitsCost = 9600;
const overheadMultiplier = 1.35;

const billableRate = (baseSalary / workHoursPerYear) / (1 - taxRate) * overheadMultiplier + (benefitsCost / workHoursPerYear);

console.log(`Your minimum day rate: $${Math.round(billableRate * 8)}`);
console.log(`Your minimum hour rate: $${Math.round(billableRate * 100) / 100}`);
Enter fullscreen mode Exit fullscreen mode

Option 2: Standalone HTML File

Save this as rate-calculator.html and open in any browser:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Freelance Rate Calculator</title>
<style>
  body { font-family: system-ui; max-width: 480px; margin: 2rem auto; padding: 1rem; }
  label { display: block; margin-top: 0.75rem; font-weight: 600; }
  input { width: 100%; padding: 0.5rem; margin-top: 0.25rem; box-sizing: border-box; }
  button { margin-top: 1rem; padding: 0.75rem 1.5rem; background: #2d2d2d; color: white; border: none; cursor: pointer; }
  .result { margin-top: 1.5rem; padding: 1rem; background: #f5f5f5; border-radius: 6px; }
</style>
</head>
<body>
<h1>Freelance Rate Calculator</h1>
<label>Target annual gross salary ($)</label>
<input type="number" id="salary" value="85000">
<label>Work hours per year</label>
<input type="number" id="hours" value="1600">
<label>Benefits cost per year ($)</label>
<input type="number" id="benefits" value="9600">
<button onclick="calculate()">Calculate</button>
<div class="result" id="result"></div>
<script>
function calculate() {
  const salary = parseFloat(document.getElementById("salary").value) || 85000;
  const hours = parseFloat(document.getElementById("hours").value) || 1600;
  const benefits = parseFloat(document.getElementById("benefits").value) || 9600;
  const taxRate = 0.28;
  const overhead = 1.35;
  const rate = (salary / hours) / (1 - taxRate) * overhead + (benefits / hours);
  const dayRate = Math.round(rate * 8);
  document.getElementById("result").innerHTML = `
    <p><strong>Minimum hour rate:</strong> $${Math.round(rate * 100) / 100}</p>
    <p><strong>Minimum day rate (8hrs):</strong> $${dayRate}</p>
    <p><strong>Minimum month rate (20 days):</strong> $${Math.round(dayRate * 20)}</p>
    <p style="margin-top:0.75rem;font-size:0.875rem;">Based on 28% tax, 35% overhead for vacation/sick/admin.</p>
  `;
}
</script>
</body>
</html>
Enter fullscreen mode Exit fullscreen mode

What This Calculator Gets Right

Most rate formulas fail because they ignore the invisible costs:

Factor What it means
Tax buffer Freelancers pay both employer + employee FICA. Set aside ~28%.
Benefits gap Health insurance, 401k match, paid leave — adds $8-15k/year
Time overhead Meetings, emails, invoicing, hunting for work — 35% on top
Slow months Q4 holidays, summer slumps, between-contracts gaps

What to Do With This Number

  1. Never go below it — even for quick projects
  2. Add margin for complexity — difficult clients, tight deadlines = +20-40%
  3. Track it in proposals — show clients how you calculated it

I also published an article on the 5 biggest pricing mistakes developers make. Read it here.


If this saved you from one underquoting mistake, you can buy me a coffee: paypal.me/cheapuno


Continue learning: If you are trying to turn this into a paid freelance offer, I wrote a complete scope estimation framework here: The Freelance Scope Estimation Framework I Use Instead of Hourly Rates

Top comments (0)