How Much to Charge for a Website: The Ultimate Guide for Agencies

June 23, 2022
0 minute read

Whether you’re a budding freelancer or you’ve set up an agency specializing in web design, a critical business decision is how much to charge for a website. Getting pricing right dictates your success in attracting clients and driving growth. 


Striking the right balance with pricing means giving prospective clients the perception that they’re getting a good deal while ensuring you don’t sell your skills short and limit revenue. Setting a price for a website design is trickier than it sounds, though, and it depends on an intricate web of different factors.

This article helps agencies and freelancers determine a suitable price point by examining typical agency rates and highlighting the key elements that influence web design prices.

How Much Do Agencies Charge to Build a Website?

The average agency or freelancer price point for building a website spans a large range between $12,000 and $150,000. The reason for such a wide range of values stems from the various elements that influence the cost (more on those elements later). 


Let’s now take a look at the different cost structures that agencies use when charging clients for websites. 


Hourly


Hourly pricing means you bill the client for all hours spent working on the design of the website. This is quite a useful pricing structure in the sense that it reflects the varying nature of how long each web design project takes. However, a valid criticism of this approach is that it rewards sluggishness and disincentivizes efficiencies. 


While the prospect of being rewarded for sluggishness sounds kind of nice in theory, the practical reality is that web design agencies should always be tweaking their operations to become more efficient. Sloth-like processes eventually repel clients and damage an agency’s reputation. 


Flat Fee


A flat fee establishes a price for the entire project at the outset as agreed upon by you and the client. From an agency perspective, this cost structure works well when you tend to accurately estimate the time and resources needed for projects. And if you continually strive to improve your processes, such as by using a professional
website builder, you’ll often end up completing projects faster, which works out more profitably. A disadvantage is that underestimating the complexity of a project may result in charging too little. 


Yearly


For most web design agencies, building relationships and recurring income sources beyond the initial website design paves the way for long-term growth. A yearly retainer fee typically includes a website along with additional services, such as annual maintenance, redesigns or refreshes,
SEO audits, SSL certificate renewal, and more. A yearly engagement is a good option for service-based businesses that might only need to update their website infrequently.


Monthly


A monthly retainer fee is another great way to build up recurring revenue sources. You bill clients each month and package other services with the website design, such as ongoing SEO optimizations, hosting management, and general website maintenance. Monthly fees better suit websites that clients need to regularly update to stay competitive and functional, such as eCommerce. 




It’s worth noting that you are not bound to a particular pricing structure; you can and should change things up as your agency evolves. Consider starting with an hourly pricing model and taking things from there. If you’re more established, find other ways to add value to clients and trend towards recurring pricing models. 


Specific niche expertise provides a solid justification for flat project fees. For example, if you excel at and are experienced with designing websites for companies selling inflatable swimming pool toys, you’ll likely have an in-depth understanding of how long such projects take. You’ll run way less risk of underpricing each fee.  


9 Elements to Determine How Much to Charge for a Website

List of 9 elements to determine how much to charge for a website

Let’s now work to untangle the web of complexity and simplify the process of deciding how much to charge for a website. Here are nine elements to consider no matter what pricing model you opt for. 


1. Minimum Production Costs


If you snoozed during accounting class at school (and who can blame you), there’s a chance you might not remember the concept of
production costs. These are the total costs incurred by providing a particular service. 


It might not jolt you out of your seat with excitement, but this accounting concept proves useful as an initial guideline when deciding your prices. The minimum production costs for creating websites include:


  • A content management system or website builder 
  • Purchasing the domain name
  • Setting up the client’s website on a hosting platform
  • Adding any essential security features, such as SSL certificates for SSL
  • Creating the design 


If your main offering is to build websites and you want to be profitable, you need to charge a rate that at the bare minimum exceeds the essential “raw materials” and labor expenses. If you offer additional services beyond building websites, you still want to at least cover these costs for each project.

a blue banner that says reduce your production costs to a minimum with duda website building platform

2. What Your Competitors Charge


The current web design marketplace is a great place to gauge what other agencies charge for similar work. The word
similar here is pretty important—don’t just base your rate on the first few results you see on Fiverr or Upwork. The freelancers or even small agencies advertising on there might be working on vastly different projects than what you plan to. 


If you design websites for cybersecurity companies, then find other agencies in that space and see what they charge. Many agencies will be upfront about typical prices for building a website. If you’re more of a generalist and enjoy applying your skills to multiple kinds of businesses and industries, then comparisons with agencies or freelancers doing the same are more appropriate. 


Delving into the prevailing market rates doesn’t mean you need to exactly mirror what your competitors charge. But these rates do provide a useful ballpark estimate of what your target clients are willing to pay.

3. Website Type and Features


Even if you attempt to specialize in web design for one particular kind of client or sector, it’s common for clients to want vastly different things. These differences become more pronounced when you’re not picky about the clients you work with. 


Some companies might just want a basic five-page website that highlights their services and looks professional, maybe with a blog section. Others could desire extra features, such as event management, advanced contact forms, paywall sections, or online stores with hundreds of product pages. 


The more extra features or pages the client needs, the more time it takes to finish the job, which justifies charging a higher price. Furthermore, extra features might call for purchasing
additional tools that integrate with the CMS or website building platform you work with. 

4. Project Scope and Size


Project scope and size is a factor that differs slightly from website type and features when determining how much to charge for a website. Some clients might come to you wanting a website
custom-built from scratch and others might just want a website redesign. These are inherently different-sized projects that command different fees. 


The scope is also important to clarify because it’s common to encounter clients who make several revision requests as the project develops. This is where you can get burned with a flat project fee if you don’t account for potential changes in scope with a written contract that stipulates an extra fee. With other pricing structures, you can simply increase the rate as the scope changes. 

5. The Client’s Industry


The industry in which clients operate plays a role in the money they’re willing to spend on web design. Media publishers, technology companies, and healthcare businesses need a strong web presence and aren’t shy about shelling out for features and professional designs. Other industries like education, hospitality, or restaurants usually come with lower budgets. There are of course differences within industries where you might see startups wanting just a basic website while enterprises look for something far more complex and rich in features. 

6. Anticipated ROI for the Client


Factoring in the client’s anticipated ROI is an important and often overlooked element in calculating how much to charge for a website. If you’re just starting out in web design, it’s easy to develop a mindset that underestimates the value of what you do. After all, there are hundreds of millions of active websites on the Internet, so designing a professional website is no big deal, right?... Wrong. 


You don’t have to dive too far into the depths of Google’s search results to find badly designed or poorly performing websites. If you commit to truly excelling, you increase the expected return for your clients’ investments. After all, a high-quality website that helps a business achieve its goals promises long-term returns. 


Offer clients more value by upselling other services (e.g. SEO) or promising excellent
core web vitals scores. You can then charge more because the clients ultimately drive more revenue/success thanks to your skills and work. 

7. Skills and Reputation


Speaking of skills, part of the reason for such a large variance in website prices comes down to widely differing skill sets and levels of experience in the world of web design. If you’re new to the world of web design then you’ll probably have to bite the bullet and charge lower rates, at least until your agency develops a reputation for stellar work and you have a portfolio to display.

Don’t shy away from revealing any specific certifications, courses, or degrees that arm you with web design skills. Even websites you’ve worked on personally for fun add credence to your abilities so include them in your portfolio (as long as they look great and work well). 


As your reputation grows and your knowledge increases, you can naturally justify charging higher rates. Landing a big-name client and doing a good job is another milestone that increases stature and vindicates a rate increase (even if that client is only a big name inside a particular industry or sector). 

8. Personal Living Costs


Personal living costs are unique to different agency founders and freelancers, but they do obviously play an important role in the prices you charge. A frugal childless twentysomething renting a one-bed apartment doesn’t need to make the same amount of money as a fortysomething living in a three-bed suburban home with two kids to feed. 



One of the great attractions of website design is that you can start an agency from anywhere and market your services to the whole world via the Internet. This level of location independence sees reputable agencies pop up in all corners of the planet. 


Geographical arbitrage can let you take advantage of lower costs of living in certain parts of the world while selling web design services to companies in developed nations. If this is your scenario, consider charging a slightly lower price to compete for business. 


Whatever your own situation, if you calculate your monthly personal expenses and your income from web design doesn’t exceed them, you’re not charging enough. 

9. Niche vs Generic Clients


Many agencies try to provide web design services to any client irrespective of the company’s industry. While selling to everyone is a good way to get exposure to different projects, it’s not necessarily the best way to earn the big bucks, at least not when starting out. 


A good tip is to focus on solving website problems for a specific subset of businesses in one kind of industry. Or, to borrow a favorite phrase of many Internet marketing gurus: pick a niche! When you niche down in who you build websites for, you become known as the go-to agency for that small section of clients. Those clients will be willing to pay more for your services versus a generalist agency that perhaps isn’t familiar with expectations around messaging or branding in that niche.

Next Steps

An illustration representing the next steps on determining how much an agency should charge for a website

Use the elements in this guide as reference points when setting prices for the web design services your agency offers. Always keep in mind that each project is unique, so deciding what to charge for a website can change from client to client. Above all else, maintain a healthy perception of the value you deliver and align your prices with that value. 


To become more productive as an agency and deliver top-performing websites for clients at scale, consider Duda, the professional website builder dedicated to agencies.
Start your free Duda trial today.

a banner that says deliver top-performing websites for clients at scale

Related Posts

By Shawn Davis April 1, 2026
Core Web Vitals aren't new, Google introduced them in 2020 and made them a ranking factor in 2021. But the questions keep coming, because the metrics keep changing and the stakes keep rising. Reddit's SEO communities were still debating their impact as recently as January 2026, and for good reason: most agencies still don't have a clear, repeatable way to measure, diagnose, and fix them for clients. This guide cuts through the noise. Here's what Core Web Vitals actually measure, what good scores look like today, and how to improve them—without needing a dedicated performance engineer on every project. What Core Web Vitals measure Google evaluates three user experience signals to determine whether a page feels fast, stable, and responsive: Largest Contentful Paint (LCP) measures how long it takes for the biggest visible element on a page — usually a hero image or headline — to load. Google considers anything under 2.5 seconds good. Above 4 seconds is poor. Interaction to Next Paint (INP) replaced First Input Delay (FID) in March 2024. Where FID measures the delay before a user's first click is registered, INP tracks the full responsiveness of every interaction across the page session. A good INP score is under 200 milliseconds. Cumulative Layout Shift (CLS) measures visual stability — how much page elements unexpectedly move while content loads. A score below 0.1 is good. Higher scores signal that images, ads, or embeds are pushing content around after load, which frustrates users and tanks conversions. These three metrics are a subset of Google's broader Page Experience signals, which also include HTTPS, safe browsing, and mobile usability. Core Web Vitals are the ones you can most directly control and improve. Why your clients' scores may still be poor Core Web Vitals scores vary dramatically by platform, hosting, and how a site was built. Some of the most common culprits agencies encounter: Heavy above-the-fold content . A homepage with an autoplay video, a full-width image slider, and a chat widget loading simultaneously will fail LCP every time. The browser has to resolve all of those resources before it can paint the largest element. Unstable image dimensions . When an image loads without defined width and height attributes, the browser doesn't reserve space for it. It renders the surrounding text, then jumps it down when the image appears. That jump is CLS. Third-party scripts blocking the main thread . Analytics pixels, ad tags, and live chat tools run on the browser's main thread. When they stack up, every click and tap has to wait in line — driving INP scores up. A single slow third-party script can push an otherwise clean site into "needs improvement" territory. Too many web fonts . Each font family and weight is a separate network request. A page loading four font files before rendering any text will fail LCP, especially on mobile connections. Unoptimized images . JPEGs and PNGs served at full resolution, without compression or modern formats like WebP or AVIF, add unnecessary weight to every page load. How to measure them accurately There are two types of Core Web Vitals data you should be looking at for every client: Lab data comes from tools like Google PageSpeed Insights, Lighthouse, and WebPageTest. It simulates page loads in controlled conditions. Lab data is useful for diagnosing specific issues and testing fixes before you deploy them. Field data (also called Real User Monitoring, or RUM) comes from actual users visiting the site. Google collects this through the Chrome User Experience Report (CrUX) and surfaces it in Search Console and PageSpeed Insights. Field data is what Google actually uses as a ranking signal — and it often looks worse than lab data because it reflects real-world device and connection variability. If your client's site has enough traffic, you'll see field data in Search Console under Core Web Vitals. This is your baseline. Lab data helps you understand why the scores are what they are. For clients with low traffic who don't have enough field data to appear in CrUX, you'll be working primarily with lab scores. Set that expectation early so clients understand that improvements may not immediately show up in Search Console. Practical fixes that move the needle Fix LCP: get the hero image loading first The single most effective LCP improvement is adding fetchpriority="high" to the hero image tag. This tells the browser to prioritize that resource over everything else. If you're using a background CSS image for the hero, switch it to anelement — background images aren't discoverable by the browser's preload scanner. Also check whether your hosting serves images through a CDN with caching. Edge delivery dramatically reduces the time-to-first-byte, which feeds directly into LCP. Fix CLS: define dimensions for every media element Every image, video, and ad slot on the page needs explicit width and height attributes in the HTML. If you're using responsive CSS, you can still define the aspect ratio with aspect-ratio in CSS while leaving the actual size fluid. The key is giving the browser enough information to reserve space before the asset loads. Avoid inserting content above existing content after page load. This is common with cookie banners, sticky headers that change height, and dynamically loaded ad units. If you need to show these, anchor them to fixed positions so they don't push content around. Fix INP: reduce what's competing for the main thread Audit third-party scripts and defer or remove anything that isn't essential. Tools like WebPageTest's waterfall view or Chrome DevTools Performance panel show you exactly which scripts are blocking the main thread and for how long. Load chat widgets, analytics, and ad tags asynchronously and after the page's critical path has resolved. For most clients, moving non-essential scripts to load after the DOMContentLoaded event is a meaningful INP improvement with no visible impact on the user experience. For websites with heavy JavaScript — particularly those built on frameworks with large client-side bundles — consider breaking up long tasks into smaller chunks using the browser's Scheduler API or simply splitting components so the main thread isn't locked for more than 50 milliseconds at a stretch. What platforms handle automatically One of the practical advantages of building on a platform optimized for performance is that many of these fixes are applied by default. Duda, for example, automatically serves WebP images, lazy loads below-the-fold content, minifies CSS, and uses efficient cache policies for static assets. As of May 2025, 82% of sites built on Duda pass all three Core Web Vitals metrics — the highest recorded pass rate among major website platforms. That baseline matters when you're managing dozens or hundreds of client sites. It means you're starting each project close to or at a passing score, rather than diagnosing and patching a broken foundation. How much do Core Web Vitals actually affect rankings? Honestly, they're a tiebreaker — not a primary signal. Google has been clear that content quality and relevance still dominate ranking decisions. A well-optimized site with thin, irrelevant content won't outrank a content-rich competitor just because its CLS is 0.05. What Core Web Vitals do affect is the user experience that supports those rankings. Pages with poor LCP scores have measurably higher bounce rates. Sites with high CLS lose users mid-session. Those behavioral signals — time on page, return visits, conversions — are things search engines can observe and incorporate. The practical argument for fixing Core Web Vitals isn't just "because Google said so." It's that faster, more stable pages convert better. Every second of LCP improvement can reduce bounce rates by 15–20% depending on the industry and device mix. For client sites that monetize through leads or eCommerce, that's a revenue argument, not just an SEO argument. A repeatable process for agencies Audit every new site before launch. Run PageSpeed Insights and record LCP, INP, and CLS scores for both mobile and desktop. Flag anything in the "needs improvement" or "poor" range before the client sees the live site. Check Search Console monthly for existing clients. The Core Web Vitals report surfaces issues as they appear in field data. Catching a regression early — before it compounds — is significantly easier than explaining a traffic drop after the fact. Document what you've improved. Clients rarely see Core Web Vitals scores on their own. A monthly one-page performance summary showing before/after scores builds credibility and makes your technical work visible. Prioritize mobile. Google uses mobile-first indexing, and field data shows that mobile CWV scores are almost always worse than desktop. If you only have time to optimize one version, do mobile first. Core Web Vitals aren't a one-time fix. Platforms change, new scripts get added, campaigns bring in new widgets. Build the audit into your workflow and treat it like any other ongoing deliverable, and you'll stay ahead of the issues before they affect your clients' rankings. Duda's platform is built with Core Web Vitals performance in mind. Explore how it handles image optimization, script management, and site speed automatically — so your team spends less time debugging and more time building.
A collage of business portraits with the text
By Marie Lamonde March 26, 2026
Here's the ultimate guide to get web design clients. Get tips of the trade from referrals, to cold reach out, getting on job boards, events and social media.
By Shawn Davis March 25, 2026
Optimize your web design agency's revenue. Compare Subscription, Classic Project, and Hybrid billing models for immediate cash flow, long-term stability, and financial resilience.
Show More

Did you find this article interesting?


Thanks for the feedback!
By Shawn Davis April 1, 2026
Core Web Vitals aren't new, Google introduced them in 2020 and made them a ranking factor in 2021. But the questions keep coming, because the metrics keep changing and the stakes keep rising. Reddit's SEO communities were still debating their impact as recently as January 2026, and for good reason: most agencies still don't have a clear, repeatable way to measure, diagnose, and fix them for clients. This guide cuts through the noise. Here's what Core Web Vitals actually measure, what good scores look like today, and how to improve them—without needing a dedicated performance engineer on every project. What Core Web Vitals measure Google evaluates three user experience signals to determine whether a page feels fast, stable, and responsive: Largest Contentful Paint (LCP) measures how long it takes for the biggest visible element on a page — usually a hero image or headline — to load. Google considers anything under 2.5 seconds good. Above 4 seconds is poor. Interaction to Next Paint (INP) replaced First Input Delay (FID) in March 2024. Where FID measures the delay before a user's first click is registered, INP tracks the full responsiveness of every interaction across the page session. A good INP score is under 200 milliseconds. Cumulative Layout Shift (CLS) measures visual stability — how much page elements unexpectedly move while content loads. A score below 0.1 is good. Higher scores signal that images, ads, or embeds are pushing content around after load, which frustrates users and tanks conversions. These three metrics are a subset of Google's broader Page Experience signals, which also include HTTPS, safe browsing, and mobile usability. Core Web Vitals are the ones you can most directly control and improve. Why your clients' scores may still be poor Core Web Vitals scores vary dramatically by platform, hosting, and how a site was built. Some of the most common culprits agencies encounter: Heavy above-the-fold content . A homepage with an autoplay video, a full-width image slider, and a chat widget loading simultaneously will fail LCP every time. The browser has to resolve all of those resources before it can paint the largest element. Unstable image dimensions . When an image loads without defined width and height attributes, the browser doesn't reserve space for it. It renders the surrounding text, then jumps it down when the image appears. That jump is CLS. Third-party scripts blocking the main thread . Analytics pixels, ad tags, and live chat tools run on the browser's main thread. When they stack up, every click and tap has to wait in line — driving INP scores up. A single slow third-party script can push an otherwise clean site into "needs improvement" territory. Too many web fonts . Each font family and weight is a separate network request. A page loading four font files before rendering any text will fail LCP, especially on mobile connections. Unoptimized images . JPEGs and PNGs served at full resolution, without compression or modern formats like WebP or AVIF, add unnecessary weight to every page load. How to measure them accurately There are two types of Core Web Vitals data you should be looking at for every client: Lab data comes from tools like Google PageSpeed Insights, Lighthouse, and WebPageTest. It simulates page loads in controlled conditions. Lab data is useful for diagnosing specific issues and testing fixes before you deploy them. Field data (also called Real User Monitoring, or RUM) comes from actual users visiting the site. Google collects this through the Chrome User Experience Report (CrUX) and surfaces it in Search Console and PageSpeed Insights. Field data is what Google actually uses as a ranking signal — and it often looks worse than lab data because it reflects real-world device and connection variability. If your client's site has enough traffic, you'll see field data in Search Console under Core Web Vitals. This is your baseline. Lab data helps you understand why the scores are what they are. For clients with low traffic who don't have enough field data to appear in CrUX, you'll be working primarily with lab scores. Set that expectation early so clients understand that improvements may not immediately show up in Search Console. Practical fixes that move the needle Fix LCP: get the hero image loading first The single most effective LCP improvement is adding fetchpriority="high" to the hero image tag. This tells the browser to prioritize that resource over everything else. If you're using a background CSS image for the hero, switch it to anelement — background images aren't discoverable by the browser's preload scanner. Also check whether your hosting serves images through a CDN with caching. Edge delivery dramatically reduces the time-to-first-byte, which feeds directly into LCP. Fix CLS: define dimensions for every media element Every image, video, and ad slot on the page needs explicit width and height attributes in the HTML. If you're using responsive CSS, you can still define the aspect ratio with aspect-ratio in CSS while leaving the actual size fluid. The key is giving the browser enough information to reserve space before the asset loads. Avoid inserting content above existing content after page load. This is common with cookie banners, sticky headers that change height, and dynamically loaded ad units. If you need to show these, anchor them to fixed positions so they don't push content around. Fix INP: reduce what's competing for the main thread Audit third-party scripts and defer or remove anything that isn't essential. Tools like WebPageTest's waterfall view or Chrome DevTools Performance panel show you exactly which scripts are blocking the main thread and for how long. Load chat widgets, analytics, and ad tags asynchronously and after the page's critical path has resolved. For most clients, moving non-essential scripts to load after the DOMContentLoaded event is a meaningful INP improvement with no visible impact on the user experience. For websites with heavy JavaScript — particularly those built on frameworks with large client-side bundles — consider breaking up long tasks into smaller chunks using the browser's Scheduler API or simply splitting components so the main thread isn't locked for more than 50 milliseconds at a stretch. What platforms handle automatically One of the practical advantages of building on a platform optimized for performance is that many of these fixes are applied by default. Duda, for example, automatically serves WebP images, lazy loads below-the-fold content, minifies CSS, and uses efficient cache policies for static assets. As of May 2025, 82% of sites built on Duda pass all three Core Web Vitals metrics — the highest recorded pass rate among major website platforms. That baseline matters when you're managing dozens or hundreds of client sites. It means you're starting each project close to or at a passing score, rather than diagnosing and patching a broken foundation. How much do Core Web Vitals actually affect rankings? Honestly, they're a tiebreaker — not a primary signal. Google has been clear that content quality and relevance still dominate ranking decisions. A well-optimized site with thin, irrelevant content won't outrank a content-rich competitor just because its CLS is 0.05. What Core Web Vitals do affect is the user experience that supports those rankings. Pages with poor LCP scores have measurably higher bounce rates. Sites with high CLS lose users mid-session. Those behavioral signals — time on page, return visits, conversions — are things search engines can observe and incorporate. The practical argument for fixing Core Web Vitals isn't just "because Google said so." It's that faster, more stable pages convert better. Every second of LCP improvement can reduce bounce rates by 15–20% depending on the industry and device mix. For client sites that monetize through leads or eCommerce, that's a revenue argument, not just an SEO argument. A repeatable process for agencies Audit every new site before launch. Run PageSpeed Insights and record LCP, INP, and CLS scores for both mobile and desktop. Flag anything in the "needs improvement" or "poor" range before the client sees the live site. Check Search Console monthly for existing clients. The Core Web Vitals report surfaces issues as they appear in field data. Catching a regression early — before it compounds — is significantly easier than explaining a traffic drop after the fact. Document what you've improved. Clients rarely see Core Web Vitals scores on their own. A monthly one-page performance summary showing before/after scores builds credibility and makes your technical work visible. Prioritize mobile. Google uses mobile-first indexing, and field data shows that mobile CWV scores are almost always worse than desktop. If you only have time to optimize one version, do mobile first. Core Web Vitals aren't a one-time fix. Platforms change, new scripts get added, campaigns bring in new widgets. Build the audit into your workflow and treat it like any other ongoing deliverable, and you'll stay ahead of the issues before they affect your clients' rankings. Duda's platform is built with Core Web Vitals performance in mind. Explore how it handles image optimization, script management, and site speed automatically — so your team spends less time debugging and more time building.
By Ilana Brudo March 31, 2026
Vertical SaaS must transition from tools to an AI-powered Vertical Operating System (vOS). Learn to leverage context, end tech sprawl, and maximize retention.
By Shawn Davis March 27, 2026
Automate client management, instant site generation, and data synchronization with an API-driven website builder to create a scalable growth engine for your SaaS platform.
Show More

Latest posts