All posts

How I Estimate Freelance Web Development Projects

The exact process I use to scope, price, and quote freelance web development work — and the traps that cost me money before I got it right.

If you're a freelance web developer, the single skill that determines whether you build a sustainable business or burn out is estimation. I've quoted jobs that lost me money, quoted jobs that left clients feeling squeezed, and — eventually — landed on a process that keeps both sides happy. Here's how I do it now.

Start with the outcome, not the feature list

When a potential client reaches out with a feature list, I don't quote against the list. I ask them: what's the business outcome you're trying to hit? "We need to stop losing leads from our contact form" is a different project than "we need a contact form with a dashboard and email notifications," even though the implementation overlaps. The outcome frames what's actually worth building.

Break the project into unknowns, not tasks

Tasks are easy to estimate. Unknowns are where projects go sideways. Before I quote, I list every unknown I can see:

  • Do they already have hosting? A domain?
  • Is there an existing design or do I need to wireframe?
  • Will I need to integrate with a third-party they haven't chosen yet?
  • Who approves the work, and how fast?

Each unknown gets a time buffer or gets resolved before I quote. Unknowns I can't resolve become line items in a discovery phase, billed separately.

Price in ranges, quote in fixed

Internally I estimate a range: best case, realistic, worst case. I quote the client the realistic number as fixed-price for the scoped work, and I explicitly list what's not included. Change requests get priced in writing before I touch them. This sounds rigid but clients actually prefer it — ambiguity is what makes them nervous.

The three-minute rule for scope creep

If a client asks for a change that will take less than three minutes, I just do it. Anything more gets a written change request with a price and timeline. This rule keeps the relationship warm without letting scope melt.

Time buffers are not optional

I add 20–30% buffer to my realistic estimate for anything I haven't built before. I add 10% for things I have. Every senior freelance web developer I've talked to does some version of this — the ones who don't are the ones working weekends for free.

Takeaway

Estimation isn't guessing. It's a repeatable process: understand the outcome, surface the unknowns, buffer honestly, and document the scope in writing. Do this consistently and you stop trading profit for politeness.