*Gross revenue includes your net income goal, business expenses, and taxes.
How to Calculate Your Freelance Hourly Rate: A Complete Guide
Determining your freelance rate is one of the most critical steps in building a sustainable business. Many new freelancers make the mistake of simply matching their previous "employee" hourly wage, forgetting that as a freelancer, you are responsible for your own taxes, equipment, software, and healthcare.
The "Bottom-Up" Calculation Method
This calculator uses the "Bottom-Up" methodology. Instead of looking at what the market pays, we look at what you need to earn to survive and thrive. Here is the logic breakdown:
Net Income Goal: The actual take-home pay you want for savings, rent, and lifestyle.
Business Expenses: Everything from high-speed internet and software subscriptions (Adobe, Zoom, Slack) to hardware upgrades and office space.
The Tax Factor: As a self-employed individual, you must set aside a significant portion of every check for the IRS or your local tax authority. Our calculator adjusts your gross target to account for this.
Billable vs. Non-Billable Hours: You cannot bill for 40 hours a week. Administrative tasks, marketing, and invoicing take time. Most freelancers find 20-30 hours per week is the realistic limit for billable work.
A Realistic Example
Let's say you want to take home $60,000 a year. You have $5,000 in annual expenses and face a 25% tax rate. You plan to take 4 weeks of vacation (working 48 weeks total) and can bill for 25 hours per week.
First, we calculate your Gross Target: ($60,000 + $5,000) / 0.75 = $86,666. Then we find your total annual hours: 48 weeks × 25 hours = 1,200 hours. Your minimum hourly rate would be $86,666 / 1,200 = $72.22 per hour.
Pricing Beyond the Minimum
The number generated by this calculator is your "Floor." You should never charge less than this, as doing so would mean you are failing to meet your financial goals. For high-value projects, you should add a "Value-Based" premium or a buffer for unexpected scope creep.
function calculateFreelanceRate() {
// Get input values
var incomeGoal = parseFloat(document.getElementById("incomeGoal").value);
var expenses = parseFloat(document.getElementById("expenses").value);
var hoursPerWeek = parseFloat(document.getElementById("hoursPerWeek").value);
var vacationWeeks = parseFloat(document.getElementById("vacationWeeks").value);
var taxRate = parseFloat(document.getElementById("taxRate").value);
// Validation
if (isNaN(incomeGoal) || isNaN(expenses) || isNaN(hoursPerWeek) || isNaN(vacationWeeks) || isNaN(taxRate)) {
alert("Please enter valid numbers in all fields.");
return;
}
if (taxRate >= 100) {
alert("Tax rate must be less than 100%.");
return;
}
if (vacationWeeks >= 52) {
alert("Vacation weeks must be less than 52.");
return;
}
// Calculation Logic
// 1. Calculate Total Needed Before Tax (Net Goal + Expenses)
var totalPreTaxNeeded = incomeGoal + expenses;
// 2. Adjust for Taxes (Gross Target)
// Formula: Net / (1 – taxRateDec)
var taxDecimal = taxRate / 100;
var grossAnnualTarget = totalPreTaxNeeded / (1 – taxDecimal);
// 3. Calculate Total Working Weeks
var workingWeeks = 52 – vacationWeeks;
// 4. Calculate Total Billable Hours per Year
var totalAnnualHours = workingWeeks * hoursPerWeek;
// 5. Calculate Hourly Rate
var hourlyRate = grossAnnualTarget / totalAnnualHours;
var dailyRate = hourlyRate * 8;
// Display Results
document.getElementById("resultsArea").style.display = "block";
document.getElementById("hourlyResult").innerHTML = "$" + hourlyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("dailyResult").innerHTML = "$" + dailyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById("annualTarget").innerHTML = "$" + grossAnnualTarget.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
// Smooth scroll to results
document.getElementById("resultsArea").scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}