Skip to content
LPR Studio
FREN
Contact us

Business softwareMethodCustom softwareSMEsMaintenance

VB6 migration: how to move off Visual Basic 6 without putting the business at risk

11 min read

You should migrate a VB6 application when keeping it becomes riskier than replacing it: controls that no longer install, the original developer gone, a need for remote access or customer-facing features, or machines nobody dares to update. There are four realistic paths: contain the application for now, convert it to VB.NET or C#, rewrite it as a .NET desktop application, or rebuild it for the web. Microsoft itself recommends replacing VB6 applications, but nothing forces you to do it all at once.

This guide is for the executive who has to decide. Most of what ranks for "VB6 migration" is written by conversion tool vendors and offshore services firms. It is useful on technique and mostly silent on the questions that matter to you: when to migrate, to what, and how to keep the business running while you do.

Where Visual Basic 6 stands in 2026

Visual Basic 6 shipped in 1998. Microsoft's support statement for Visual Basic 6.0 (checked on 7 November 2026) separates several layers:

ComponentStatus according to Microsoft
Development environment (IDE)Unsupported since 8 April 2008
Runtime files shipped with WindowsSupported on Windows 10, 11 and Server 2016 to 2025, for each OS's lifetime
Extended runtime files (Microsoft OCX)Supported, redistributed with your application
Third-party ActiveX controlsNot supported by Microsoft, ask the original vendor

Two details matter. Runtime support is limited to serious regressions and critical security issues. And everything stays 32-bit: on 64-bit Windows, VB6 code runs only inside the WOW emulation layer. The same page is blunt: since there is no supported way to create or maintain VB6 applications, Microsoft strongly recommends replacing them with modern technology.

In plain terms: your application will not stop launching tomorrow. But every fix is made in a 1998 tool, often on an old machine kept alive for that purpose, by someone who is getting harder to replace.

Signs it is time to migrate

  • The build machine is a museum piece: an old PC kept only because it is the last one where the project compiles.
  • A third-party control blocks you: a grid, chart or printing control from a vendor that no longer exists, which refuses to install on a modern machine.
  • The original developer is leaving, and nobody else can open the project.
  • People need the software away from their desk, on a tablet or phone, or customers need access to it.
  • Security reviews start asking questions: audits, cyber insurance, requirements from a large customer. A 32-bit application built on old components rarely passes them comfortably. See our business application security essentials.

When it is better to wait

A VB6 application that works, rarely changes, relies on no fragile third-party controls and serves office-based users can wait. If so, contain it:

  • keep machines and servers patched, with only the application itself being old;
  • restrict network access, with no direct exposure to the internet;
  • document the install and test it on a clean machine;
  • check backups with a real restore;
  • archive the source code and the build environment.

Treat that as a planned pause: set a review date, and start the migration as soon as one of the signs above appears, rather than in a panic the day a machine will not run the application.

Migration paths compared

PathWhat changesStrengthsLimits
Contain and maintainOnly the environment around the appLow short-term costGrowing risk, no room to evolve
Tool-assisted conversion to VB.NETCode translated, Windows Forms UIFamiliar syntax, logic preservedLanguage frozen by Microsoft, converted code needs rework
Conversion or rewrite in C# (.NET)General-purpose language, desktop or webLarge talent pool, active ecosystemUI and data access largely rebuilt
Web app on open standardsBrowser, standard database, APIsAccess anywhere, mobile, integrationsFull rewrite, printing and devices need rethinking
Off-the-shelf softwareYou adopt an existing productNothing to build, vendor maintains itYour processes must fit the product

VB.NET: closer than it is

VB.NET keeps VB6 keywords, which makes migration look like an upgrade. It is really a different language on a different platform: strict typing, structured exception handling, rebuilt forms, new data access. And in March 2020 the Visual Basic team wrote that Microsoft does not plan to evolve Visual Basic as a language. It remains usable and supported, but it is not the most durable target for a project starting today.

C# and .NET

This is the most common VB6 target. Commercial converters translate a good share of the code. Their advertised automation rates are sales figures, to be tested on a sample of your own project. The result can stay a Windows desktop application, if your users need one, or become the base of a web application on ASP.NET Core. It is the natural choice when your IT is already built around Microsoft: SQL Server, Entra ID, Microsoft 365.

Rebuild as a web application

The application runs in a browser, on desktops, tablets and phones, with a database such as PostgreSQL or SQL Server and APIs for integrations. The VB6 code becomes the specification: you read the calculations, checks and edge cases instead of translating line by line. This path takes the most design work and opens the most possibilities, from customer portals to mobile access to ERP integration. For stack choices, see how to choose a tech stack for business software.

Traps specific to VB6 applications

ActiveX controls and DLLs

A typical VB6 application is assembled from OCX controls: grids, calendars, charts, tabs, serial communications. Microsoft's own controls usually have a .NET equivalent. Third-party ones often do not, and Microsoft does not support them. Add direct Windows API calls and in-house DLLs, and you have a list to inventory before any serious estimate.

The Access database behind it

Many VB6 applications read a Microsoft Access .mdb file through DAO or ADO, often on a network share. That pairing brings its own problems: corruption, locking, size limits. Moving the data follows the same logic as converting an MS Access database to a web app. When the data already lives in SQL Server, it can often stay put during the transition, which makes coexistence much simpler.

Printed reports

Crystal Reports, the VB6 Data Report designer or hand-drawn printing code: an older application often has dozens of reports, invoices, delivery notes and labels. Each one is rebuilt as a PDF or for the specific printer, and quotes almost always underestimate them.

Data and types

VB6 tolerates a lot: untyped variables, dates stored as text, empty values treated as zeros. Those habits leave marks in the data. Moving it requires cleaning and trial migrations signed off by the business, as described in our guide to legacy data migration.

Buried business rules

Pricing, discounts, due dates and validation checks written in button click handlers, sometimes duplicated across several forms. You recover them by reading the code, if you have it, and by watching users work. If the source code is lost, conversion is impossible and a rewrite guided by observation is the only route.

Migrate in stages

A single big-bang cutover concentrates every risk on one date. The safer sequence:

  1. Inventory: forms and reports in real use, controls, DLLs, files exchanged with other systems.
  2. Secure the existing system: archived source, reproducible build, tested backups.
  3. A first module chosen for its value, usually what is most missing today.
  4. A prototype validated by users before development starts.
  5. Coexistence on a shared or synchronized database, with VB6 handling everything not yet moved.
  6. Module-by-module cutover with a rollback plan, until the VB6 application is switched off.

The method is detailed in our guide to legacy application modernization, and the broader case of software without a vendor in replacing unsupported business software. Neighboring tools follow the same logic: see Delphi to web migration. If your "Visual Basic" actually lives in Excel macros, that is a different problem: replacing Excel VBA macros.

What a VB6 migration costs

Line count is a poor predictor. Cost depends on the forms in real use, the controls to replace, the reports, the integrations and the state of the data. What weighs most in a VB6 migration: third-party controls with no equivalent, logic duplicated across forms, and missing documentation. Cost drivers and ranges are covered in software modernization cost.

Common mistakes

  • Believing a converter delivers a finished application: it delivers code that still needs work.
  • Cloning every screen one to one, instead of using the migration to drop what nobody uses.
  • Waiting for the breakdown: an emergency migration means weak negotiation and thin testing.
  • Forgetting special workstations: barcode scanners, scales, label printers.
  • Letting the original developer leave before writing down what they know.

A checklist for decision-makers

  • Do you have the complete source code and a machine that builds it?
  • Which third-party ActiveX controls does the application use?
  • Is the database an Access file, SQL Server or something else?
  • Which forms and reports are used every week?
  • What need drives the migration: security, mobility, openness, key-person risk?
  • Who will sign off the business rules of the new application?

Where to start

Gather screenshots of the most used screens, the list of reports and controls, and if possible a copy of the database. One conversation is then enough to tell whether to contain, convert or rebuild.

At LPR Studio, that conversation leads to a free visual prototype of the first module, presented on a video call within 5 business days, so your team sees its future screen before anyone commits. The approach is explained in see your software before you pay for it.

Frequently asked questions

Do VB6 applications still run on Windows 11?

Usually, yes. Microsoft states that the Visual Basic 6 runtime is supported on Windows 11 and Windows Server 2025, but only for serious regressions and critical security issues, and only as 32-bit code. The VB6 IDE has been unsupported since 8 April 2008, and Microsoft does not support third-party ActiveX controls at all.

Should you migrate VB6 to VB.NET or to C#?

C# is the better target in most cases. VB.NET looks familiar but is a different language, and Microsoft said in March 2020 that it no longer plans to evolve Visual Basic as a language. C# has a far larger developer pool and a more active ecosystem. VB.NET only makes sense if your in-house team already works in it.

How long does a VB6 migration take?

A VB6 migration takes as long as its forms in real use, its ActiveX controls, its printed reports and its data quality require; line count is a poor guide. Migrating module by module lets a first web screen go live within weeks, while the VB6 application keeps running everything else until it is retired.

What if the VB6 source code has been lost?

Without source code, you rebuild the behavior instead of converting it. Observe users at work, read the database, collect every printed report and exchanged file, then write down the business rules before rebuilding. A rewrite becomes the only option, and a prototype validated early is the best protection against forgotten features.

Is it safe to keep a VB6 application running for now?

It can be, if the application works, rarely changes and does not depend on fragile third-party controls. Contain it: patched machines, restricted network access, tested backups and a documented install. That breathing space has limits, because with no supported development environment every fix becomes harder to make and to test.