Comparison · Upwork vs. Custom Code
Upwork's fee changes with every contract. What you'd pay us doesn't.
Upwork puts millions of freelancers in front of anyone with a job to post, and for narrow, well-defined tasks that reach solves a real problem. Where it gets complicated is cost and quality: the platform's own fee changed in May 2025 to a variable rate that isn't published anywhere, and the freelancer you hire is one of millions with wildly different skill, reliability, and follow-through. This page covers the mechanics most comparisons skip, plus the cases where Upwork remains the right tool.
Upwork vs. hand-coded custom: side by side
Both columns are written to be accurate. Where Upwork has the edge, the table says so. Upwork's fee structure changed substantially on May 1, 2025, and the exact numbers aren't published as a flat schedule, so treat the ranges below as the best available estimate from independent fee-breakdown analyses rather than an official rate card.
| Factor | Upwork | Hand-coded custom (ArdinGate) |
|---|---|---|
| Upfront cost | No listed price: freelancers submit competing bids or hourly quotes for your job post | $1,200–$2,200 single-page, $2,800–$5,000 multi-page, fixed before work starts |
| Client-side platform fee | Marketplace Fee on every funded contract: about 3% (Basic plan, US bank transfer) up to about 10% (Business Plus plan, card or PayPal), plus a $0.99–$14.99 Contract Initiation Fee per new contract | None, ever: the quoted price is the total price |
| Freelancer-side fee | Variable 0%–15%, set per contract when the offer is accepted and never disclosed to the client; most contracts reportedly land near 10% | Not applicable: no marketplace sits between you and the person doing the work |
| Typical hourly rate | $15–$50/hr broad median (around $30/hr); $61–$80/hr for more experienced developers; $75–$150+/hr for senior or specialized work | $100/hr flat for custom work outside a fixed-price build, no bidding |
| Typical cost for a small-business site | A few hundred dollars from a low-cost freelancer (high risk) up to $3,000–$10,000+ for a capable freelancer or small team | $1,200–$5,000, scoped and quoted in writing before any work starts |
| Payment protection | Fixed-price work runs through escrow-style "project funds": you fund a milestone, the freelancer delivers, you get 14 days to approve or request changes, then a 5-day hold before release. Unfunded milestones have no protection at all | Deposit and payment terms set in writing in a single agreement with one accountable party |
| Who does the work | Any of millions of freelancers of widely varying skill; Top Rated badges are algorithmic, and Expert-Vetted talent (roughly the top 1%) is only visible to clients on Business Plus or Enterprise plans | The same developer, every time, with a visible track record |
| Vetting responsibility | Falls entirely on you: portfolio review, work samples, and live screening, with no guarantee the badges reflect the work you'll get | Already done: you're hiring a known quantity, not screening a stranger |
| Common failure modes | Scope creep on fixed-price milestones, missed deadlines, unresponsive freelancers, and a dispute process users describe as inconsistently resourced | Scope agreed in writing before work starts; one point of contact throughout |
| Ongoing updates after launch | Every future change is a new contract: a new Marketplace Fee, a new Contract Initiation Fee, and often a different freelancer picking up someone else's code | Managed hosting tiers bundle a monthly block of content-edit hours into one flat fee |
| Combined platform "take" | Estimated by third-party fee analyses at roughly 15%–20%+ of contract value, and as high as 22%–34% once wasted proposal costs and withdrawal fees are counted for the freelancer | $0 skimmed off any invoice, ever |
| Code and asset ownership | Generally fine on paper, but documentation and code quality vary entirely by who you hired | Complete, documented source files delivered at launch, portable to any host |
| Speed to start | Post a job and review proposals within days | 1–2 weeks single-page, 3–6 weeks multi-page, from kickoff to launch |
| Support after launch | Whoever you hired may go inactive, raise their rate, or simply not respond; disputes route through Upwork's support queue | The person who built the site is the person who answers when something needs fixing |
When Upwork is the right call
Upwork built its position by solving a specific problem: a huge pool of freelancers, priced competitively, reachable in days instead of weeks. For the right job, that solves something real. Here are the situations where hiring through Upwork is the defensible choice.
A narrow, bounded task with a hard budget ceiling
Fixing a broken plugin, tweaking a logo file, writing a short script, or any task with a clear deliverable and a fixed scope plays to Upwork's strength. A large pool of freelancers competing on price and turnaround works in your favor when the job is easy to describe precisely and easy to check when it's done. The risk that comes with a marketplace of wildly varying skill matters far less on a small, well-defined task than it does on something the business depends on for years.
You have the time to vet candidates yourself
Upwork's economics favor clients who invest real time in screening: reviewing portfolios, checking work samples, running a short technical interview before hiring, and reading past client feedback rather than just the star rating. Clients who can do that rigorously are far less exposed to the quality-variance and scope-creep problems that trip up clients who hire off a profile photo and a badge. If that vetting time is available and the person doing it knows what good code looks like, Upwork's pool becomes a real asset instead of a gamble. Worth noting: the Expert-Vetted badge, the one tier that involves actual human screening by Upwork's own Talent Manager, is only visible to clients on the Business Plus or Enterprise plans, so a Basic-plan client doing this vetting is working without that one filter.
You're testing an idea, not committing to it yet
If you're validating whether a product or service sells and you may not be running this exact site in six months, paying for a custom build is the wrong spend at this stage. A cheap Upwork build gets something live to test against, fast and at low commitment. Once the idea proves out and you're planning for the next three to five years, the calculation changes: what got you started fast starts costing more than it saved the moment the site becomes a long-term asset rather than a stopgap.
The calculus shifts the moment the site needs to be dependable: when it has to rank, load fast, and keep working without you re-hiring a stranger every time something needs changing. At that point the platform's opaque fees, its quality variance, and the lack of any bundled maintenance start working against the business rather than for it.
Where a hand-coded custom build outperforms hiring through Upwork
These aren't abstract complaints about marketplaces in general. They're the specific mechanics of how Upwork's fees, its hiring model, and its lack of any ongoing-maintenance structure play out for a business that needs a website to keep working for years, not just to launch once.
The price you're quoted is not the price you pay
Say a freelancer quotes $5,000 for a multi-page marketing site. On top of that quote, the client pays Upwork's Marketplace Fee: about 3% on the Basic plan paid by US bank transfer ($150), about 5% on Basic paid by card or PayPal ($250), about 8% on Business Plus paid by bank transfer ($400), or about 10% on Business Plus paid by card or PayPal ($500). Add the Contract Initiation Fee, $0.99 to $14.99 per new contract, and that $5,000 quote becomes roughly $5,151 to $5,515 before a single hour of work starts, depending only on which plan and payment method you happen to be using. That's the client-side fee. The freelancer's own variable 0%–15% service fee comes out of what they take home, not what you pay directly, but it's baked into the number they quoted you in the first place, and it's never shown to you. A quote of $2,800–$5,000 from ArdinGate has none of this layered on afterward. What's quoted is what's paid.
Every future update starts the fee clock over
Upwork has no equivalent of a bundled maintenance plan. Once a contract closes, a content change, a bug fix, or a new page means opening a new contract: a new Marketplace Fee, a new Contract Initiation Fee, and no guarantee the freelancer who built the site is still active, still priced the same, or still willing to take the work. Managed hosting through ArdinGate folds routine work into one flat monthly fee instead: Core, at $60/month, covers uptime monitoring, nightly backups, SSL, and server-level patching; Care, at $100/month, adds a monthly block of content-edit hours; Priority, at $180/month, adds more edit time plus same-day response on critical issues. No new contract, no new marketplace cut, no re-explaining the site to someone unfamiliar with it.
The five-year math, run straight
Third-party fee-breakdown analyses estimate Upwork's combined take, the client's Marketplace Fee plus the freelancer's variable service fee plus the Connects a freelancer spends chasing the contract, at roughly 15% to 20%+ of a contract's gross value, with some analyses citing an effective 22% to 34% "agency tax" once wasted-proposal Connects and withdrawal fees are counted for the freelancer. On that same $5,000 project, even the lower estimate is $750 lost to platform overhead ($5,000 × 15%), and the higher end runs $1,700 ($5,000 × 34%), before quality risk is even part of the conversation. A single-page ArdinGate build's full five-year cost, build plus hosting, runs $4,800 to $12,000 ($1,200 build + $60/mo×60 months low, + $180/mo×60 months high); a multi-page build runs $6,400 to $15,800 ($2,800 build + $3,600 low, $5,000 build + $10,800 high). Every one of those numbers is knowable before you sign anything. Upwork's isn't, because the freelancer fee is set per contract and never shown to the client, and the marketplace fee depends on which plan and payment method you happen to be on that month.
Quality is something you find out after paying for it
Scope creep on fixed-price milestones is one of the most frequently reported problems on the platform: the line around what a milestone covers isn't always airtight, and extra revisions creep in without extra pay. Unresponsiveness and missed deadlines show up often enough to be a pattern, not an exception. The badges meant to help you filter for quality are mostly algorithmic (Top Rated and Top Rated Plus are recalculated automatically from Job Success Score and billing history) rather than a guarantee of skill, and the one tier that involves real human screening, Expert-Vetted, is invisible to any client on the free Basic plan. Complaints on file with organizations like the Better Business Bureau skew toward account suspensions, withheld funds, and billing disputes on both sides. None of this means every Upwork hire goes badly. It means the client carries the full weight of vetting, and a bad hire costs more in wasted time than the hourly-rate savings ever recovered.
Ownership and a name that doesn't disappear
The person who builds an ArdinGate site is the person who answers when something needs fixing next year. On Upwork, the freelancer you hired can go inactive, raise their rate on the next contract, or simply stop responding, and there's no requirement that they stay reachable once a contract closes. Disputes route through Upwork's own support queue, which users on both sides of the marketplace describe as under-resourced for the volume it handles. A custom build comes with a written agreement, one accountable party, and complete source files delivered at launch: no platform standing between you and the person who did the work, before or after the invoice is paid.
The common reasons people hire on Upwork instead: addressed directly
Upwork is obviously cheaper
Sometimes it is, on day one. A low-cost freelancer can build a simple site for a few hundred dollars, well under ArdinGate's $1,200 single-page starting price. If cash is the binding constraint right now, that gap is real and worth weighing. What it leaves out: the client-side Marketplace Fee and Contract Initiation Fee layered on top of whatever the freelancer quoted, the freelancer's own opaque service fee baked into that quote, and every future change starting a new contract with its own fee event. If budget is the real deciding factor, a single-page custom build at $1,200 is closer to the low end of Upwork's range than most people expect, and it comes with a fixed price that never has a marketplace fee added to it later.
I can vet freelancers myself, so why pay for the same skill twice
This is a fair point, and Upwork is built around exactly that idea: you are the hiring manager, the project manager, and the procurement department, all at once. Writing the job post, reviewing proposals, running a screening call, checking work samples, and managing milestones through to delivery is real work, and skipping it is how quality variance turns into an expensive surprise. For an owner with the time and the technical background to do that vetting properly, it's a legitimate path. For most small business owners, the hours spent doing the hiring and project-management work that a marketplace pushes onto the client are hours not spent running the business, and one bad hire, a missed deadline, a scope dispute, a security shortcut, costs more in time and stress than the rate difference ever saved.
Upwork can get someone working on this today
True, and it's a real advantage in the right situation. Posting a job and reviewing proposals can put a freelancer on a task within days, sometimes hours. A custom build takes 1 to 2 weeks for a single-page site and 3 to 6 weeks for a multi-page build, from kickoff to launch. If speed is the only variable that matters and the site doesn't need to be reliable for years, Upwork wins on timeline. For a business planning to run the same site for the next several years, a couple of extra weeks upfront is a small price against not having to re-hire, re-explain, and re-negotiate fees every time something needs to change.
The verdict
Bottom line
Upwork is the right tool for a narrow, well-specified task with a hard budget ceiling, or for an owner with the time to vet freelancers properly and the willingness to manage the project directly. For a business that needs a website to keep working reliably for years, the platform's structure works against that goal: a client-side fee stack that changes with the plan and payment method, a freelancer-side fee that's never disclosed, quality that depends entirely on who happened to respond to the job post, and no bundled maintenance, so every future change restarts the whole fee-and-hiring cycle.
The single question worth answering before choosing: how many times will this site need to change in the next five years, and are you prepared to open a new contract, pay a new set of fees, and vet a new person each time? If the answer is "more than once or twice," the case for a fixed-price build with one accountable developer and no recurring marketplace cut gets stronger every year the site stays live.
Pricing
Single-page custom sites start at $1,200, with most landing in the $1,200–$2,200 range depending on what the page needs to do. Multi-page sites with individual service pages, a technical SEO foundation, and a contact or intake form start at $2,800 and run $2,800–$5,000 for builds with four or more pages. Every quote is itemized before work starts and it's the total price: no marketplace fee, no per-contract surcharge, and no separate cut taken from the person doing the work.
For comparison: a multi-page marketing site quoted at $5,000 on Upwork's Basic plan, paid by card rather than bank transfer, picks up a 5% Marketplace Fee ($250) plus a Contract Initiation Fee of up to $14.99, landing around $5,265 before the first hour of work, and before the freelancer's own service fee is even part of the conversation. A comparable ArdinGate multi-page build is $2,800–$5,000, full stop, with the entire five-year cost, build plus hosting, landing at $6,400 to $15,800 depending on hosting tier: a number you can see before you start rather than one that shifts with a plan and a payment method you don't control.
Optional managed hosting starts at $60/mo for uptime monitoring, nightly backups, SSL, and server-level security patches. Content edits and application-level patching begin at the Care tier ($100/mo); Priority ($180/mo) adds same-day response on critical issues and more edit time. No long-term contract: cancel with 30 days' written notice and no cancellation fee. Custom work outside a fixed-price build runs $100/hr, quoted before any hours are billed.
Upwork vs. custom: the questions that come up most
How much does Upwork take in fees?
It depends on the contract, and that's the point: Upwork doesn't publish a flat fee schedule anymore. Since May 2025, the freelancer's service fee is a variable rate between 0% and 15%, set individually for each contract the moment a proposal or offer is accepted, based on skill demand, market saturation, and how much billing history the freelancer has with that specific client. Most contracts reportedly land near 10%, and the rate can approach 0% for a freelancer with years of history with the same client. On top of that, the client pays a separate Marketplace Fee: roughly 3% on the Basic plan paid by US bank transfer, up to about 10% on the Business Plus plan paid by card or PayPal, plus a one-time Contract Initiation Fee of $0.99 to $14.99 per new contract. Third-party fee-breakdown analyses put the combined take across both sides at roughly 15% to 20% or more of contract value.
What does a web design project typically cost on Upwork?
Wildly variable, because pricing on Upwork isn't standardized the way hourly rates are. Web developer hourly rates run broadly from $15 to $50 an hour, with a median around $30; more experienced or specialized developers average $61 to $80 an hour, and senior or highly specialized work, custom applications, advanced integrations, can reach $75 to $150 or more per hour. Agencies on the platform commonly price 20% to 40% above an equivalent solo freelancer. For a fixed-price small-business marketing site, that translates into a wide spread: a few hundred dollars from a low-cost, higher-risk freelancer, up to $3,000 to $10,000 or more for a capable freelancer or small team doing a proper custom build. There is no standard package or published rate card, so every quote is essentially a bid shaped by who happens to respond to your job post and how they price their own time that week.
Why did Upwork change its fee structure in 2025?
On May 1, 2025, Upwork replaced its old sliding-scale freelancer fee (20% on the first $500 billed with a client, 10% from $500 to $10,000, 5% above that in lifetime billings) with a variable fee between 0% and 15% set individually per contract at the moment a proposal or offer is accepted, then locked for the life of that contract. Contracts signed before that date kept the old tiered structure and were grandfathered in. The stated reasoning is to reward long-term client relationships: a freelancer with years of billing history with one client can see their rate drop toward 0%, while a brand-new contract with an unfamiliar client tends to land higher, often near 10% by most accounts. The tradeoff is that the new system isn't published as a schedule anywhere, so neither the client nor the freelancer can look up the exact percentage before a contract starts. It's calculated by Upwork's internal pricing logic and only becomes visible once the contract is underway.
What happens if an Upwork freelancer doesn't finish the work?
It depends entirely on whether the money was put into escrow first. Upwork's fixed-price contracts run through a system called project funds: the client funds a milestone before work starts, the freelancer submits the completed work, the client has 14 days to approve or request changes (with automatic release to the freelancer if the client doesn't respond in that window), and then a further 5-day security hold before the funds are fully released. That protection only covers milestones that were funded. If a client skips funding a milestone and a freelancer doesn't deliver, Upwork has no mechanism to recover the payment because there's nothing held in escrow to return. Hourly contracts work differently: they're billed weekly based on Upwork's time-tracking app with screenshots and activity levels, and covered by a separate Hourly Protection policy rather than the fixed-price escrow flow. Either way, disputes go through Upwork's support process, which users on both sides describe as inconsistently resourced.
Can I trust Upwork's Top Rated badge to find good talent?
It's a signal, not a guarantee. Top Rated and Top Rated Plus badges are entirely algorithmic: recalculated every two weeks based on a freelancer's Job Success Score, earnings, and billing history, and visible to every client with no application process required. They tell you a freelancer has kept clients reasonably satisfied and kept working steadily, which is useful, but they say nothing about how that freelancer handles your specific type of project. The one tier that involves human screening is Expert-Vetted: a manually applied badge requiring a skills assessment and a review by an Upwork Talent Manager, representing roughly the top 1% of talent on the platform. The catch is that the Expert-Vetted badge is only visible to clients on the Business Plus or Enterprise plans. A client browsing on the free Basic plan never sees who is Expert-Vetted at all, so the badges they do see are the algorithmic ones, not the manually screened ones.
What's the most common complaint about hiring through Upwork?
Scope creep, by most accounts. On fixed-price contracts, the boundaries of a milestone aren't always airtight, and either side can end up pushing extra deliverables or revisions into a milestone that was never priced for them. Close behind it: unresponsiveness and missed deadlines from freelancers, and quality that's hard to filter for up front because the visible badges are algorithmic signals rather than a guarantee of skill. Complaints filed with organizations like the Better Business Bureau skew toward account suspensions, withheld funds, and billing or performance disputes on both sides of the marketplace. The common thread across most of it: Upwork optimizes for price competition and a high volume of proposals, which favors clients who can rigorously vet candidates themselves through portfolio review, work samples, and live technical screening. Clients who can't invest that time upfront are the ones most exposed to scope creep and quality variance turning into an expensive problem later.
Is hiring on Upwork cheaper than a custom shop over time?
Sometimes, and it depends on how many times you go back for more work. A one-off build from a lower-cost freelancer can beat ArdinGate's fixed-price range on day one: Upwork's broad hourly range starts around $15 to $30 an hour, low enough that a simple site can cost a few hundred dollars from the right freelancer. What that comparison leaves out is what happens next. Every future update runs through a new contract, with a new Marketplace Fee (roughly 3% to 10% depending on plan and payment method) and a new Contract Initiation Fee of $0.99 to $14.99, and often a different freelancer who has to get familiar with someone else's code before touching it. A custom build's five-year total, including managed hosting, runs $4,800 to $15,800 depending on build size and hosting tier: a number you can see before signing anything. Upwork's long-run number depends on how often you need changes and what each new contract happens to cost, which isn't something you can look up in advance.
What happens when I need changes after the Upwork contract ends?
You start over, in a specific sense. Once a contract closes, going back for a content change, a bug fix, or a new page means opening a new contract, even if you rehire the same freelancer. That new contract carries its own Marketplace Fee and its own Contract Initiation Fee, and the freelancer's service fee for that contract gets set again based on Upwork's internal pricing logic at the time. If the original freelancer has moved on, raised their rates, or stopped responding, you're evaluating a new person and hoping they can make sense of code they didn't write, often with limited documentation to work from. A managed hosting plan through ArdinGate handles this differently: the Care tier includes a monthly block of content-edit hours, and Priority includes more, both folded into one flat monthly fee with no new contract, no new marketplace cut, and no handoff to someone unfamiliar with the site.
Do Connects affect what freelancers charge on Upwork?
Indirectly, yes. Connects are the currency freelancers spend to submit proposals: roughly $0.15 each, with 10 free per month on a Basic freelancer account, or about 100 bundled into the $19.99-a-month Freelancer Plus subscription. Submitting proposals costs money before any work is won, and most proposals don't land a contract. That spend, along with withdrawal fees on some payout methods (wire transfers run about $30, while ACH and PayPal are free on Upwork's side) and the variable 0% to 15% service fee taken out of whatever they do earn, is part of why third-party analyses estimate an effective cost to freelancers as high as 22% to 34% of a contract's value once everything is counted. Freelancers who feel that squeeze have a direct incentive to quote higher on new jobs to make up the difference, which is one reason listed rates on the platform can run higher than the sticker price alone would suggest.
Is Upwork better for a one-time project or an ongoing relationship?
One-time, narrowly scoped work is where it performs best. A single task with a clear deliverable and a fixed budget, a plugin fix, a small script, a one-off design asset, plays to Upwork's strength: a large pool of freelancers competing on price and turnaround for something you can specify precisely. An ongoing relationship is a harder fit structurally, because every new phase of work is technically a new contract with its own fee event, and there's no guarantee the same freelancer stays available, keeps their rate steady, or remains responsive over months or years. A business planning to maintain and grow a website for years is better served by a single point of contact under one fixed agreement, whether that's a freelancer they've built real continuity with over time or a small studio structured around long-term maintenance rather than one-off contracts.
Tired of re-hiring a stranger every time your site needs a change?
Tell me what your site needs to do and what you've tried so far. I'll tell you what a fixed-price build would cost and whether it beats what you're paying in fees and re-hires right now.
Get a straight answer