Skip to content
Pricient by IOanyT

Legacy modernization · cost guide

VB6 migration cost in 2026: why forms, controls and reports matter more than lines of code

Published VB6 migration prices per line, why two apps of the same size can differ in cost by 2.8×, and what to have ready before you ask for a modernization quote.

Published 5 October 2026 · Pricient by IOanyT

The short answer

Published VB6 migration prices run from $2–$5 per line of code for tool-assisted conversion to $5–$13 per line for a rewrite — roughly $300,000–$750,000 to convert a 150,000-line application (Code District, 2026). Line count misleads, though: third-party controls, reports and data access can make two same-sized applications differ in cost by 2.8×.

What published VB6 migration prices look like

Most modernization firms quote only after an assessment. One that publishes its benchmarks puts the numbers like this:

ApproachPublished priceA 150,000-line application
Tool-assisted conversion$2–$5 per effective line of codeAbout $300,000–$750,000
Full rewrite$5–$13 per effective line of codeAbout $790,000–$1.9 million

Source: Code District, VB6 migration guide (updated 2 October 2026). The same source puts a tool-assisted conversion of that size at 35–50 weeks with a team of six.

Why line count is the wrong way to price it

Per-line pricing cannot see what actually makes a legacy application hard to move. The same benchmark lists what pushes the cost up, and by how much:

What the application hasEffect on cost (published benchmark)
Many third-party controlsUp to +80%
Many reports, or an old report engineUp to +50%
Data access spread through the code+15–25%
No tests or specifications+20%
A regulated domain+15%
Hardware and interop+12%

Together these are why two applications of identical size can differ in cost by 2.8× — and why per-line quotes tend to come in low and finish high.

Convert, rewrite, or move it module by module?

A big-bang cut-over is where the rewrite horror stories come from. The alternative is the strangler-fig approach: move one module at a time, prove feature parity for each before it switches, and let the old system keep running the parts that have not moved. Nothing goes dark on a cut-over day, and billing can follow each accepted module.

A traceability matrix answers the real fear in any modernization — that something nobody remembered quietly disappears.

If the source code or documentation is gone

Undocumented systems whose developers have left are the normal case, not the exception. Work can start from a walkthrough of the working system and a schema-only export of the database: the structure of the tables, never the data in them.

What to have ready before you ask for a quote

You do not need a specification. A short note on these is enough to start an honest conversation:

  1. Roughly how many screens or forms the application has
  2. Which third-party controls and report tools it depends on
  3. Which databases and other systems it talks to
  4. Who uses it, and which parts can never go down

How Pricient quotes a modernization

Modernization starts with an assessment, credited toward the build. It produces a current-state map, an extracted specification, a risk register, a total-cost-of-ownership comparison and a phased quote. We are taking these by enquiry at the moment — tell us what you are running and we will tell you honestly whether it is worth starting.

More on legacy modernization →

Questions

Asked about this

How much does VB6 to .NET migration cost?

One published benchmark puts tool-assisted conversion at $2–$5 per effective line of code and a full rewrite at $5–$13 per line — about $300,000–$750,000 converted, or $790,000–$1.9 million rewritten, for a 150,000-line application (Code District, updated October 2026).

Why do two VB6 applications of the same size cost different amounts?

Because what drives the work is not the line count. Third-party controls, the number and type of reports, how data access is spread through the code, missing tests or specifications, regulation and hardware interfaces all add to it — together enough for a 2.8× difference between applications of identical size.

Do we have to rewrite everything at once?

No. A module-by-module (strangler-fig) migration moves one part at a time while the old system keeps running the rest, with feature parity proven for each module before it switches over.

What if the source code or documentation is lost?

It is not the end of it. Work can start from a walkthrough of the working system and a schema-only export of the database — the structure of the tables, never the rows in them.

Defined by both lists

Describe your project. See what comes back.

Start your spec

No signature, no call. A business email unlocks the full quote.