1. Your time entries
Needs a Client and a Duration (or Hours): decimal hours, 1:30:00 or 1h 30m. Used when present: Date, Billable (yes/no), and an Amount (or Billable Rate, which is multiplied by the hours). Comma, tab and semicolon files, quoted fields, US and day-first dates and UTF-16 exports are read. Rows that cannot be read are listed with a line number and reason.
Choose a file or paste the text, then click Analyze.
Result
By client
| Client | Hours | Non-billable h | Revenue | Effective $/h | % of target | Gap to target | Hours share | Revenue share |
|---|
The model, and what it leaves out
- Effective rate is a client's revenue divided by all their tracked hours, billable or not. Revenue is the export's amounts (or rate times hours) plus any flat fee you typed. Reconciles. Client hours add up to the total hours and client revenue to the total revenue.
- Non-billable entries are those the Billable column marks no; they add hours and no revenue. With no Billable column every entry is treated as billable.
- Gap to target is target rate times hours minus revenue, for clients below target. The sum is an upper bound, not a forecast: it assumes those clients would pay the target rate.
- Scope creep is flagged only for mostly flat-fee clients with at least four dated entries over enough time: hours in the later half of their entries against the earlier half.
- Not modelled: unpaid invoices, expenses and software costs, taxes, travel, sales and admin time not tracked, the value of a client to your reputation or pipeline, and anything not in the file. Revenue is as recorded in the export, not what was collected.
Common questions
How do I find out which clients are actually profitable?
Export your time entries from Toggl, Clockify, Harvest or your own sheet with a client, a duration and, if you have them, a billable flag and an amount or rate, then drop the file here. The tool divides what each client paid by the hours you spent on them and compares that effective hourly rate with the target rate you type. Nothing is uploaded; the file is read in your browser.
What is an effective hourly rate?
It is total revenue from a client divided by every hour you tracked for them, billable or not. A client billed at $120 an hour who also takes ten unbilled hours of calls and revisions for every forty billed is really paying $96. Flat-fee and retainer clients only show up honestly this way.
How do flat-fee and retainer clients work here?
Type one line per client, such as Harbor Dental, 6000, in the flat-fee box for the period the export covers. That revenue is added to whatever the export already attributes to the client, and divided by all their hours. If the fee did not change while their monthly hours did, the tool flags scope creep.
Which columns does the file need?
A client and a duration (hours as a decimal, 1:30:00, or 1h 30m). Optional and used when present: a date, a billable yes/no column, and either an amount or an hourly rate. Column names are matched by alias; rows that cannot be read are listed with a line number and reason.
Is the $-upside figure a forecast?
No. It is the extra revenue the below-target clients would have paid at your target rate for the same hours, which assumes those clients would accept it. It shows how large the gap is, not what you will get.
Is this financial or business advice?
No. It applies arithmetic to the file you supply and a target rate you type. It is independent of every time-tracking product named on this page and is not affiliated with or endorsed by any of them. Whether to reprice, scope or drop a client is your decision.