Determine your ideal hourly rate based on income goals and business costs.
What you want to take home after taxes and expenses.
Software, hardware, office rent, insurance.
Income tax, self-employment tax, etc.
Time spent on client work (not admin/marketing).
Weeks you will NOT be working per year.
Your Results
Recommended Hourly Rate
$0.00
Annual Gross Revenue Needed
$0.00
Monthly Gross Target
$0.00
Total Annual Expenses
$0.00
How to Calculate Your Freelance Hourly Rate
Transitioning from a full-time employee to a freelancer requires a shift in how you view your income. You are no longer just an "employee"; you are a business. This means your hourly rate must cover not only your salary but also your overhead, taxes, and non-billable time.
The Math Behind the Calculator
To find your rate, we use the following steps:
Calculate Total Costs: We add your desired net income to your annual business expenses (Monthly Expenses × 12).
Adjust for Taxes: We divide the total costs by (1 – Tax Rate) to find the "Gross Revenue" needed before the government takes their share.
Determine Billable Hours: We multiply your weekly billable hours by the number of weeks you actually work (52 weeks – Vacation weeks).
Final Rate: We divide the Gross Revenue by the Total Billable Hours.
Example Calculation
If you want to take home $70,000 a year, have $400 in monthly expenses, pay 25% in taxes, and work 20 billable hours a week with 4 weeks of vacation:
Annual Expenses: $4,800
Gross Income Needed (to net $70k after tax): Approximately $99,733
Most freelancers forget that they cannot bill 40 hours a week. You spend significant time on marketing, invoicing, client communication, and learning new skills. These are "non-billable" hours. If you want to survive as a freelancer, your billable hours must subsidize your administrative time.
function calculateFreelanceRate() {
var targetIncome = parseFloat(document.getElementById('targetIncome').value);
var monthlyExpenses = parseFloat(document.getElementById('monthlyExpenses').value);
var taxRate = parseFloat(document.getElementById('taxRate').value) / 100;
var billableHoursPerWeek = parseFloat(document.getElementById('billableHours').value);
var vacationWeeks = parseFloat(document.getElementById('vacationWeeks').value);
if (isNaN(targetIncome) || isNaN(monthlyExpenses) || isNaN(taxRate) || isNaN(billableHoursPerWeek) || isNaN(vacationWeeks)) {
alert("Please enter valid numeric values in all fields.");
return;
}
// 1. Calculate Annual Expenses
var annualExpenses = monthlyExpenses * 12;
// 2. Gross income needed before expenses and taxes
// Formula: (Target + Expenses) / (1 – TaxRate)
var grossRevenueNeeded = (targetIncome + annualExpenses) / (1 – taxRate);
// 3. Total billable hours per year
var workingWeeks = 52 – vacationWeeks;
if (workingWeeks <= 0) {
alert("Vacation weeks cannot exceed or equal 52 weeks!");
return;
}
var totalBillableHoursYearly = billableHoursPerWeek * workingWeeks;
// 4. Calculate hourly rate
var hourlyRate = grossRevenueNeeded / totalBillableHoursYearly;
// Display results
document.getElementById('freelanceResults').style.display = 'block';
document.getElementById('hourlyRateResult').innerHTML = '$' + hourlyRate.toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2});
document.getElementById('grossRevenueResult').innerHTML = '$' + grossRevenueNeeded.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0});
document.getElementById('monthlyGrossResult').innerHTML = '$' + (grossRevenueNeeded / 12).toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0});
document.getElementById('annualExpenseResult').innerHTML = '$' + annualExpenses.toLocaleString(undefined, {minimumFractionDigits: 0, maximumFractionDigits: 0});
// Scroll to results
document.getElementById('freelanceResults').scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}