Most freelancers can tell you which client pays them the most. Very few can tell you which client earns them the most. Those are different questions. The client sending $4,000 a month could be costing you 60 hours of calls, revisions, Slack messages and invoice chasing, while the quiet client paying $1,500 takes 12 hours and pays on day three.
Client profitability analysis means working out what each relationship actually earns once you count all the time and cost that goes into it. It takes an afternoon the first time and about 20 minutes a quarter after that. It also tends to change your business more than any rate increase, because it shows you where your time is going.
Revenue Is Not Profit, and Hourly Rate Is Not Effective Rate
When you quote a client $100 an hour or $3,000 for a project, that number assumes the only time you spend is on the deliverable. Real client work also includes:
- Communication overhead — status emails, weekly check-ins, ad-hoc calls, and messages that need an answer within the hour
- Revision cycles — especially the third, fourth and fifth rounds that the original scope never expected
- Onboarding and context switching — learning their tools, logging into their systems, and finding your place again after a two-week gap
- Admin and collections — building invoices, filling out vendor forms, and following up when payment is late
- Direct costs — software seats you pay for only because of this client, stock assets, travel, and subcontractors
Your effective hourly rate for a client is the net revenue they paid you divided by every hour you spent on them, billable or not. That is the number that matters.
A client paying $120/hour who eats 40% unbilled overhead is worth less than a client paying $85/hour who eats almost none. Look at the effective rate, not the quoted rate.
Step 1: Collect Three Months of Honest Data
You need two numbers per client: total money received and total hours spent. Use at least three months, and six is better, because a single month hides seasonality and one-off projects.
For revenue, use payments actually received in the period, not amounts invoiced. If a client paid an invoice 75 days late, that delay has a cost, and we'll get to it shortly. Subtract any direct costs you took on only for that client: a $30/month design tool seat, a $200 contractor you brought in, or parking at their office.
For hours, this is where most freelancers come up short. If you only track billable time, you're missing the overhead, which is exactly what this exercise is meant to find. Starting today, log everything per client, including the 10-minute email reply and the 25-minute call that "didn't count."
A time tracker that tags entries by client makes this mostly automatic. Stintly lets you start a timer against a specific client in a couple of taps and mark entries as billable or non-billable. It works offline, so the time you spend on a client call in a coffee shop with bad Wi-Fi still gets recorded. If you don't have historical overhead data, track carefully for four weeks and use that ratio to estimate the past.
Step 2: Calculate Effective Rate per Client
Put it in a simple table with one row per client and these columns:
- Revenue received in the period
- Direct costs tied to that client
- Net revenue (1 minus 2)
- Billable hours
- Non-billable hours (communication, admin, unpaid revisions, collections)
- Total hours (4 plus 5)
- Effective rate (3 divided by 6)
- Overhead ratio (5 divided by 6)
Here's a realistic example from a freelance web developer's quarter:
- Client A (agency retainer) — $12,000 net, 95 billable + 55 non-billable hours = 150 hours. Effective rate: $80/hour. Overhead ratio: 37%.
- Client B (SaaS startup) — $7,200 net, 60 billable + 10 non-billable hours = 70 hours. Effective rate: $103/hour. Overhead ratio: 14%.
- Client C (local nonprofit) — $3,000 net, 25 billable + 30 non-billable hours = 55 hours. Effective rate: $55/hour. Overhead ratio: 55%.
Client A brings in the most revenue but is the middle earner. Client B earns about 29% more per hour than Client A. Client C has a $100/hour quoted rate and earns barely half of that in practice.
Step 3: Adjust for Payment Behavior and Risk
Effective rate is a strong first look, but it treats a client who pays in 5 days the same as one who pays in 90. Late payment costs you real money. You may cover the gap from savings, put an expense on a credit card, or spend a week anxious about rent.
A simple adjustment is to apply a late-payment penalty of about 1.5% of revenue for every 30 days past your terms that a client averages. If Client A pays an average of 60 days late, knock 3% off their net revenue. That's $360 in this example, which brings their effective rate down to about $77.60. The exact percentage matters less than making slow payers show up in the numbers.
Also count collection hours as non-billable time for that client. If you sent four reminder emails and made two awkward phone calls to get paid, that time goes on their row.
A client who pays reliably on time is worth a premium. A client who pays 60 days late is getting a discount you never agreed to.
Ready to put this into practice? Download Stintly for Free — it’s free and works offline.
Step 4: Sort Clients into Four Buckets
Once you have adjusted effective rates, compare each one to your target rate, meaning the hourly figure you need to hit your income goals after taxes, benefits and non-client time. If you've never calculated it, a quick version is annual income goal divided by roughly 1,000 to 1,200 realistic billable hours. For a $100,000 goal, that's $83 to $100 per hour.
Then place every client in one of four buckets:
- Protect — effective rate above target and low overhead. These are your best relationships. Over-deliver on service, ask for referrals, and don't raise rates aggressively enough to risk losing them.
- Fix the process — good quoted rate, but overhead drags the effective rate below target. The problem is how the work happens, not the price. These clients can often be fixed without a hard conversation.
- Reprice — low overhead, but the base rate is simply too low, often because it's a legacy client from when you started out. They need a rate increase.
- Exit — low rate and high overhead, with no strategic reason to stay. Plan a respectful wind-down.
In our example, Client B is "Protect," Client A is "Fix the process," and Client C is somewhere between "Reprice" and "Exit," depending on whether the nonprofit work matters to you for reasons beyond money. That's a legitimate reason to keep a client, as long as you make the choice knowingly.
Step 5: Fix the Overhead Before You Fire Anyone
Most unprofitable clients aren't bad people. They're working without structure. Before you end a relationship, try these overhead fixes. Each one usually recovers 5 to 15 hours a month:
- Batch communication — replace scattered messages with one weekly written update and a single 30-minute call. Tell them you'll reply to non-urgent messages within one business day.
- Cap revisions in writing — two rounds included, with additional rounds billed at your hourly rate. Put this in the next statement of work, not just in an email.
- Bill for meetings — if a client wants weekly hour-long calls, that's 4+ hours a month. Either include it in the price or make it a line item.
- Move to retainers or project pricing — hourly billing on a high-overhead client means you pay for their inefficiency. A fixed fee priced to cover realistic overhead moves that cost back to them.
- Tighten payment terms — ask for a deposit, shorten terms from net-30 to net-15, or set up automatic card payment for recurring work.
Give each fix 60 to 90 days, then rerun the numbers. If the effective rate hasn't moved, that tells you something, and a repricing or exit conversation becomes much easier to justify.
What Trades and Service Businesses Can Learn Here
This isn't unique to designers and developers. Service businesses with physical work deal with the same problem, often in greater degree because travel and materials add to the hidden costs. A lawn care operator might find that one large commercial property has huge drive time and constant re-service requests, which makes it less profitable than three small residential yards on the same street. Tools like LawnBook help landscaping businesses see per-client job history so those patterns show up. The same applies to cleaning companies. A "premium" client who reschedules every other week and keeps adding rooms without adjusting the price is a classic overhead problem, and ShineBook is built to track that kind of client-level detail for residential and commercial cleaners.
Contractors call this job costing, and they treat it as non-negotiable because margins on construction work are thin enough that one bad job can erase a quarter's profit. TrestleBook handles job costing and contractor billing for exactly that reason. Even landlords run a version of this analysis: a unit with a tenant who pays late every month and files constant maintenance requests has a different real return than its rent suggests, which is the kind of thing KeyLoft helps property owners track. The lesson for freelancers is the same in every case: measure each relationship separately, not just the business as a whole.
Your business is a portfolio of client relationships. Some are growth stocks, some are bonds, and a few are quietly losing money every month you hold them.
Make It a Quarterly Habit
Client profitability changes over time. A great client can get worse after a new point of contact joins their team. A difficult onboarding can settle into a smooth, profitable routine by month four. So treat this as a review you repeat, not a one-time audit.
A sustainable rhythm:
- Daily — log all client time, including non-billable time, as it happens. This is the only step that can't be skipped.
- Monthly — glance at hours per client and flag anyone whose non-billable hours jumped.
- Quarterly — rebuild the effective-rate table, re-sort clients into buckets, and pick one action: one process fix, one rate conversation, or one planned exit.
- Annually — compare the year's best and worst clients, and write down what they had in common so you can screen new prospects better.
That last step tends to pay off the most. After a year or two of data, you'll notice patterns: maybe clients who come through referrals have half the overhead of clients from job boards, or startups pay faster than agencies. That changes how you market and which inquiries you take on.
The daily logging habit is where most freelancers drop off, so make it as easy as possible. Stintly is designed for that: quick client-tagged timers, billable and non-billable flags, and invoicing in the same place. You end up with the data you need for this analysis without keeping a separate spreadsheet.
Your top-line revenue only tells you how big your business is. Client profitability tells you whether it's healthy. Spend an afternoon this month calculating the effective rate for each client, and you'll probably find at least one relationship that's costing you more than you realized and at least one that deserves more of your attention. Fix the first and invest in the second, and you can earn more without adding a single client.