If you're running a VB6 system and starting to think about migrating to modern .NET, cost is probably one of the first questions on your mind. It's also one of the hardest to answer without knowing more about your specific system — but I'll give you a realistic framework here.
Why is migration cost so variable?
VB6 migration is essentially a bespoke software project, and bespoke projects vary enormously in complexity. A small internal tool with a handful of screens is a very different job to a full business management system with complex reporting, database integrations, and years of accumulated business logic.
The main factors that affect cost are:
- Size of the codebase — number of forms, modules, and lines of code
- Complexity of the business logic — simple data entry is cheap; complex calculations and workflows are expensive
- Database complexity — a simple Access database is straightforward; a large SQL Server schema with stored procedures takes longer
- Documentation and source code — if the original source code is missing or undocumented, the cost increases significantly
- Third-party components — deprecated ActiveX controls that need replacing add time and cost
- Testing requirements — larger systems need more thorough testing before go-live
- User familiarity — if the new system looks different, there may be an adjustment period for staff
Realistic cost ranges for UK businesses
Based on typical projects, here are realistic budget ranges:
| System size | Description | Typical cost |
|---|---|---|
| Small | 1–5 forms, simple logic, minimal database | £3,000 – £8,000 |
| Medium | 10–20 forms, moderate complexity, SQL database | £8,000 – £25,000 |
| Large | 50+ forms, complex business logic, multiple integrations | £25,000 – £100,000+ |
| Phased migration | Module by module, lower risk, spread over time | Quoted per phase |
These are indicative ranges — your actual quote could be higher or lower depending on the specifics of your system.
Is migration always the right answer?
Not necessarily. Migration is the right choice when:
- You need to connect to modern systems, APIs, or cloud services that VB6 can't support
- You're struggling to find developers who can maintain the existing system
- The system needs significant new functionality that would be very difficult to add in VB6
- You're planning to scale the business and the system needs to grow with it
But migration is often not the right choice when:
- The system works well and does exactly what you need
- The cost of migration outweighs the benefits over a reasonable timeframe
- The business is stable and the system doesn't need to change significantly
In many cases, the right answer is to keep the VB6 system running with proper maintenance support, and plan migration in phases over a longer period as budget allows.
Phased migration — the lower-risk approach
Rather than migrating everything at once — which is expensive, risky, and disruptive — many businesses benefit from a phased approach. This means migrating one part of the system at a time, while keeping the rest running in VB6.
For example, you might start by migrating a reporting module to .NET, while the core application stays in VB6. Once that's stable, you migrate the next module. This spreads the cost, reduces risk, and means you never have a big-bang cutover where everything changes at once.
What about automated migration tools?
There are tools that claim to automatically convert VB6 code to .NET. In practice, they produce code that compiles but is difficult to maintain and rarely works properly without significant manual correction. For anything beyond a very simple application, I'd always recommend a proper manual migration rather than relying on automated conversion.
How to get an accurate quote
The only way to get an accurate migration quote is to have someone who knows VB6 actually look at your codebase. A good developer should be able to give you a reasonably accurate estimate after reviewing the source code and having a conversation about your requirements.
Be wary of quotes given without seeing the code — they're almost always based on assumptions that turn out to be wrong.
The bottom line
VB6 to .NET migration is not a trivial undertaking, but it's also not as expensive or scary as many businesses assume. For a small to medium system, a properly managed migration is often more affordable than years of ongoing workarounds and the operational risk of depending on an unsupported platform.
The key is getting an honest assessment from someone who will tell you whether migration makes sense for your specific situation — rather than just trying to sell you the biggest project possible.