Skip to main content
Lovable is rolling out project and website import gradually. If Import project to Lovable is not in the dashboard + menu, your account does not have it yet.
You can bring an app you built in another tool into Lovable and keep building it here. Export the project from the other tool and upload it. Lovable rebuilds it as a Lovable project and moves the database and the app’s users to Lovable Cloud. Lovable checks that the app builds and runs before it reports the migration as complete. Import is available on all plans to anyone who can create projects in the workspace. An import is treated as standard build usage and consumes credits. The amount depends on the size of the project and on how much Lovable has to rewrite. See Build costs.
This page is about importing an app built outside Lovable, where you upload a ZIP of its code. Looking for a copy of a project from another Lovable account? See Remix a project. Looking to rebuild a published website from its URL? See Import a website. The three are different features.

Before you start

Have these ready before you open the import dialog:
  • For Upload code, a ZIP of the code, up to 250 MB. Leave out .env files, node_modules, and build output: Lovable asks for API keys later, and the dependency and build folders only make the file larger. For Replit, Manus, Bolt, Base44, and v0 you export during the import, so you do not need the ZIP beforehand.
  • Access to the other tool’s database export. The code export does not contain your database records or your app’s user accounts. Lovable asks for those after it shows the first preview of the app. You can add them then, or later when you switch over.
  • The API keys for services the app uses, such as Stripe, when Lovable asks. Lovable never asks for passwords, API keys, or database passwords in the chat. When the imported app needs a key, Lovable opens its secret form and tells you where to find the value.

Import a project

The import dialog shows guided export steps for Replit, Manus, Bolt, Base44, and v0, and accepts any other code you can put in a ZIP. Start the import from the dashboard:
1

Open the import dialog

On the dashboard, click the + button in the prompt input and select Import project to Lovable.
2

Choose where your project lives today

Under App builders, select Replit, Manus, Bolt, Base44, or v0 to see the export steps for that tool. For code from any other tool, select Upload code under Code & web.
3

Export the project

Follow the numbered steps in the dialog. The first step shows a button that opens the tool in a new tab. The steps for each tool are listed in Export steps for each tool below.When you have the ZIP, click Upload the ZIP to go to the upload step.
4

Upload the ZIP

Drop the ZIP into the dialog or click Choose file. When the file shows Ready to import, click Start import.
5

Let Lovable migrate the project

Lovable creates the project, opens the editor, and starts the migration on its own in the project chat. Lovable reports what it found in the export, what it changed, and what it still needs from you. See What Lovable does during an import.
Lovable reports a Ready line listing the parts of the app it verified and a Still needed line naming anything that waits on you, usually your data export or a service key. The import is complete when Lovable says migration complete.

Export steps for each tool

Each tool exports a ZIP of the code from a different place. The dialog shows the same steps as this table. The prompt for Manus asks it to package the code, schema, and configuration without credentials or database records:

What Lovable does during an import

Lovable treats the export as source material, not as a finished Lovable project. It works in this order:
  1. Inspects the code without running it. Lovable reads the code, schema, and configuration to list what the app does, from its pages and database tables to the external services it calls and the keys they need. Lovable does not run any code from the ZIP during this step. If the ZIP is unsafe or too large to inspect, Lovable asks for a replacement instead of continuing.
  2. Rebuilds the app. Lovable rebuilds the app the way it builds new Lovable apps, on TanStack Start, with the same pages, routes, and behavior.
  3. Moves the database and users to Lovable Cloud. Lovable recreates the tables in Lovable Cloud and replaces the other tool’s sign-in with Lovable’s built-in authentication. Existing users keep their profiles and data when you add the users export, as described in Add your existing data. Passwords and sessions do not carry over, so when users next sign in they verify their email and choose a new password.
  4. Keeps the services the app already uses. Services that work with Lovable, such as Stripe payments, file storage, email, and analytics, stay in place. When Lovable verifies one of them, it opens the secret form for the key it needs. It also tells you where to find the value, for example Developers → API keys in the Stripe Dashboard.
  5. Verifies the result. Lovable builds the project, opens its pages, and tries a representative flow, such as creating and editing a record. For an app with users, it also checks that an imported user can verify their email, set a password, sign in, and see their own records and nobody else’s. Lovable removes the test records it created.
Lovable says migration complete only when every part of the app is verified, or you have told Lovable in the chat to leave a part out. Until then it says code migration complete, and the Still needed line names what is missing.

Add your existing data

After Lovable shows the first preview, it asks for your records with the message Next: add your existing data. The preview runs on an empty database until you provide them. Export each table from the other tool, including the users table with email addresses and the original user IDs, and attach the files in the project chat. To add the data later, for example when you switch over, reply Skip for now and attach the files when you are ready. Lovable reads CSV and JSON files, on their own or inside a ZIP. Each file can be up to 2 MB, and one message can carry up to 10 files and 25 MB in total. A single SQL dump of the whole database is not accepted, so export each table on its own. When it imports the files, Lovable:
  • removes password and token fields it recognizes
  • imports the tables in the order their relationships require
  • keeps the original IDs so references between records still match
  • verifies the row counts
Database rows that point to files uploaded to the other tool’s own storage, such as images or documents, do not contain the files themselves. Request a file export from the other tool if the app has to keep them.

Switch over to the imported app

Lovable works from the ZIP you upload and does not connect to the other tool. Your app there keeps running while you check the imported app in the preview. The imported app is not public until you publish it. When the app works the way you expect, switch over:
  1. Export your data from the other tool when your users have stopped using it, and attach the files as described in Add your existing data. Records created in the other tool after the export are not in Lovable.
  2. Publish the app and connect your domain to the Lovable project. Visitors reach the imported app when the domain points at Lovable.
  3. Update the addresses that other services call, for example the webhook address (where Stripe sends payment events) in your Stripe Dashboard. Lovable names the ones it found in its report.
  4. Tell your users that the next time they sign in, they verify their email and choose a new password. Lovable does not email them about the change.
Running the app’s database and users on Lovable Cloud counts as Cloud usage. See Cloud costs.

Limitations

The import has these limits:
  • A ZIP can be at most 250 MB. Remove node_modules, build output, and caches from the export. Do not remove parts of the app itself.
  • The code export does not include your database records, user accounts, or uploaded files. Each needs its own export, as described in Add your existing data.
  • Passwords and active sessions do not transfer. Every imported user sets a new password when they next sign in.

Troubleshooting

These are the points in an import where people most often stop. The first line of each answer says whether the behavior is intended.
Intended. The dialog does not accept a ZIP over 250 MB. Delete node_modules, .git, build output such as dist or .next, and cache folders from the exported code, zip it again, and upload the smaller file. The import does not need them.
Not intended. The upload failed and nothing was imported. Click Retry on the file. If it fails again, check that the file has a .zip extension and that your connection is stable, then upload it once more.
Not intended. Lovable could not create the project. Click Start import again. If the dialog closes and no project appears on your dashboard, open the dialog, select the same tool, and upload the ZIP again. If Lovable instead tells you that creating projects is restricted in this workspace, ask a workspace admin or owner to import the project.
Intended. The code export never contains your records, so the first version runs on an empty database. Follow the export steps in Add your existing data and attach the files in the project chat. Lovable imports them and reports migration complete when the records and users are verified.
Intended. Lovable needs the key to verify a service the app already uses, as described in What Lovable does during an import. Enter it in the secret form Lovable opens, never in the chat. Until the key is in place, that part of the app stays on the Still needed line, and the rest of the app works.
Intended. Passwords never leave the other tool. Each user keeps their account and data. When they next sign in, they verify their email address and choose a new password, as described in What Lovable does during an import. Tell your users to expect this step instead of signing in with their old password.