In short
- Start from what a year has to cover, not from what others charge.
- Price the scope in parts, with assumptions written down.
- Put uncertainty in the model, not in a padded number.
- Know which fees come off before you quote.
This guide deliberately contains no rate tables. Published averages are gathered from wildly different work, and quoting one back to a client is how you end up defending somebody else's number. What follows is how to build your own.
Start with what the year has to cover
Freelance pricing is not a salary divided by hours. The hours you can bill are a fraction of the hours you work, and several costs never appear in an employed job.
- What you need to earn after tax, and the tax on top of it.
- Time that is real but unbillable: proposals, admin, invoicing, learning, sales calls.
- Holiday, sick days and the weeks between contracts.
- Tools, hardware, software, insurance, accounting.
- Platform and payment costs on what you bill.
Divide the target by the hours you can realistically bill, not by 40 a week. Billable time usually lands well under half of working time, which is why the number that comes out is higher than people expect. That number is not your price. It is the line under which work costs you money.
Then price the job, not the hour
Your floor tells you what to decline. What you quote is set by the job: how big it is, how much is already decided, how risky the unknowns are, and what it is worth to the client.
| What moves a quote up | What moves it down |
|---|---|
| Unclear scope, or decisions still open | Final designs, written content, a decided stack |
| Many stakeholders or an unnamed approver | One decision maker who is available |
| Integrations with systems you cannot see yet | Systems you have worked with before |
| A deadline that displaces other work | A schedule with slack in it |
| Legacy code, no tests, no documentation | A clean starting point and a staging environment |
| Unlimited revisions expected | A stated number of revision rounds |
Handle uncertainty explicitly
The instinct with a vague brief is to pad the number. The problem is that padding is invisible: the client cannot see what they are paying for, so it reads as expensive rather than careful. Better to make the uncertainty a visible part of the structure.
Weak
Migrate the old data: $3,000. (Quietly assuming the worst, in case it is a mess.)
Better
A short paid investigation to see what state the data is in, then a fixed price for the migration itself once that is known. If it turns out to be clean, the migration is quoted lower than this estimate.
Nobody is paying for a worst case that may not happen, and you are not absorbing it if it does. Splitting the job this way also shows you have seen it go wrong before, which reads as competence. Fixed-price versus hourly covers the split in more detail.
Write the assumptions next to the price
A quote is a conditional statement, and the conditions are what stop it from being renegotiated in your head at three in the morning. Keep it short.
- What is included, in deliverable terms.
- What is not included: content, licences, hosting, migration, training.
- How many revision rounds are covered.
- What you need from the client, and when.
- What happens if an assumption turns out to be wrong.
Know what comes off the top
Quote on what you receive, not on what is charged. On Open Lance, commission on fixed-price and hourly contracts depends on whether you have an Ultra subscription, while Drop-In sales and Dedicated Hires carry a flat commission that is the same for everyone. Withdrawals have a flat fee and a minimum, and released money clears for a period before it can be withdrawn.
None of those numbers belong in this guide, because they are configurable and a page that quotes them goes stale. The current rates are on the pricing page, and bid packs and Ultra covers the arithmetic on whether a subscription pays for itself at your volume.
Raising prices
Raise on new clients first, where there is no history to renegotiate. With existing clients, give notice, apply the change to the next project rather than the current one, and say it plainly without apologising or over-explaining. Most clients accept a rise from someone who is reliable; the ones who leave over a modest increase were already the ones absorbing your margin.
Mistakes that keep prices low
- Quoting a day rate for a fixed deliverable. It invites a conversation about speed instead of value.
- Rounding down to seem reasonable. Nobody hires on the last 5%.
- Including revisions without limit. One client will use all of them.
- Not charging for the awkward parts. Meetings, exports, handover, support after launch.
- Competing on price with a different market. There is always someone cheaper.
Should I publish my rates?
Publishing a starting point filters out work below your floor, which saves both sides time. Publishing one exact number for everything is harder to defend, because jobs differ in ways that genuinely change the price.
What if a client says my price is too high?
Ask what their budget is and offer a smaller scope at that number rather than the same scope for less. Cutting the price for the same work teaches the client that your first number was not real.
How do I price a first project when I have no track record?
Keep the scope small so the risk is low for both sides, price it at your floor rather than below it, and treat the finished work and the review as the return. Discounting deeply tends to attract clients who will not pay more later.
Is charging more for a rush job reasonable?
Yes, when it displaces other work or costs you evenings. Say what the premium is for, and give the client the option of the normal schedule at the normal price.