Calculate exactly what you should charge per hour to meet your financial goals and cover business costs.
Your Minimum Hourly Rate
$0.00
How to Calculate Your Per Hour Rate
Setting your hourly rate is one of the most critical steps for freelancers, contractors, and consultants. Unlike a traditional salary, your hourly rate must account for "non-billable" time—such as marketing, invoicing, and admin—along with business overhead and taxes.
This calculator uses the Revenue Requirement Method. This formula starts with the amount of money you want to keep in your pocket and works backward to find the rate that covers everything else.
A common mistake is assuming you will bill 40 hours per week. Most freelancers spend 20-30% of their time on tasks they cannot charge for, like finding new clients or managing accounts. To ensure your business remains profitable, you should base your hourly rate on your billable hours, not your total working time.
Factors to Consider When Setting Your Rate
Self-Employment Tax: Remember that as a freelancer, you are responsible for both the employer and employee portions of social security and medicare taxes. It is often wise to add 15-20% to your "Target Take-Home" to account for this.
Market Positioning: Is your calculated rate competitive for your niche? If you are a specialized expert, you can often charge 2x or 3x the basic rate.
Value-Based Pricing: Sometimes, charging by the hour isn't the best move. If you can complete a project in 2 hours that provides $10,000 in value to a client, an hourly rate might actually penalize your efficiency.
function calculateHourlyRate() {
var targetIncome = parseFloat(document.getElementById("targetIncome").value);
var annualExpenses = parseFloat(document.getElementById("annualExpenses").value);
var billableHours = parseFloat(document.getElementById("billableHours").value);
var weeksOff = parseFloat(document.getElementById("weeksOff").value);
var resultArea = document.getElementById("hourly-calc-result-area");
var rateOutput = document.getElementById("finalRateOutput");
var breakdownText = document.getElementById("breakdownText");
// Validation
if (isNaN(targetIncome) || isNaN(annualExpenses) || isNaN(billableHours) || isNaN(weeksOff)) {
alert("Please enter valid numbers in all fields.");
return;
}
if (weeksOff >= 52) {
alert("Weeks off must be less than 52.");
return;
}
if (billableHours <= 0) {
alert("Billable hours per week must be greater than zero.");
return;
}
// Logic
var totalRevenueNeeded = targetIncome + annualExpenses;
var workingWeeksPerYear = 52 – weeksOff;
var totalAnnualBillableHours = workingWeeksPerYear * billableHours;
var requiredRate = totalRevenueNeeded / totalAnnualBillableHours;
// Formatting
var formattedRate = requiredRate.toLocaleString(undefined, {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
maximumFractionDigits: 2
});
// Display
rateOutput.innerHTML = formattedRate;
breakdownText.innerHTML = "To earn $" + targetIncome.toLocaleString() + " after expenses, you need to generate $" + totalRevenueNeeded.toLocaleString() + " in total annual revenue across " + totalAnnualBillableHours + " billable hours.";
resultArea.style.display = "block";
resultArea.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}