Freelance web developers get paid for reducing technical risk, not just writing code. A general WordPress builder might live around $60-$90 per hour, while specialists in Shopify, Next.js, performance optimization, or custom integrations often sit in the $100-$175 range because their work has a more direct revenue impact. If clients already ask for a specific stack by name, that is usually a sign you can charge a premium for it.
Your billable-hours estimate should include more than coding time. QA, deployment, documentation, bug triage, client calls, and environment setup easily consume 25-35% of a normal week, which is why many strong developers only average 20-28 truly billable hours. When developers underprice, it is usually because they assume forty billable hours and ignore the hidden time spent shipping reliable work.
Keep an hourly floor, but turn it into higher-margin offers like website builds, sprint blocks, and maintenance retainers. A $3,000 build with a $250 monthly care plan is usually better business than chasing one-off $500 fixes all month. Add discovery deposits, rush fees of 20-30%, and explicit post-launch support windows so small requests do not turn into permanent unpaid maintenance.