Which freelance clients are actually profitable? Rank them by the hour

Revenue ranks your clients one way. Fee divided by the hours the work really took ranks them another, and the two orders rarely match. Here is how to do the division and what to do with the answer.

CronLoom 5 min read

Rank your clients by revenue and you learn who sends the largest invoices. Rank them by fee divided by the hours the work really took and you learn who pays you the most for your time. Those two lists rarely match, and the second one is the one that decides how your year goes.

Why revenue is the wrong ranking

Say three clients billed in the same month.

Client A came to $6,400. Client C came to $3,900. Client B came to $2,700. On that reading the order is obvious: A is the relationship to protect, B is the one you could afford to lose if something had to give.

Bar chart: client A invoiced $6,400, client C $3,900, client B $2,700. Client A $6,400 Client C $3,900 Client B $2,700
Three clients, one month, ranked by what they invoiced.

Now count the hours each one actually took, including the ones that never reached an invoice.

A took 82 hours, which is $78 an hour. C took 61, which is $64. B took 24, which is $112.

Bar chart: effective rate per client against a floor of $85. Client B $112 above the floor, client A $78 and client C $64 below it. Floor $85 Client B $112 Client A $78 Client C $64
The same three, ranked by fee divided by the hours the work really took. Client B, the smallest invoice, is the only one above the floor.

Nothing changed except the divisor, and the order turned over. The client sending the biggest invoice was earning you less per hour than the client sending the smallest one, by a margin of $34.

The line that makes it a decision

A ranking on its own is trivia. It becomes a decision when you put your floor rate next to it: the lowest rate at which you still want the work.

Set the floor at $85 in this example and the picture reads differently again. A is under it. C is well under it. B, the smallest invoice of the three, is the only client of the three still paying what your time is worth.

That is the useful sentence, and it is not visible anywhere in your bank statement. Revenue hides it, because revenue is hours multiplied by rate, and a big number can come from either factor.

How to calculate a client’s effective rate

You do not need a full year of data. One closed month is enough to see the shape:

  1. Pick a period. A month is the smallest one that is not noise.
  2. For each client, total what you invoiced them in it.
  3. For each client, total every hour they cost you: billed work, revision rounds, calls, the scoping email thread, the admin that only exists because they are a client.
  4. Divide. Fee ÷ hours = that client’s effective rate.
  5. Write your floor next to the column and see who is under it.

Step 3 is where this goes wrong for most people. The hours you never billed are exactly the hours that separate a client’s quoted rate from what they really pay, so leaving them out reproduces the ranking you already had. If a client’s number comes out suspiciously close to your quoted rate, you have not counted honestly yet.

The effective hourly rate calculator does the division for a single job if you want to check one client before doing all of them.

What to do with a client under the floor

Being under the floor is not a verdict on the client. It is a description of the current arrangement, and arrangements can change. Three moves, roughly in order of how much you want to keep the work:

Raise the rate. The cleanest fix, and the one the number argues for directly. You now have a specific case rather than a feeling: this engagement returned $78 an hour against a floor of $85. Raising your rates is easier with the arithmetic in front of you.

Re-scope. Sometimes the rate is fine and the unbilled hours are the problem: four revision rounds where the agreement said two, a standing call nobody needs. Fixing the scope moves the effective rate without touching the price.

Let it end. A client who is under the floor, resists re-scoping, and will not take an increase is telling you what the arrangement is worth to them. Letting it run out is a decision, not a failure, and it frees the hours that made them look big in the first place.

Where CronLoom comes in

Doing this by hand once is useful. Doing it every month is the kind of task that quietly stops happening. CronLoom keeps the effective rate current per client while you track, compares each one against the floor you set, and flags the ones that slipped under it. Fixed-price work gets the same treatment: a bid that has absorbed too many hours is marked as underwater before the project closes, not after.

If you want the division done for you as the month runs, join the waiting list. If you would rather do it by hand first, do it by hand first. The ranking is the point, not the tool.

Try it on your own numbers

Take your last closed month, list every client, and put two columns next to each name: what they invoiced, and what they cost you in hours. Divide the first by the second. Then ask which name you expected at the top, and which one is actually there.

Questions, answered straight

Frequently asked questions

How do I know which of my clients is most profitable?
Divide each client's fees for a period by every hour that client actually cost you, including calls, revisions, and admin you never billed. That number is their effective rate. Rank by it instead of by invoice total, and the order usually changes.
Is my biggest client my best client?
Often not. A large invoice can come from a large number of hours, which says nothing about what each hour earned. A smaller client with a tight scope can pay far more per hour than a big one with endless revision rounds.
What should I do about a client below my floor rate?
Three options, in order of how much you like the work: raise the rate at renewal, re-scope so the unbilled hours stop, or let the engagement end. The number does not decide for you, it tells you which conversation is overdue.

Put numbers to it

Every hour, accounted for.

You set a floor rate; CronLoom flags the clients and fixed bids that slip below it, and projects where the month lands.

Join the waiting list

No credit card · later flat €/$9