Bonsai Freelance Rate Calculator

Freelance Rate Calculator .frc-wrapper { max-width: 800px; margin: 0 auto; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color: #333; line-height: 1.6; } .frc-calculator-box { background-color: #f9fbfd; border: 1px solid #e2e8f0; border-radius: 8px; padding: 30px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); margin-bottom: 40px; } .frc-title { text-align: center; color: #00b289; margin-bottom: 25px; font-size: 28px; font-weight: 700; } .frc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } @media (max-width: 600px) { .frc-grid { grid-template-columns: 1fr; } } .frc-input-group { margin-bottom: 15px; } .frc-label { display: block; font-weight: 600; margin-bottom: 5px; font-size: 14px; color: #4a5568; } .frc-input { width: 100%; padding: 12px; border: 1px solid #cbd5e0; border-radius: 6px; font-size: 16px; box-sizing: border-box; transition: border-color 0.2s; } .frc-input:focus { border-color: #00b289; outline: none; box-shadow: 0 0 0 3px rgba(0, 178, 137, 0.1); } .frc-help { font-size: 12px; color: #718096; margin-top: 4px; } .frc-btn { grid-column: 1 / -1; background-color: #00b289; color: white; border: none; padding: 15px; font-size: 18px; font-weight: 600; border-radius: 6px; cursor: pointer; width: 100%; margin-top: 10px; transition: background-color 0.2s; } .frc-btn:hover { background-color: #009e7a; } .frc-results { display: none; grid-column: 1 / -1; background-color: #ffffff; border: 1px solid #e2e8f0; border-radius: 6px; padding: 20px; margin-top: 20px; text-align: center; } .frc-rate-display { font-size: 42px; font-weight: 800; color: #2d3748; margin: 10px 0; } .frc-rate-sub { font-size: 18px; color: #718096; } .frc-breakdown { margin-top: 20px; border-top: 1px solid #edf2f7; padding-top: 20px; display: flex; justify-content: space-around; flex-wrap: wrap; } .frc-stat { margin: 10px; text-align: center; } .frc-stat-val { display: block; font-weight: 700; font-size: 20px; color: #2d3748; } .frc-stat-label { font-size: 13px; color: #718096; text-transform: uppercase; letter-spacing: 0.5px; } .frc-content { margin-top: 40px; } .frc-content h2 { font-size: 24px; margin-top: 30px; color: #2d3748; } .frc-content h3 { font-size: 20px; margin-top: 20px; color: #2d3748; } .frc-content p { margin-bottom: 15px; color: #4a5568; } .frc-content ul { margin-bottom: 20px; padding-left: 20px; } .frc-content li { margin-bottom: 10px; color: #4a5568; }
Freelance Rate Calculator
How much do you want to take home?
Software, equipment, insurance, etc.
Hours charged to clients (exclude admin tasks).
Vacation, holidays, and sick days.
Self-employment and income tax estimate.
Buffer for business growth/savings.
You should charge at least:
$0.00 / hr
$0 Gross Revenue Needed
0 Total Billable Hours
$0 Daily Rate (8h)

Understanding Your Freelance Rate

Calculating your freelance hourly rate is one of the most challenging aspects of starting a business. Unlike a traditional salary where taxes and overhead are handled by the employer, a freelancer must account for self-employment taxes, business expenses, unbillable administrative time, and time off.

This calculator, inspired by methodologies used by platforms like Bonsai, uses a "bottom-up" approach. Instead of guessing a market rate, it starts with your financial goals and works backward to determine what you need to charge to sustain your lifestyle.

Key Factors in the Calculation

  • Billable Hours: Most freelancers cannot bill 40 hours a week. Time spent on marketing, accounting, emails, and learning new skills is unpaid. A healthy benchmark is 20-30 billable hours per week.
  • Overhead & Expenses: This includes hardware, software subscriptions, coworking space fees, health insurance, and internet costs. These must be covered by your hourly rate.
  • Taxes: As a freelancer, you are responsible for the full burden of Social Security and Medicare taxes (in the US), plus income tax. This often totals 25-30% or more of gross revenue.
  • Weeks Off: You don't get paid vacation days. To afford time off for holidays or illness, your working hours must generate enough surplus revenue to cover these gaps.

Why Your Rate Seems High

If you earned $50/hour as an employee, your freelance rate might need to be $85-$100/hour to maintain the same standard of living. This "freelance premium" covers the risk, lack of benefits, and operational costs that come with running your own business.

How to Use This Rate

The output of this calculator is your floor rate—the minimum you need to charge to meet your financial goals. Depending on your experience level, niche expertise, and client budget, you should aim to charge above this floor to generate true profit.

function calculateFreelanceRate() { // 1. Get input values var salary = parseFloat(document.getElementById('frcSalary').value); var expenses = parseFloat(document.getElementById('frcExpenses').value); var weeklyHours = parseFloat(document.getElementById('frcHours').value); var weeksOff = parseFloat(document.getElementById('frcWeeksOff').value); var taxRate = parseFloat(document.getElementById('frcTax').value); var profitMargin = parseFloat(document.getElementById('frcProfit').value); // 2. Validate inputs if (isNaN(salary) || salary < 0) salary = 0; if (isNaN(expenses) || expenses < 0) expenses = 0; if (isNaN(weeklyHours) || weeklyHours <= 0) weeklyHours = 1; // Prevent divide by zero if (isNaN(weeksOff) || weeksOff < 0) weeksOff = 0; if (isNaN(taxRate) || taxRate < 0) taxRate = 0; if (isNaN(profitMargin) || profitMargin < 0) profitMargin = 0; // 3. Logic Implementation // Calculate total working weeks per year var workingWeeks = 52 – weeksOff; if (workingWeeks = 100%, math breaks (infinite revenue needed) if (combinedDeductions >= 0.95) { combinedDeductions = 0.95; // Cap to prevent infinity } var divisor = 1 – combinedDeductions; var grossRevenueNeeded = (salary + expenses) / divisor; // Calculate Hourly Rate var hourlyRate = grossRevenueNeeded / totalBillableHours; // Calculate Daily Rate (assuming standard 8 hour availability, though billable is different) // Or simpler: Hourly Rate * 8 (Standard industry daily multiplier) var dailyRate = hourlyRate * 8; // 4. Update UI var resultContainer = document.getElementById('frcResultContainer'); resultContainer.style.display = 'block'; document.getElementById('frcHourlyRate').innerText = '$' + hourlyRate.toFixed(2) + ' / hr'; document.getElementById('frcGrossRevenue').innerText = '$' + Math.ceil(grossRevenueNeeded).toLocaleString(); document.getElementById('frcBillableTotal').innerText = Math.round(totalBillableHours).toLocaleString() + ' hrs'; document.getElementById('frcDailyRate').innerText = '$' + Math.ceil(dailyRate).toLocaleString(); // Scroll to results for better UX on mobile resultContainer.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment