The fight is almost never about the design. It's about the eleventh "tiny tweak," the homepage copy the client swore they'd send in week one, or the moment they assume the price included three months of maintenance you never quoted. A web design contract exists to settle those arguments before they happen — in writing, while everyone is still friendly.
Generic service agreements don't do this. They handle "deliver X, get paid Y" but say nothing about page counts, revision rounds, or who hands over the logo files. Web projects have their own failure modes, and your contract has to name them. Here's how to write one that holds up.
This is general guidance, not legal advice. Contract law varies by jurisdiction, and enforceability of specific clauses differs by country. For high-value builds or unusual terms, have a lawyer review the contract.
Start With the Foundation Every Contract Needs
Before the web-specific parts, the boring essentials still apply: parties, start date, payment terms, late fees, confidentiality, and a liability cap. If you've never assembled these, the eight core clauses of a freelance contract are your skeleton — everything below hangs off them.
The web-specific clauses are where most disputes actually live, so let's spend our time there.
The Clauses Unique to Web Projects
A web design contract earns its keep with a handful of clauses a services_template.docx will never include.
| Clause | Why it matters |
|---|---|
| Scope and page count | Define the exact number of unique page templates (home, about, contact, blog) so '5 pages' can't quietly become 15. |
| Design vs. development split | State whether you deliver mockups only, a built site, or both — the most common source of mismatched expectations. |
| Revision limit | Cap revision rounds (e.g. two per phase). Beyond that, work is billed hourly. This single line prevents most scope creep. |
| Client-supplied content | Make text, images, and logos the client's responsibility, with a deadline. No content, no launch, no liability on you. |
| Browser and device support | Name the browsers and breakpoints you test (latest Chrome, Safari, Firefox, Edge; mobile/desktop) — not 'every device ever made.' |
| IP transfer on final payment | Ownership passes only when the invoice is paid in full. Until then, the work is licensed, not owned. |
| Third-party assets and licensing | Clarify who pays for and owns fonts, stock photos, plugins, and themes — and that their licenses are the client's ongoing responsibility. |
| Hosting and maintenance exclusions | Explicitly exclude hosting, updates, backups, and support unless quoted separately. Silence here is how 'free forever support' is born. |
| Kill fee | If the client cancels mid-project, define what's owed for work completed. Protects you when a build stalls at 70%. |
Scope and Page Count
"Build me a website" is not a scope. Count unique page templates, not pages of content — a blog with 40 posts is still one template. Spell out what's included (responsive layout, contact form, basic on-page SEO) and what isn't (e-commerce, custom animations, copywriting). If the project is large, a separate statement of work referenced by the contract keeps things clean.
Revisions: The Single Most Important Line
Unlimited revisions are how a profitable project becomes minimum wage. Cap rounds per phase, and define what a "round" is — one consolidated set of feedback, not a drip of emails. State clearly that extra rounds are billed at your hourly rate. If a client routinely pushes past the cap, you're dealing with scope creep, and a written limit is your only leverage.
Client Content and Asset Delivery
Half of all stalled web projects stall because the client never sent the copy. Put the burden on them: text, images, and brand assets due by a named date, with the timeline extending day-for-day if they're late. This protects your schedule and your sanity.
Launch, Post-Launch, and What You're Not Doing
Define what "launch" means and what happens after. Include a short defect window (say, 14 days to fix bugs in delivered work for free), then make it crystal clear that ongoing hosting, maintenance, updates, and new features are separate, paid engagements. Vague endings are how freelancers end up doing unpaid support for years.
Get the Money Structure Right
Web projects are too long to bill at the end. Use milestones tied to phases.
A milestone payment structure that protects you
- 1
Deposit on signing
Take 30 to 50 percent upfront before any work begins. It filters out non-serious clients and funds the early phases.
- 2
Design approval milestone
Bill the next portion when mockups are approved, before development starts. No payment, no code.
- 3
Pre-launch milestone
Collect the bulk of the remainder once the site is built and staged for review.
- 4
Final payment unlocks handover
The last installment is due before files, full IP, and admin access transfer. Final payment, then ownership — never the other way around.
If you don't currently take money before starting, fix that first — here's how to ask for a deposit without scaring the client off. You can generate the deposit invoice itself with the invoice generator, and quote the whole engagement cleanly using the quotation generator.
The IP Clause People Get Backwards
This is worth its own warning. Junior freelancers often transfer full rights the moment the contract is signed — then chase payment with no leverage. Do the opposite: the client receives a license to use the work during the project, and full intellectual property transfers only upon receipt of final payment. Until then, you own it.
Also carve out two things: your right to display the finished site in your portfolio, and any third-party assets (fonts, stock, premium plugins) whose licenses you can't actually transfer — those stay licensed to the client directly. Clauses like a same-day full-rights transfer are exactly the kind of term flagged in our roundup of freelance contract red flags, usually working against the freelancer.
Writing It Without the Blank Page
You don't have to draft all of this by hand. Describe the project — page count, revision cap, milestones, IP-on-payment, browser scope — and let AI assemble a coherent contract around those exact facts. That's the workflow behind generating a freelance contract with AI: instead of editing a fixed template until it half-fits, you start from your real deal. Then you read it, adjust, and (for big projects) have a lawyer glance at it.
Draft your web design contract in minutes.
Describe the project — scope, revisions, milestones, IP on final payment — and let Tuplify's AI Contract Generator build a professional contract around it. Free to download, no login required.
Generate your contract freeA web design contract isn't bureaucracy. It's the document that turns "I thought that was included" into a line you can both point to — and the difference between a project that ends with a referral and one that ends in a refund.