Your real rate, counting all 52 hours.
What the gap is made of:
- 20 hours went into this project without appearing on an invoice.
- At your own cost of $45 an hour, those 20 hours absorbed $900 of paid work.
This measures what already happened on one project. It does not forecast future revenue, orders or growth. The only numbers in it are the ones you typed in.
Get the weekly email
You'll get Gulati's weekly email. Unsubscribe anytime.
Want the time leak fixed, not just measured?
DNA builds the operating backbone for your business, so the admin, follow-ups and rework stop landing on your calendar unbilled.
Claim your free operation review & teardown →How to read this number
Most people quote projects from the hours they expect to bill. The effective hourly rate does the opposite: it takes the fee you actually charged and divides it by every hour that actually went into the work, billed or not. When those two numbers are close, your pricing is honest. When they are far apart, the difference is scope creep that got priced at zero.
The gap between your quoted rate and your real rate is not a mystery and it is not bad luck. It is the specific list of work you did that never made it onto an invoice. A fee quoted against 32 billable hours, delivered across 52 real hours, quietly absorbs the extra 20 into your own week without a conversation. Nobody decided to give it away, it just never got a line on the invoice.
What this tool assumes
Every figure below is arithmetic on your inputs, using these stated assumptions:
- Assumption: the fee is the total you charged for this project or retainer period, and it is fixed regardless of how long the work took. That is what makes the extra hours an unfunded cost rather than a billed one.
- Assumption: your cost per hour covers wages plus the overheads you actually carry (software, insurance, a share of rent, your own unpaid admin). It is your input, not an industry figure, and it is deliberately conservative: most people understate it.
- Assumption: unbilled hours cost you the same per hour as billed hours. You would not take a client call for less, so the same hour is worth the same to you either way.
- Assumption: the target margin you set is applied as a markup on cost (cost multiplied by 1 plus the target margin), not as a percentage of the fee. A 50% target is the 1.5 multiplier in the floor rate formula. Change it if your accounting treats margin differently.
- Assumption: project weeks is how many calendar weeks the work spanned, so the hours per week figure is a load average, not a statement about any single week.
- Assumption: nothing here is a benchmark. There is no industry average rate being compared against, so the badge thresholds below are thresholds on your own arithmetic, not a grade.
The gross margin badge reads: above 60% is Healthy margin, between 35% and 60% is Thin, one bad month hurts, and below 35% isYou are working below cost on paper, which means the fee does not cover the hours at your own cost, let alone pay you.
A worked example, using the default numbers
A project charged at $4,500, where you genuinely spent 52 hours and invoiced 32 of them, at an internal cost of $45 an hour, running across 4 weeks:
- Quoted rate: $4,500 divided by 32 billed hours is $140.63 an hour.
- Effective rate: $4,500 divided by 52 real hours is $86.54 an hour.
- The gap: $54.09 an hour, a 38% haircut against the rate you quoted.
- Unbilled: 20 hours, worth $2,812.50 at your own quoted rate.
- Cost to deliver: 52 hours at $45 is $2,340, so gross margin is 48%.
- The real cost of the leak: those 20 unbilled hours still consumed $900 of your paid time.
- Floor rate for the next one: 52 hours at $45, marked up 1.5, divided by 32 billed hours is $109.69 an hour.
- Load: 52 hours across 4 weeks is 13 hours a week on this one client.
That client paid $4,500. Your real rate was $86.54 an hour, and a fifth of the working time was absorbed for free. The number is not a forecast of anything. It is what the last project returned per hour, and the arithmetic does not improve on its own.
Where the unbilled hours usually come from
The 20 extra hours are rarely one big thing. They are a list of small, reasonable-seeming requests that each felt too small to invoice, which is exactly why they add up:
- Internal review. Re-reading your own work, second-guessing a deliverable, checking it against something you already knew. Nobody invoices this, so nobody prices it either.
- Client calls nobody invoiced. The fifteen-minute "quick question" that turns into forty minutes, and the follow-up email explaining the answer.
- Revisions. Changes requested after a deliverable is signed off. A revision is a new piece of work with the same label as the last one.
- Scope changes. Work nobody named in the original brief but everyone assumed was included, because it seemed obvious at the time.
- Chasing invoices. The follow-up, the reminder, the awkward second email. This is your unpaid labour financing your client's delay in paying you.
- Admin and scheduling. Invoicing systems, file naming, calendar back-and-forth, updating the task board so everyone else can see the work.
The pattern is that all six are real work with real hours attached and none of them are dumb. They are simply the work a contract does not mention, so they default to free. Once you can name them, they stop being invisible, and invisible work is the only kind that can expand without limit.
Three ways to close the gap
1. Scope the project properly. A written scope with a named deliverable list turns "I thought that was included" into a five-minute conversation instead of a five-week erosion. The scope is not a contract formality, it is the thing that makes the billed hours and the actual hours the same number.
2. Put a revision limit in writing. State how many rounds of changes are in the price and what the next one costs. This is not a defensive clause, it is a conversation you are having before the work rather than after, and it is the single easiest way to stop free revisions.
3. Bill the retainer for the work that is not a deliverable. Retainers should cover the ongoing labour that never attaches to a single deliverable: the calls, the check-ins, the chasing, the admin. If those hours are not inside a monthly fee, you are working them for free by default, and no amount of better scoping downstream will fix that.
What to do next
Take the number you just got and run it against two more recent projects. One project can be an anomaly, a bad week or a client who was genuinely difficult. Three is where a pattern shows up. If the effective rate is consistently below your cost per hour, the pricing is the problem and no amount of hustle fixes it. If the rate is healthy but the hours per week are not, that is a different conversation, about capacity rather than margin.
Then check the floor rate against your current quote. If next project's floor rate sits well above what you have been charging, you have found the exact size of the discount you have been giving away. You do not have to raise prices to your whole list, you can raise them one project at a time, on the new work only, with the scope and revision limit attached.
Finally, log the unbilled hours next time instead of estimating them afterwards. A rough number is fine, a weekly one is better, and the categories above give you somewhere to write them down. The gap is invisible until it is written down, and that is the whole problem. If you want the operating side of this handled properly rather than tracked by hand, that is whata free operation review is for.