How to Calculate Freelance Project Profitability

You delivered the project, the invoice cleared, and the number in your account looks fine. That is not the same as knowing whether the project was worth doing, and it is definitely not enough to price the next one from.

Project profitability answers a narrower question: of the money this specific engagement brought in, how much survived contact with the costs it created, and what did each hour you spent actually earn? Two projects can invoice the same amount and be nowhere near each other on that measure.

This article covers the project-level decision. If you want the figure for your whole business rather than one job, effective hourly rate for freelancers is the companion piece, and this one links back to it where the two overlap.

The formula, and every term in it

Start here, then adjust nothing until you have read the definitions.

  • Direct costs = subcontractor costs + project expenses + payment processing fees
  • Gross profit = collected revenue minus direct costs
  • Gross margin = gross profit ÷ collected revenue, as a percentage
  • Effective hourly rate = gross profit ÷ every hour worked

In plain language: add up the money that left the project, subtract it from the money that came in, and you have gross profit. Express that as a share of what came in and you have gross margin. Divide it by all the hours the project consumed and you have what an hour of your time earned on this job.

  • Collected revenue is money that has actually landed. Not the quote, not the invoice total, not the amount you expect next week.
  • Direct costs are costs this project caused. Rent, software subscriptions and your accountant are real costs, but they are not caused by one project, so they belong to overhead rather than here.
  • Gross profit is cash gross profit. It subtracts money that left and assigns no cost to your own time, so it tells you what the project produced before you pay yourself.
  • Gross margin is a ratio, not an amount. It answers "how efficient", not "how much".
  • Effective hourly rate is gross profit spread across every hour, including the ones you never billed for. It is an estimate of profit per hour, not a wage.

These are the same definitions the freelance project profitability calculator uses, so a figure you work out by hand here will match one you get there.

What counts as a project cost

Direct project expenses

Anything you bought because this job existed: a licensed typeface, stock footage, a plugin licence, printing, a paid research panel, travel to the client's site. The test is whether the cost would have happened if the project had not.

Subcontractor costs

What you paid out to other people for work on this project, at the amount you actually paid. If you marked up a subcontractor's rate when you quoted, the markup is your revenue and their fee is your cost. Do not net them off against each other, because doing so hides both the margin you earned on the resale and the exposure you carry if the client pays late and the subcontractor does not wait.

How a collaborator is classified for employment and tax purposes is a separate question from how you record their cost here, and it varies by jurisdiction.

Payment and platform fees

Card and platform fees are usually a percentage plus a fixed amount per transaction, which means the count of payments matters and not just the total. Stripe's published standard rate, for example, is 2.9% plus CA$0.30 per successful domestic card transaction, with an additional 0.8% on international cards. Splitting a fee into a deposit and two progress payments costs three fixed charges rather than one. It is small, and it is the kind of small that is invisible until you look for it.

Marketplace commissions, foreign exchange spreads and payout fees belong in this line too.

Your own time

Here is where most freelance profit calculations go wrong, in either direction.

There are two defensible treatments. The first is to leave your own time out of costs entirely and read your effective hourly rate as the answer: the project produced this much cash, and my hours earned this much each. The second is to cost your hours at the rate you would pay a competent contractor to do the same work, and read what remains as profit on the business rather than on your labour. Studios usually need the second, because they have payroll to carry.

What you cannot do is both at once. Costing your own hours and then reading the effective hourly rate as profit per hour double-counts the same money.

Worth knowing that the tax view is different again. For a sole proprietor in the United States, the IRS instruction for the cost-of-labor line on Schedule C is explicit that you do not include any amounts paid to yourself (Publication 334, Tax Guide for Small Business). So a management figure that costs your time will not reconcile to a tax return, and it is not supposed to.

Unbilled work

Unbilled work is not a cost line. It is an hour line, and that distinction is the single most useful thing in this article. Extra rounds of revisions, the favour you did on Friday, the meeting that was really a briefing for work nobody agreed to pay for — none of them reduce your fee and none of them appear as money leaving. They add hours. Count them, and count them separately from planned hours, because the gap between the two is what tells you whether your estimate was wrong or your scope was.

Profit and margin answer different questions

Take an illustrative brand identity project. The figures below are arithmetic on a hypothetical engagement, not a client story and not a benchmark.

Quoted at $6,000, paid in full in two card payments, and delivered in 62 hours. You paid an illustrator $900 and spent $240 on a licensed typeface and stock assets. Two card payments at 2.9% plus $0.30 cost $174.60.

  • Direct costs: $900 + $240 + $174.60 = $1,314.60
  • Gross profit: $6,000 - $1,314.60 = $4,685.40
  • Gross margin: $4,685.40 / $6,000 = 78.1%
  • Effective hourly rate: $4,685.40 / 62 hours = $75.57

Profit is the amount you can spend. Margin is how much of each dollar you kept. They move independently, and that is why you need both: a $40,000 project at 30% margin produces $12,000, and a $6,000 project at 78% margin produces $4,685. The first is a better cheque and the second is a better business per dollar of revenue. Which one you want more of depends on how much capacity you have and how much risk each carries.

Margin is also the figure that survives comparison. It is the only one of the two you can put next to a different-sized project and learn something.

Invoiced revenue and collected revenue answer different questions too

Now the same project, except the client paid $4,500 and the final $1,500 invoice is sitting unpaid. Only two payments cleared, so the fees actually incurred were $131.10.

  • Direct costs: $900 + $240 + $131.10 = $1,271.10
  • Gross profit: $4,500 - $1,271.10 = $3,228.90
  • Gross margin: $3,228.90 / $4,500 = 71.8%
  • Effective hourly rate: $3,228.90 / 76 hours = $42.49

Nothing about the work changed. The scope, the estimate and the pricing were all the same. The only difference is one invoice.

This is why the default has to be collected revenue: an unpaid invoice is not cash, and treating it as though it were produces a profitable-looking project that cannot pay you. But calculate the invoiced view as well, because the comparison is the diagnosis. A project that looks healthy on invoiced revenue and thin on collected revenue has a collections problem, and repricing the next project is the wrong response to it — see what to do when a client will not pay for the ladder that is the right one.

Tax reporting is a separate matter with its own rules, and they differ by country. The Canada Revenue Agency requires most self-employed people to report business income on the accrual basis, meaning in the period it was earned rather than received, with narrow exceptions (Accounting for your earnings). United States taxpayers may be eligible to choose between cash and accrual methods subject to conditions (IRS Publication 538). Which basis you file on does not change which basis is useful for deciding whether a project was worth doing.

Effective hourly rate is the figure margin cannot see

Margin is blind to hours. It compares money to money, so a project can hold its margin perfectly while quietly becoming terrible work.

That is the whole reason to divide gross profit by every hour the project consumed rather than by the hours you planned or the hours you billed. On a fixed fee, the hour count is the only place overruns show up at all.

Treat it as a project-level reading here. The business-level version of the same number, how it compares to your listed rate, and the levers that raise it are covered in effective hourly rate for freelancers.

What scope expansion does to a fixed fee

Same $6,000 project, paid in full, same costs. This time the client came back with three extra rounds of revisions that you absorbed, adding 14 hours. Total hours: 76.

  • Gross profit: $4,685.40 — unchanged
  • Gross margin: 78.1% — unchanged
  • Effective hourly rate: $4,685.40 / 76 hours = $61.65

Both headline figures are exactly where they were. The rate fell about 18%, from $75.57 to $61.65, and nothing in a profit-and-loss statement would have told you.

You can put a number on what was given away. The quote was written against 62 hours, so the project was running at $6,000 / 62 = $96.77 an hour before the extra rounds arrived. Fourteen hours at that rate is $1,354.84 of work delivered for nothing, which makes $7,354.84 a defensible starting point for quoting a comparable project next time.

That $1,354.84 is an estimate of what the time was worth, not an amount anybody owes you. Nobody was invoiced for it and no debt exists. It is a planning figure.

It is also not a story about a difficult client. Clients ask for things; that is normal, and most of those requests are reasonable requests to make. What went wrong here is that a material change was absorbed instead of priced. The alternative was not refusing the work — it was quoting it, which is what pricing a scope creep request walks through. The test for whether a request needs pricing is narrow on purpose: does it change the scope, the cost, the timeline, the deliverables, or the number of revision rounds? Clarifying questions do not qualify.

How to read your result

The same low margin has at least four different causes, and they call for four different responses. Read the figures together rather than one at a time.

Profitable but cash-constrained

Healthy margin, healthy rate, and money you have not received. The project worked; the payment terms did not. Look at deposits, milestone billing and payment terms before you look at price. A deposit that holds the work until it clears fixes more of this than a rate rise would.

High margin but low effective rate

Margin looks strong and the rate does not. This is almost always hours you did not plan for and did not charge for. Compare total hours against the hours you quoted against: if the gap is mostly revisions and additions, it is a scope problem, and the fee was never the issue.

Strong rate but slow collection

The work earned well and the money took months. This is a working-capital cost that no margin figure shows. Track days from invoice to payment per client, because it is a real cost of serving that client and it belongs in how you price them.

Low margin from underquoting

Total hours are close to planned hours, there were few or no absorbed changes, and the rate is still poor. Nothing went wrong in delivery. The estimate was wrong, and the fix is in how you estimate rather than in how you defend scope.

Low margin from uncontrolled changes

Planned hours were roughly right and total hours were not. The estimate held and the boundary did not. The fix is a change-control process, not a bigger number.

Low margin from direct-cost overruns

Revenue landed as quoted, hours were reasonable, and direct costs ate the difference. Subcontractor overruns are the usual culprit, and they usually trace to the same root as scope creep: the subcontractor's brief expanded because the client's did, and nobody repriced either. Fixed-fee subcontracting on a fixed-fee project transfers that risk instead of absorbing it.

What to change before you quote the next one

  1. Estimate from what actually happened. Your last comparable project's total hours, not its planned hours, is the honest starting point.
  2. Add contingency deliberately, and know what it is for. A contingency covers uncertainty in your own estimate. It is not a scope-creep budget, and using it as one just hides the creep inside the price.
  3. Write down the exclusions. Every unbilled hour on the last project is a candidate for a named exclusion on the next one. Exclusions are not hostile; they are the part of a statement of work that lets a client know when they are asking for something new.
  4. Price revision capacity as a quantity. Two rounds included, further rounds quoted. That converts an argument into an order form.
  5. Agree the change process before you need it. A short clause saying material changes are quoted and approved in writing before work starts is worth more than any conversation you can have after the fact.
  6. Look at the client, not just the project. Run the same numbers across every project you have done for one client. Clients differ in how much unbilled work they generate, and that pattern is a pricing input.

Run your own numbers

The freelance project profitability calculator takes seven figures — what you quoted, what you collected, total hours worked, subcontractor costs, project expenses, unbilled revision hours, and payment fees — and returns your gross profit, gross margin, effective hourly rate, an estimate of the revenue lost to unpaid changes, and a suggested starting price for a comparable project.

There is no account, no email address and no paywall, and the arithmetic runs in your browser: nothing you type is sent to Stria, stored, or shared. Run it twice on your last project, once with what you invoiced and once with what you collected, and the difference will tell you which of the problems above you actually have.

Where ongoing measurement fits

A calculation tells you about one finished project, after the fact. That is genuinely useful once, and it is the wrong shape for the decision you make forty times a year, which is whether the request that just arrived is inside the scope you agreed and what it should cost if it is not.

That is the loop Stria is built around. A project holds the quoted amount, your cost rate and the estimated hours and expenses it was priced on. Forward a client request and it is checked against the scope you locked, with the wording quoted back to you, and work outside it is priced against your rate card so a change order is something you send rather than something you argue about. Logged time and recorded expenses turn the projected margin into a measured one, and invoices and the payments against them keep collected revenue in the same view as the work that earned it. Profit, margin and rate then roll up across projects and clients, so the pattern shows up while you can still price for it.

It will not stop a client from asking, and no software makes a disagreement impossible. What it does is make sure the number and the record exist before the conversation, rather than after delivery. Start a 14-day Stria trial if you want that in one place.

This article is educational information about measuring project economics, not accounting, tax, legal or financial advice. Your own results will differ based on overhead, taxes, payroll, pricing strategy and costs not counted here. For anything that has to reconcile against a tax return, talk to your accountant.

Frequently asked questions

What is the formula for freelance project profitability?

Gross profit equals the revenue you collected minus the money that left the project: subcontractor payments, project expenses, and payment processing fees. Gross margin is that profit divided by the revenue you collected, expressed as a percentage. Neither figure assigns a cost to your own time, which is why you read them alongside your effective hourly rate rather than instead of it.

Should I use invoiced revenue or collected revenue?

Use collected revenue to judge the project, because that is the money you actually have. The invoiced view is still worth calculating, because comparing the two tells you which problem you have: if the project is profitable on what you invoiced but thin on what you collected, that is a collections problem, and repricing the next project will not fix it. Tax reporting is a separate question and the required basis depends on your jurisdiction.

Should my own time count as a cost in project profitability?

Pick one treatment and stay with it. Either leave your own time out and read your effective hourly rate as the answer to what your hours earned, or cost your hours at the rate you would pay someone else to do the work and read what is left as profit on the business rather than on your labour. Doing both at once double-counts. For a sole proprietor in the United States, the IRS is explicit that amounts paid to yourself are not a deductible cost of labor, so the tax view and the management view will not match.

How do unpaid revisions change project profitability?

They do not touch gross profit or margin at all, which is exactly why they are easy to miss. An extra round of free work does not reduce the fee and does not add a cost you paid out, so both figures stay where they were. What changes is the hour count, and hours are the denominator of your effective hourly rate. On a fixed fee, fourteen unbilled hours on a sixty-two hour project cuts the rate by roughly eighteen percent while the margin still reads as healthy.

How do I choose a target margin for my own projects?

Build it from three inputs rather than borrowing a number. Start with the overhead and non-project time the project has to help carry, add a contingency for the risk you are carrying on this particular client and scope, then sanity-check the result against published financial data for your own industry. In Canada, Innovation, Science and Economic Development publishes industry averages you can compare your own income statement against by industry code. A target you can explain is more useful than a benchmark you read somewhere.

Related reading

Start your 14-day trial · Try a free scope check · All articles