
Answer
How much does a custom web app cost?
A single-purpose internal tool runs $15k–45k; a multi-role system $35k–90k; a customer portal $80k up. What moves the number, and what quotes leave out.
Published June 30, 2026
Most custom web apps land between $15,000 and $150,000. A single-purpose internal tool typically runs $15,000–45,000; a multi-role system with integrations $35,000–90,000; a customer-facing portal $80,000 and up. The number is hours times a senior rate — scope, integrations, and data migration move it more than anything else.
What are you actually paying for?
Every quote for a custom web app is the same arithmetic underneath: engineering hours multiplied by a rate. Senior engineering rates sit around $100–250 per hour in most markets, so the whole game is how many hours the thing takes — which is a question about scope, not about technology.
Those hours are not all coding. A build that goes well spends real time on the data model, on the exceptions nobody mentioned in the kickoff, on integrating with systems whose APIs were designed by someone with different assumptions, and on migrating whatever you are running now. Quotes that come in dramatically low are usually quotes that priced the screens and left those four out.
| Internal tool | Multi-role system | Customer portal | |
|---|---|---|---|
| Typical scope | One workflow, end to end | Several workflows that share data | External users, accounts, self-service |
| Roles | One or two | Three to five, with permissions | Staff plus customers, plus admin |
| Integrations | None, or one | Two to four systems | Payments, auth, and the back office |
| Timeline | 6–10 weeks | 10–16 weeks | 16 weeks and up |
| Typical range | $15k–45k | $35k–90k | $80k–200k+ |
| Biggest cost risk | Scope creep into a second workflow | An integration with a bad API | Auth, billing, and support surface |
Ranges overlap on purpose. A two-role tool sitting on one clean database costs less than a one-role tool that has to reconcile three platforms nightly, and the second one is not a bigger app — it is a harder one.
What moves the number most?
Four things do most of the moving, and none of them is the choice of framework.
How many roles and screens the tool needs. Roles are the expensive part, not screens. Two roles means every screen, every action, and every record has a permission question attached to it, and that question has to be answered consistently everywhere or the tool leaks data.
Whether the data model exists or has to be designed. If your records already live in a well-structured system, a large part of the thinking is done. If the real model lives in a spreadsheet with four colour conventions, designing it is the project — and it is the part that determines whether the tool still fits in two years.
How many systems it has to integrate with. Each integration adds an API to learn, credentials and rate limits to respect, failure handling for when the other side is down, and a reconciliation story for when the two sides disagree. Integrations are usually the largest single line in a quote that surprises people.
Whether data has to migrate out of what you run now. Moving history is its own project with its own risk, and it is worth pricing separately so you can see what it costs. That is a data-movement problem with its own discipline, not a footnote in the build.
Fixed price, hourly, or retainer — which costs less?
Fixed price is the right shape for a defined build: the scope, the number, and the milestones are agreed before anything starts, and the risk of an under-estimate sits with the person who made it. It requires discovery first, because a fixed price on an undefined scope is either padded or wrong.
Hourly suits work that genuinely cannot be specified in advance — an audit, a rescue, an integration against an undocumented system. It is honest for the unknown and dangerous for the known, because the incentive runs the wrong way once the scope is clear.
A retainer is for after launch, and it is the line most budgets forget. Tools that fit get used, tools that get used attract requests, and a standing block of engineering capacity is cheaper than re-negotiating a small project every time the workflow changes.
What does a quote usually leave out?
Hosting and infrastructure, first — modest for an internal tool, but not zero, and worth naming so it is not a surprise on the first invoice. Then the licences and API tiers of the systems being integrated, since some platforms charge for the API access an integration depends on. If you want the shape of those running costs before committing, the platform comparison priced at published rates puts real numbers on it.
The two that matter more are the ones nobody invoices for. Your team's time during the build is real: someone has to answer questions about the workflow, review the staging demos, and test the thing against reality, and a build with no available owner on the client side runs slower and lands further from the workflow. And the cost of the workaround you are living with today — the manual cross-referencing, the seats bought so occasional users can view a status — is the number the build is actually competing against. Most people compare a build to zero. It should be compared to that.
How do you keep the number down?
Cut roles before you cut features. A tool that starts with one role doing one workflow end to end can ship, earn its keep, and grow; a tool that starts with every role half-served does none of those things.
Be honest about which integrations are needed at launch and which are merely wanted. Get your data somewhere clean before migration rather than paying engineering rates to interpret it. And check first whether the tool you need is a better-configured version of one you already run — the build-versus-buy question is worth settling before the pricing question. If the answer is build, that is the shape of how I scope and price custom applications.
Questions
Why won't anyone quote a price before discovery?
Because a number quoted before the workflow is mapped is a guess, and guesses get corrected later as change orders. A short paid discovery turns the request into a specification — data model, roles, integrations, screens — and that specification is what a fixed price can honestly be attached to. It also sometimes tells you the build is not worth doing, which is cheaper to learn in week one than in month three.
Is it cheaper to hire a developer than to commission a build?
Not at these sizes. A salary plus payroll cost, benefits, and equipment runs past a single build in the first year alone, and a full-time hire only pays off when there is a permanent forty hours a week of work waiting for them. Below that line, project or fractional engagement is the cheaper shape.
What does it cost to run once it's built?
For most business tools, hosting and managed Postgres come in under a few hundred dollars a month at typical internal volumes — often far less. The recurring cost that actually matters is engineering time for changes, which is why most builds roll into a retainer rather than an occasional emergency call at a rush rate.
Can the build be split into phases to spread the cost?
Yes, and it usually should be. Phasing works when the first phase is a complete workflow rather than a partial one — one role doing one job end to end, in production, earning its keep while the rest is built. Splitting by layer instead, with a database in phase one and screens in phase two, gives you nothing usable until the end and removes the benefit.
Related notes
- When a custom app beats off-the-shelf software
- When to move off no-code onto a custom web app
- How much does a fractional engineer cost?
More on app development
- What is an MVP (minimum viable product)?
- Railway vs Vercel + Supabase vs AWS
- What does an MVP need to be viable?
- Ship a side project for under $10 a month
Related service: App Development
Want this kind of engineering on your project?
Tall Karol takes on fractional and project-based engagements for startups and agencies.
Book a working session