1. Your transaction history
Needs a Date and an Amount column. Type, Description, Ref ID, Team (or Client) and Hours are used when present; hours are also read from text such as "12.5 hrs" in the description. Fees may be negative or positive. Comma, tab and semicolon files, 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
Where the money went
| Line | Amount | % of earnings |
|---|
By contract
| Contract | Earned | Service fee | Fee % | Kept | Hours | Net / hour |
|---|
By month
| Month | Earned | Fees | Refunds | Kept |
|---|
The model, and what it leaves out
- Earnings are positive rows of an earnings type (hourly, fixed price, milestone, bonus and similar). Refunds and reversals are subtracted.
- Fees are grouped as service fee, Connects, membership, withdrawal and other, by the words in each row's Type and Description. A withdrawal itself is cash leaving the platform, not a cost, and is counted separately.
- Reconciles. Earned minus refunds minus every fee group equals the kept total, and the monthly rows add up to it.
- Service fee by contract is matched through the shared Ref ID, or the same date and contract. Fees that match nothing stay in the totals and are listed as unmatched.
- Net per hour uses only payments where hours were found, and deducts that payment's share of the service fee. It does not deduct Connects or membership, which belong to finding work rather than to one contract.
- Not modelled: taxes, currency conversion done outside the file, unbilled time, proposals that got no reply, and anything not in the file.
Common questions
How do I see what Upwork really takes from my earnings?
Download your transaction history CSV from the Reports section of your account, drop it here, and the tool adds up earnings, service fees, Connects, membership and withdrawal fees, then shows what share of your earnings you kept, by contract and by month. The file is read in your browser and never uploaded.
What fee rate should I expect?
Use the rate your own file shows. Platform fee schedules have changed over the years and can differ by contract start date, so the tool reports the observed service fee as a percentage of earnings for each contract instead of assuming one. Check the platform's current terms for what applies to new contracts.
How is my effective hourly rate worked out?
For contracts where hours can be found (an Hours column, or text such as 12.5 hrs in the description), the tool divides earnings minus the service fee by those hours. Time the platform did not record, such as unbilled prep or messaging, is not in the file, so treat the result as an upper bound.
Is a Connects spend worth it?
The tool shows what Connects and membership cost as a share of earnings and per paying contract. It cannot see proposals that got no reply, so it cannot give a win rate; keep a count of proposals sent if you want one.
Is this tax or financial advice?
No. It applies arithmetic to the file you provide and does not replace your own judgement or a qualified tax adviser. It is independent of Upwork and every other platform and is not affiliated with or endorsed by any of them.