Landing Page Cost: The Page Is the Cheapest Line Item
The build is the smallest number in the project. Priced from a real page: ten components and 1,256 words, then four attachments and the two assets no licence includes.
A landing page's build price is usually the smallest number in the project. Priced from a real one: the page is ten components and 1,256 words. What actually meters afterwards is four attachments — form delivery, list storage, analytics, hosting — plus the two assets no code purchase includes, copy and photography.
Published estimates for "how much does a landing page cost" span roughly a hundred dollars to five figures, and the spread is not dishonesty. It's that the question is being asked about the wrong object.
The one page where per-page pricing actually works
We've argued before that pricing a website per page is unplannable, because the unit that meters is the authored artifact — a design system, a data layer, a checkout — and pages are just how many times you render them. A landing page is the exception that proves the rule, for a boring reason: it is exactly one artifact. There is no second page to amortise against, no route table, no schema. Ask "what does this page cost" and the question is well-formed for once.
That's the good news. The bad news is that the page is the cheap part, and the four things bolted to it are the recurring bill.
Line item one: the page
Here's the real inventory of this storefront's home page, read out of a fresh build rather than estimated:
| Components composing it | 10 organisms, 1 of them interactive |
| Words of copy in the markup | 1,256 |
| Images | 29 |
| Internal links | 94 |
| Rendering mode | ○ (Static) — prerendered at build |
Ten components is a week of work if you're building the components, an afternoon if you're assembling them, and about an hour if you start from a finished template and rewrite the data files. That range — one hour to one week — is genuinely the whole spread on this line item, and it's the line item every quote leads with.
Note what it does not include: the words and the pictures. We'll come back to those.
Line item two: the four attachments
A landing page that only renders is a brochure. The moment it captures anything, it acquires dependencies that bill monthly. Here's each one as it exists in this codebase, with what it actually meters on:
| Attachment | What it is here | Meters on | Free-tier ceiling in practice |
|---|---|---|---|
| Form delivery | A Server Action posting to https://api.resend.com/emails | Emails sent | Generous — a contact form rarely leaves the free tier |
| List storage | A Server Action posting to https://api.resend.com/contacts | Contacts stored, then sends to them | Contacts are cheap; broadcasts to them are the bill |
| Analytics | Cookieless Vercel Analytics, three conversion events | Events recorded | Modest, and the first thing to exceed on a page that converts |
| Hosting | A prerendered HTML file on a CDN | Bandwidth, not compute | Effectively free at landing-page traffic |
Two things are worth pulling out of that table.
First, hosting is the line item people over-plan and the one that costs least. The page is a build-time HTML file. Serving it involves no server process, no database connection, no cold start. Whether it gets 100 visits or 100,000, the marginal cost is bandwidth on a CDN. If someone is quoting you meaningful monthly hosting for a static landing page, that number is buying something else — usually a CMS.
Second, form delivery and list storage are two different products, and conflating them is the most common budgeting error we see. Delivering one email to your own inbox when someone fills in a contact form is nearly free forever. Storing 20,000 addresses and mailing them monthly is a marketing-email bill that grows with your list and has nothing to do with the landing page. Our own code keeps them visibly separate — different endpoints, different Server Actions, different failure modes:
// src/lib/actions/contact.ts — delivery
await fetch("https://api.resend.com/emails", { /* … to: support@ … */ });
// src/lib/actions/newsletter.ts — storage
await fetch("https://api.resend.com/contacts", { /* … audience_id … */ });
Budget them as two lines, because they scale on different axes.
Line item three: the copy
1,256 words is the number that should reframe the quote. That is the length of a short feature article, and every one of those words has to say something true about a specific product, in a specific voice, in an order that survives someone reading only the first screen.
Nobody's landing-page quote includes it. Design quotes include a wireframe with Lorem ipsum, and development quotes include the components that render whatever you supply. The copy is a separate piece of work that arrives, in our experience, later and slower than anyone plans for — and it is the input that most determines whether the page performs.
There is one structural decision that lowers its ongoing cost, and it's free to make at the start: keep the copy out of the components. Each of our sections reads a typed array from src/data/, so changing a headline is a diff in a data file, not in JSX. That's the difference between "the copywriter can revise the hero" and "the copywriter files a ticket."
Line item four: the photography
This is the one that surprises people, so here are real bytes. Product imagery in this repo:
Image files under public/images | 1,116 |
| Total on disk | 93 MB |
| One product's cover JPEG | 186,502 B |
Its pre-built card variant (-card.webp, 1060w) | 51,824 B |
The 72% cut between those last two rows is a build step, not a service: a script generates WebP derivatives at the sizes the page actually renders, so the full-size JPEG stays available for og:image and structured data while every on-page <img> points at a right-sized file. That decision costs an afternoon once and removes a per-request image-optimisation bill permanently.
What it does not remove is the cost of having images at all. Twenty-nine images on one page is either a licensing bill, a photoshoot, or an afternoon of screenshots — and unlike hosting, it recurs every time the product's UI changes. If you are pricing a landing page for a product that doesn't exist yet, this is the line item most likely to be missing entirely from your estimate.
Four ways to get one, priced by what you still owe
| Route | What you pay for | What you still owe afterwards |
|---|---|---|
| Build the components yourself | Your time | Copy, images, the four attachments, and every future section |
| Start from a template | A one-off licence | Copy, images, the four attachments |
| Hire a freelancer | Design + build of one page | Copy (usually), images (usually), the four attachments (always) |
| Hire an agency | Design + build + often copy | The four attachments, and the retainer that follows |
Our own catalogue sits in the second row: 66 landing templates, 111 products in total, sold as a $39 single-template licence or a $129 all-access licence with lifetime updates. We quote that not because the number is the point but because it's the honest shape of the row — a template moves the build line item close to zero and moves nothing else. A buyer who expects it to also solve the copy and the photography will be disappointed on schedule.
The comparison that matters isn't price against price. It's which of the four line items each route actually closes.
Mistakes and how they show up
| Symptom | Cause | Fix |
|---|---|---|
| The build came in on budget and the launch slipped six weeks | Copy wasn't scoped as work, so it started after the page was "done" | Scope 1,000–1,500 words as a deliverable with an owner and a date, in parallel with the build |
| Monthly costs climb without traffic climbing | The email list, not the page, is what's growing | Track list storage and broadcast sends as their own line; they scale on contacts, not on page views |
| A hosting quote for a static page is a meaningful monthly number | The quote includes a CMS, a server, or a managed service the page doesn't need | Confirm what the page's rendering mode actually is; a prerendered HTML file needs a CDN and nothing else |
| The page is fast in review and slow in production | Full-resolution photography shipped straight to the browser | Generate right-sized derivatives at build time; a 186 KB cover became 52 KB here with no visible change |
| Every copy tweak needs a developer and a deploy | Text is hardcoded in components | Move each section's content into a typed data file; the deploy stays, the developer doesn't |
| A second landing page costs the same as the first | Nothing from the first one was built to be reused | The moment there are two, you're back to pricing artifacts rather than pages — the components, tokens and data shape are the asset |
Frequently asked questions
How much does a landing page cost, realistically? The build ranges from an afternoon to about a week of work depending on whether you're assembling components or authoring them, and a template licence compresses it further — ours are $39 for one and $129 for all of them. Treat that as one of four line items, not the answer. The other three — the attachments, the copy, and the imagery — are where the variance in every published estimate actually comes from.
What are the ongoing costs of a landing page? Four things: delivering form submissions, storing and mailing a contact list, recording analytics, and serving the page. For a prerendered page the last one is negligible. The list is the one that grows with success, and it's a marketing-email cost rather than a website cost.
Is a cheap landing page template a false economy? It depends entirely on which line item you thought it was closing. It closes the build. If the page underperforms, the cause is nearly always the copy or the offer, and no licence price affects either. What a template genuinely should buy you beyond markup is the accessibility, responsive and performance work already done — how to evaluate one is the checklist we'd apply.
Do I need a CMS for a landing page? Usually not, and it's the single most expensive reflex in this category. A CMS is worth its cost when non-technical people publish on a schedule. For one page whose copy changes a few times a year, a typed data file in the repo gives you the same editability at zero recurring cost, and keeps the page prerendered.
Templates in this post
ASoc Sentinel is a security-suite site with tiered plans — the shape where the copy line item is heaviest, because every tier row is a claim someone has to write and defend. ASoc Signal, an AI voice-and-image studio page, is the opposite balance: its cost sits in the imagery, since the product is visual and every screenshot ages with the UI. ASoc Sterling is a wealth-management site with a balance-dashboard preview, which is the case where a landing page and a product screenshot are the same asset and should be budgeted once.
Browse the full sets: Next.js landing page templates and Tailwind landing page templates. For the recurring side of the bill across a whole site rather than one page, see website maintenance cost.
