If you've searched "how much should I charge for a website," you've already read articles that answer "it depends." True, and useless. So I'll do the opposite: give you my numbers, the ones I use as an independent developer in Switzerland, along with the mistakes I paid for out of my own pocket to learn them. These aren't universal truths, they're field benchmarks. Take them, adjust them to your market, but above all, stop guessing your prices out of thin air.

One clarification before we start: these amounts are in Swiss francs, for a Swiss market. If you work in France, count roughly 30% less in euros, the logic stays exactly the same.

The hourly rate: 130 to 150 CHF, and why it's not extravagant

My hourly rate sits between 130 and 150 CHF. When I state it, some clients choke on their coffee. Then I explain what that number actually covers, and the conversation changes.

A freelancer doesn't bill forty hours a week. Between prospecting, quotes, calls, admin, bookkeeping, ongoing training, and the gaps between projects, you realistically bill half your time, on a good week. Out of that rate, you then cover your social contributions, your pension, your insurance, your equipment, your software, your taxes. And you have no paid vacation, no covered sick leave, no employer contributing to your retirement.

Do the math backwards: if you want the equivalent of a decent developer's salary, your hourly rate can't drop much below 130 CHF. That's arithmetic, not greed.

In the field, I notice the conversation starts getting tense around 90 CHF/h with some clients. That's the threshold where they try to squeeze you. My advice, the one I follow myself: don't go below that. A client who thinks 90 CHF/h is still too expensive isn't looking for a professional, they're looking for a bargain. And bargains always end up costing someone dearly: you.

Coins and blank sheets of paper on a freelancer's desk

The trap of the underestimated fixed price

Most clients prefer a fixed price, and I understand why: they want a number, not a meter running. A fixed price isn't a problem in itself. The problem is a fixed price calculated on optimism.

Here's how it plays out the first time. You estimate the site at forty hours, you announce a round number that feels enormous to you, the client signs. Then reality arrives: the logo only exists as a photo of a business card, the text promised "for next week" shows up six weeks later, the client wants to "just move this block," then "just add a page," then "just" a third thing. By delivery, you've spent eighty hours. Your real hourly rate just got cut in half, and you smiled through the whole thing.

A solid showcase website takes me about three weeks, with a client who replies quickly. A business application is a different world: three to four weeks of scoping, then two to three months of development. When you quote a fixed price, start from these real durations, multiply by your hourly rate, and spell out in black and white what's included. Anything not written in the proposal isn't in the fixed price. That sentence alone will save you more money than any sales technique.

Milestones: 60/40, or 40/30/30 for bigger projects

Never work on a "pay everything at delivery" basis. Never. A client who pays everything at the end is a client who can decide, at the end, that actually that shade of green isn't the right one and the payment will wait.

My rule: 60% upfront, 40% at delivery. The first payment triggers the work, not the signature, not the handshake: the payment. A client who balks at paying a 60% deposit is already telling you how the final balance will go.

For bigger projects, a business application over several months for example, I switch to 40/30/30: 40% upfront, 30% at an intermediate milestone defined in the proposal, typically mockup approval or a first working version, and 30% at delivery. The client spreads out their cash flow, you secure yours, and each milestone becomes a formal checkpoint. Everyone wins.

Three sealed envelopes lined up near a small cash box

"My nephew would do it for 500 bucks"

You will live this scene. Mine was a small business owner, pleasant enough otherwise. I present my proposal, he reads it, sets the paper down, and hits me with a smile:

"Look, that's all very nice, but my nephew told me he'd do it for 500 bucks over his vacation."

Ten years ago, that kind of line used to make me panic and drop my price. Today, I answer calmly:

"Then you should hire him. Honestly. If your nephew delivers a site that loads fast, looks good on mobile, is secure, backed up, and still online in two years, that's a great deal. What I sell is something else: a guaranteed result, a point of contact who answers, and someone who'll still be there when something breaks. If that's what you're looking for, my proposal is on the table."

Two times out of three, the client signs. The third time, they go to the nephew, and trust me, you didn't want that client. Never try to hold on to a client who wants to leave: it's a matter of professional hygiene as much as a negotiating stance. The line to remember when someone negotiates too hard isn't a clever comeback, it's this: "My price is my price. I can shrink the scope, not the rate."

The revenue everyone forgets: hosting and maintenance

Here's the number almost no beginner knows: the most profitable revenue in this trade doesn't come from building the site, it comes from what happens after.

Every site I deliver comes with a hosting and maintenance contract, around 435 CHF a year. The real infrastructure cost is much lower: I resell it with a markup of 2x to 3x, and that markup is fully justified. The client isn't paying for a server, they're paying for peace of mind: updates, backups, monitoring, a number to call when something goes wrong.

Run the projection. With twenty clients on maintenance, you collect a recurring revenue every year that lands without prospecting, without selling, without negotiating. It's your safety cushion through slow months, and it's what turns a feast-or-famine activity into a stable business. A freelancer who delivers sites without selling the maintenance behind them is leaving half their business model on the table.

Charging fairly is a system, not a number

Remember the whole picture rather than the amounts: an hourly rate you own between 130 and 150 CHF, fixed prices calculated on real durations with a written scope, 60/40 or 40/30/30 milestones that protect your cash flow, the courage to let haggling clients walk, and recurring hosting revenue that stabilizes everything else. Each of these building blocks takes practice, and they're learned far faster when someone shows you the real documents, the real dialogues, and the real pitfalls.

That's exactly what I break down, proposal by proposal and milestone by milestone, in my course Design a full-stack project from A to Z: the whole journey of a client project, from the first call to the maintenance contract that pays your slow months.

Also worth reading

AI agentsL’IA est-elle vraiment différente de nous ?8 min readClient projectThe Qualification Call: 30 Minutes to Filter Out the Wrong Clients6 min readClient projectMaquettes avant le code : l'étape que les débutants sautent (et le paient cher)6 min read