Field guide
How to Calculate Real Profit on a Freelance Project
Calculate your true profit margin on fixed-price freelance projects. Account for time, expenses, and platform fees.
Reviewed 2026-09-20 · Shift Ledger
Start with the project price
What the client pays you. For a $5,000 website project, that's your gross revenue.
Estimate your hours realistically
Think about all phases: discovery, planning, execution, revisions, and communication. If you think it's 40 hours, add 20% buffer: 48 hours.
Calculate your cost rate
Your cost rate is what you need to earn per hour to cover your own expenses and income goals. If you need $80,000/year and bill 1,500 hours, your cost rate is $53.33/hr.
Account for platform fees
Upwork takes 10%, Fiverr takes 20%, Toptal takes nothing but charges clients more. Subtract the fee from the project price.
Calculate gross profit
Gross profit = project price − (hours × cost rate) − platform fees. For $5,000, 48 hours at $53.33, 10% fees: $5,000 − $2,560 − $500 = $1,940.
Check your effective hourly rate
Effective hourly = gross profit ÷ hours. $1,940 ÷ 48 = $40.42/hr. Compare this with your target rate. If it's lower, you need to raise your price or work faster.
Frequently asked questions
How do I know my cost rate?
Your cost rate = (annual income goal + annual expenses) ÷ annual billable hours. Use the freelance hourly rate calculator to find this.
What if a project takes longer than estimated?
If you're billing hourly, the client pays more. If fixed-price, your effective hourly rate drops. Always add a 15–25% time buffer to fixed-price estimates.
Should I include taxes in my cost rate?
Yes. Self-employment tax is roughly 15.3% of net income, plus federal income tax. Add these to your cost rate calculation for accurate profit estimates.
How do I handle scope creep?
Document the original scope in writing. If the client requests additional work, quote it as a separate project or change order. Don't absorb scope creep into the original price.
Open the Project Profit Calculator →
Found an issue? Contact the maintainer with the example and expected result. Please omit personal timecards.