Estimating is not an easy thing to do. Even with experience, you can make mistakes.

But with years, it becomes easier to follow some steps that are almost the same and to spot “red flag” clients.

This is, of course, not an ultimate guide for making estimates. And you’re more than welcome to put your own tricks and tips in the comments below.

With these tips and steps, sometimes, I estimated on projects that became a $200+ hourly rate job.

Before these steps, sometimes I even lost some revenue due to the hours I estimated and the hours I actually worked.

I’ve written a shorter version of it on Twitter. You’re welcome to share it 😀

1. Get as much information on the start

I won’t start a project before I know everything I need to know.

Before getting involved in further discussion, you should know everything about the project and its environment.

Some of the general questions I would ask:

  • What works? I’ll know what they’re happy with so I can work around it,
  • What doesn’t work? Get to know what’s their priority to work on and how they want it to work,
  • Environments? Find out if you’ll need to set up a staging site and such. Include hours for that as well,
  • Deadline? This is a big one. You don’t want to accept it if you can’t make it happen (or propose a future date),
  • Ultimate goal? Find out what they want to achieve with it. Maybe you have a better solution for them,

Of course, for each project, there will be additional questions.

So ask everything you can think of such as questions about different scenarios (example: if-else questions; What If X happens? How should Y behave?).

2. Check the current state

If this is a project you’re inheriting, check the state of the current project.

Ask the potential client for access to their staging and/or production site.

Go over everything you think needs to be looked at.

Try not to spend more than 1 hour checking everything.

If further investigation is needed, ask them if you can copy the project (if it’s a smaller one) locally and play around with it. Or if they can create a clone site.

Maybe you’ll lose 2 more hours of your time, but if you can’t solve what they need, you’ll save yourself a lot of headaches.

After the investigation of the current state, you’ll have a clearer picture of what they want to achieve.

3. Discuss Tools and Software

Go over the functionality they need and see if you can save them time & money by using existing tools and software.

For example, they want an eCommerce site with shipping. I would go for WooCommerce as I know it best. And then propose them a few add-ons such as WooCommerce Subscriptions.

If they need tools and/or software for their project to work better and such need licenses, my advice would be to let them purchase and manage licenses.

4. Scoping the Project

This is a really important part of the whole project before you begin estimating.

Go over each question you’ve asked at the beginning.

Write the questions and the answers down. Then write what you’ll need to do with it (if such questions require it).

Write down the current state of the project and write what you’ll need to do with it. Will some optimization or refactoring be needed? Maybe migrations are here a safe choice as well? Write everything down.

Now that you’ve all written it down, go over it one more time.

And after that, start scoping the project by writing down what you’ll need to do. Try putting that in bullet points.

Write every little detail and if you want to make sure your client will understand it well, write specifically in detail what you’ll do.


Bad: Create an upload form.

Good: Create an upload form on the admin post area that will upload .zip files by clicking on the upload button.

Bad: Save the file in folders.

Good: Save the uploaded file inside of folder within /uploads folder. Name the folder by current date and post title such as (post-title-2022-01-01).

Also, if you happen to get more questions whiles scoping, ask the client.

5. Estimating

Now that you’ve scoped everything and understand the project better, estimating the project will be much easier.

The problem here is that at this moment, imposter syndrome could kick in.

So how to make sure you don’t estimate too low?

Use the three-point estimation system:

  1. Best case scenario: X hours (example: 5 hours)
  2. Expected scenario: Y hours (example: 15 hours)
  3. Worst-case scenario: Z hours (example: 60 hours)

Estimated hours: (X + 4*Y + Z) / 6

6. Buffer

Even with following all those steps, you or your client might miss some details.

Even with the worst-case scenario, such missed details might not be included.

So, you can add 20-30% on top of the estimated hours to include that as well.

Or, you can discuss it with your client so all other additional work that wasn’t scoped, will be billed by your hourly rate.


As a developer or any other type of freelancer, estimates will be a part of our career.

These are the steps that you should try to use to help yourself make better estimates.

Become a Sponsor

Posted by Igor Benic

Web Developer who mainly uses WordPress for projects. Working on various project through Codeable & Toptal. Author of several ebooks at

One Comment

  1. What a great post! loved it very much.


Leave a reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.