Let's Connect

A laptop showing financial charts and numbers, representing rate and pricing decisions for freelance work

For my first two years of pricing freelance development work, I charged $25 an hour because it felt safe. It was a number I could say out loud without my voice shaking, and clients said yes immediately, which I read as proof I was priced right. It was proof of the opposite. Most of us fall into the same trap: we price at the number that feels comfortable, then quietly undersell for years while telling ourselves the market is just like that. The day I stopped quoting my comfort level and started quoting the outcome, my income roughly doubled on the same number of hours.

This is the article I wish someone had handed me in year one. It is specific: real formulas, real numbers, and the change-order language I actually paste into emails. It pairs with what I have written on writing proposals that win contracts, because pricing, proposals, and scope are the same problem viewed from different angles.

Hourly, fixed, or value-based: which one fits?

There is no single right pricing model. There is a right model per engagement, and most of the underselling I see comes from defaulting to hourly for everything because it is the easiest to explain. Here is how I actually decide.

  • Hourly works when scope genuinely cannot be known up front: a vague "the site is slow, can you look into it," an ongoing retainer, or maintenance where the work is open-ended. You bill for time and the client carries the uncertainty.
  • Fixed price works when the scope is tight and written down: "build these four API endpoints to this spec, with these acceptance criteria." The client gets a known number, you keep any efficiency gains, but a fuzzy scope will eat you alive.
  • Value-based works when your work moves a number the client cares about: a checkout flow that lifts conversion, an integration that saves a team ten hours a week. You price against the outcome, not the clock.

The quiet problem with hourly is that it punishes you for getting good. The faster and more experienced you become, the fewer hours a task takes, so the more skilled you are the less you earn for the same result. A junior who takes 20 hours out-earns the senior who does it better in 6. That is backwards, and it is the single biggest reason I moved most of my work to fixed and value-based pricing.

Fixed price is where developers get burned, almost always for the same reason: the scope was a conversation, not a document. If you cannot list the deliverables and write down what "done" means for each, you are not ready to quote a fixed number. Pad for the unknowns or stay hourly until the scope firms up.

How do you set a floor you never go below?

Before you think about what to charge a specific client, you need a number you will never drop under, no matter how badly you want the work. That is your effective hourly floor, and it is not the same as a salary divided by 2,080 hours. You are not billing 40 hours a week. You are running a business, and a real chunk of your week is sales, admin, invoicing, learning, and dead time between contracts. Here is the formula I use.

effective-hourly-floor.txt
(annual cost of doing business + target take-home income)
--------------------------------------------------------- = effective hourly floor
          billable hours per year

where billable hours = working hours per year x billable %

Worked example:
  Cost of doing business (tools, taxes set-aside, software,
    hardware, insurance, fees)............ $14,000
  Target take-home income.................. $60,000
  ---------------------------------------------------
  Total to cover........................... $74,000

  Working hours: 45 weeks x 35 hrs......... 1,575 hrs
  Billable percentage (the honest part)....   55%
  Billable hours: 1,575 x 0.55............. ~866 hrs

  Effective hourly floor: 74,000 / 866 .... ~$85/hr

That $85 surprises people who were charging $40 and thought they were doing fine. The lever almost everyone gets wrong is the billable percentage. New freelancers assume 90 percent and then wonder why the math never works in real life. After tracking my own time for a year, I bill closer to 55 to 60 percent. The rest is unpaid: proposals that lose, admin, the gap between contracts, and keeping skills current. Your floor is not your target rate, it is the line below which a project actively costs you money. Quote above it, ideally well above it, but never below.

A laptop and notebook with business and financial figures, representing the cost-of-doing-business calculation behind a freelance rate floor
Your floor comes from real numbers: cost of doing business plus target income, divided by the hours you can honestly bill, not a salary cut into 2,080 even slices.

How do you raise your rates without losing everyone?

The fear of raising rates is the fear of hearing no. So arrange things so a no costs you almost nothing. You do not announce a 40 percent increase to your entire existing client base on a Monday. You raise on new clients first, where you have no relationship to damage and no history anchoring you to the old number. The next proposal goes out at the higher rate, and you watch what happens. If they say yes, your old rate was too low and you have proof. If a few say no, you have lost prospects, not income.

When you do quote the new number, anchor it to outcomes, not to your hours or your feelings. "This will cut your page load from 4 seconds to under 1, which is what is costing you signups" reads very differently from "my rate went up." Let your portfolio and your reviews carry the justification so you are not the one arguing for the price. A track record of shipped work and happy clients does the negotiating for you.

Existing clients come later, with notice. A simple "starting next month, my rate for new work moves to X" with a few weeks of warning is professional and fair. The good ones stay because they value the relationship and the results. The ones who leave over a reasonable increase were the price-shoppers who were going to be a problem anyway, and losing them is the system working.

Scope creep is a pricing problem, not a personality problem

"Can you also just add..." is not a favor request, it is an unpriced change to a fixed-scope contract. Every time you absorb one to be nice, you quietly lower your effective rate and train the client to keep asking. The fix is the change order: you do not say no, you say "happy to, here is what that adds." It reframes the request as a business decision the client makes, not a free extra they assume.

change-order-reply.md
Hi [Name],

Good call — adding [the new request] is doable. It sits
outside our current scope (which was [original deliverables]),
so it's a change order:

  - Work: [what you'll build]
  - Added cost: [$X fixed]  /  est. [Y hours] at [$rate]
  - Timeline impact: pushes delivery to [new date]

Reply "approved" and I'll fold it in. Happy to keep it for
phase two instead if you'd rather ship the current scope first.

Notice the tone: enthusiastic about the work, neutral about the money. You are not punishing the request, you are pricing it. Clients respect this far more than silent resentment, and it is the same boundary I lean on throughout managing client expectations on fixed-price work.

A do and don't list I'd give my year-one self

  • Do calculate your floor before your first quote of the year, and write the number somewhere you will see it.
  • Do quote a single confident number and then stop talking. Silence after a price is not your cue to discount.
  • Do raise rates on new clients first and let the market tell you the answer.
  • Don't price by the hour for work where being fast is your advantage — you are taxing your own skill.
  • Don't quote a fixed price for a scope you can only describe in a sentence. Get it in writing or stay hourly.
  • Don't absorb "small" additions to be liked. Use a change order every single time, even for the tiny ones.
The price that makes you slightly nervous to say out loud is usually the correct one. The price that feels safe is almost always the one you'll resent in six months.Md Raihan Hasan

Where you find your first clients shapes how you price, too: hourly-heavy platforms and project-based ones pull you toward different models, which is part of why I compared Fiverr vs Upwork for developers the way I did. But the platform is just the storefront. The real work is internal: knowing your floor, choosing the model that fits the engagement instead of the one that feels familiar, and treating every quote as a statement about the value you deliver rather than a confession of what you think you are worth. Run the floor formula this week, raise your next new-client quote by 20 percent, and watch how rarely the no actually comes.