You aren't going to get your hourly rate for 40 hours a week if you put in a 40 hour work week.

You need to do marketing to bring in new clients and you probably should be doing this daily. This also includes things like building your web presence and any other promotional things you might do.

You will have time between projects. Most likely you wont have one project line up perfectly with the next through the year.

You don't get paid sick or vacation pay. Between this and downtime between projects, imagine how easy it is to blow through 40, 80, 120 hours of opportunity costs.

You have to pay for all of your own work related expenses.

Occasionally you will have a project blow up or a client won't pay and creates more opportunity costs.

The list goes on.

One way to help all of this is to not bill hourly.

You also need to get a hefty premium for taking on the risk of doing freelance work. Otherwise it's silly to do freelancing over taking a job. All those dreams of being your own boss and choosing your own hours is B.S. All that matters is that you are able to get more earnings than you would if you were working a job. All of the above is stuff that you don't have to deal with in a real job.

Also, you are making life easy for your employer if you are able to deliver high quality work at no risk and headache of doing an actual hire. That's worth a good premium by itself.

But all that is the wrong mind-set. You need to make sure that you are putting yourself not in a position of being a commodity. You need to be delivering on problems that can't necessarily be solved by throwing money at them. And there needs to be real resources behind those problems.

People on Upwork aren't evil because they are looking to hire people for nothing. Upwork is a market. People negotiate. They can get whatever they are looking for. You aren't what they are looking for, yet you still find yourself in the same market. That's fine, just pretend they don't exist. You don't negotiate because you aren't a commodity. You are providing solutions that can't be bought. In other words, everyone needs to do the proper dance steps to pull this off and the lowest bidder won't get the job done. Even the highest bidder may not be able to hit the deadline if the buyer first goes for the lowest and has to scrap the project and start again.

If margins are so low that there is a big difference between a $30 / hr developer and a $40 / hr developer then you need to say no. This is largely arbitrary anyways. Nobody knows how many hours the project really requires and the more expensive programmer may get the project done in half the time. Or that developer may save that much time through maintenance in the long term. Software scales, hours don't, the difference shouldn't come into play. Pay the developer a sufficient professional rate.

Boot-strappers with little money shouldn't be hiring people. They need to roll their sleeves and do some coding themselves. And how much is that time worth? It's probably worth about the same as the hourly freelancer they would be looking to hire (or more) and they are losing that money in opportunity costs. But that's what you need to do when you have more time than money.