Remove the Edit with Lovable badge, and the rest of Lovable from your app
The Edit with Lovable badge is not in your code. Lovable hosting adds it to the page every time it serves your app. On Pro or higher you switch it off in the settings. Move the app to another host and it is gone. But the badge is the part people notice. Share a link to your app and the preview can still say "Lovable App" and "Lovable Generated Project". That is in your code, and it moves with your app to Vercel or your own server until you change it.
If you stay on Lovable hosting
Open the project, go to Project settings, Publishing and turn on Hide Lovable badge. It needs Pro or a higher plan. Pro starts at $25 a month, billed monthly. The change applies to your live site right away, you do not publish again.
The setting follows your plan. If the workspace goes back to Free, the live site keeps the badge hidden until your next publish. On that publish Lovable warns you, brings the badge back and turns the setting off. Upgrade again and you have to turn it on again.
On Free there is no option for it. The badge is not in your code, so there is nothing in your code to delete. Anything you add to hide it is not supported by Lovable and can stop working with any change on their side. What each plan includes is in Lovable pricing.
If you move the app
Lovable hosting adds three things to your page when it serves it:
- The badge: an element with the id lovable-badge and a link back to your project in Lovable.
- Lovable scripts, including the one that counts visits for the Analytics view in the editor.
- A preview image for shared links, a screenshot of your app. Only when your code has no og:image tag.
None of that is in your repository. We compared the HTML of live lovable.app sites with the code in their GitHub repositories on 29 October 2026. Deploy the same code to Vercel, Cloudflare or your own server and nothing adds them.
Two things follow from that. The Analytics view in Lovable stops counting your visitors, so set up your own analytics before you switch the domain. And a TanStack Start app loses its preview image, because its code has no og:image. Step 2 below fixes that.
The step-by-step guides: Lovable to Vercel and Lovable to own VPS.
What stays in your code
First check which kind of app you have: open package.json. If it lists @tanstack/react-start, it is a TanStack Start app (new Lovable apps since 13 May 2026). Otherwise it is a Vite app. More in Is your Lovable app TanStack Start or Vite?
| Where | What Lovable put there | What to do |
|---|---|---|
| index.html (Vite) | Title "Lovable App", description "Lovable Generated Project", author "Lovable", the same in og:title and og:description, X account @Lovable (@lovable_dev in older projects) and Lovable's own image in og:image and twitter:image | Change all of them |
| src/routes/__root.tsx (TanStack Start) | The same title, description, author, og:title, og:description and X account in the head of the root route. No image | Change all of them and add your image |
| public/favicon.ico | Lovable's heart: white on black in Vite apps, the colour Lovable logo in recent TanStack Start apps | Replace it |
| README.md | "Welcome to your Lovable project" and how to keep building in Lovable | Rewrite it |
| AGENTS.md (TanStack Start) | A Lovable block for AI tools: do not rewrite pushed git history, because it syncs back to Lovable | Keep it while GitHub sync is on |
| package.json | Project name vite_react_shadcn_ts (Vite) or tanstack_start_ts (TanStack Start) | Rename it |
| package.json and vite.config.ts (Vite) | lovable-tagger in the dev dependencies and componentTagger() in development mode | Remove once you stop editing in Lovable |
| index.html (older Vite apps) | A script from cdn.gpteng.co/gptengineer.js with the comment "IMPORTANT: DO NOT REMOVE THIS SCRIPT TAG OR THIS VERY COMMENT!" | Remove it |
| package.json (TanStack Start) | @lovable.dev/vite-tanstack-config | Keep it |
Despite the comment, the gptengineer.js file at that address is empty (checked 29 October 2026). The tag loads nothing, so removing it changes nothing.
The last row is the only Lovable package your build needs. Lovable's docs say it prepares the server output for the host through Nitro, and Vercel needs version 2.6.2 or newer of it to deploy a Lovable app with no setup. It also brings TanStack Start, React and Tailwind into one config. Remove it and you write the whole Vite config yourself. That is not cleanup, that is a rewrite.
1. Find every trace
In the project folder, run:
grep -rin lovable --exclude-dir=node_modules --exclude-dir=.git .
You get every file and line with "lovable" in it. Not all of it needs a change. The Supabase client, the supabase folder and your .env can name Lovable Cloud and still work. Moving those is a different job: see Move Lovable Cloud to your own Supabase project and Move Stripe and AI keys out of Lovable.
TanStack Start apps also have src/lib/lovable-error-reporting.ts. It hands errors to a Lovable object that your code never creates, so on a new host it does nothing. Leave it.
2. Fix the title, description and preview image
In a Vite app, open index.html. Replace the title and description with your own, change the author and the X account, and point both images to your own file:
<title>Your app name</title> <meta name="description" content="One sentence about what your app does." /> <meta name="author" content="Your company" /> <meta property="og:title" content="Your app name" /> <meta property="og:description" content="One sentence about what your app does." /> <meta property="og:image" content="https://yourdomain.com/og-image.png" /> <meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:site" content="@youraccount" /> <meta name="twitter:image" content="https://yourdomain.com/og-image.png" />
In a TanStack Start app, open src/routes/__root.tsx and change the same values in the meta list of head(). There is no image there, so add two lines to that list:
{ property: "og:image", content: "https://yourdomain.com/og-image.png" },
{ name: "twitter:image", content: "https://yourdomain.com/og-image.png" },If twitter:card says summary, change it to summary_large_image. Pages can also set their own title in their own head(), so check the other files in src/routes too.
Put the image in the public folder and use the full address with your domain. Meta asks for at least 1200 by 630 pixels. No image yet? In a Vite app remove both image tags and change twitter:card to summary. A preview without an image is better than one with Lovable's.
Delete the X account line if you don't have one.
3. Replace the favicon
Put your icon in public/favicon.ico, with the same file name. Vite apps have no icon tag, and browsers ask for /favicon.ico on their own. TanStack Start apps point to the same file in the links of __root.tsx. So one file covers both.
4. Remove the tagger, if you are done with Lovable
lovable-tagger is a Vite plugin from Lovable. In a Vite app, vite.config.ts runs it only in development mode, so it is not in your production build anyway. Lovable does not document what it does. If you still edit the project in Lovable, leave it. TanStack Start apps do not list it in package.json, so skip this step there.
If you are done with Lovable, open vite.config.ts, delete the line import { componentTagger } from "lovable-tagger"; and change the plugins line to:
plugins: [react()],
Then remove the package:
npm uninstall lovable-tagger
If you install with Bun, run bun remove lovable-tagger instead.
5. Rewrite the README
The Lovable README tells people to open the project in Lovable and keep building there. Once the app lives somewhere else, that is wrong. Write how to install, run and deploy the app where it runs now. Run a Lovable project on your computer has the commands. Rename the project in package.json too.
In a TanStack Start app, AGENTS.md has a Lovable block that tells AI tools not to rewrite pushed git history, because it syncs back to Lovable. Keep it as long as GitHub sync is on. Remove it after you disconnect.
6. Check what the internet sees
Build the app with npm run build and fix any error. Deploy it, open your live page and look at the page source (right click, View page source). Search it for "lovable". Then share the link in a private chat and look at the preview.
LinkedIn, Facebook and chat apps keep old previews for a while, so the Lovable preview can still show up after the fix. LinkedIn Post Inspector and the Facebook Sharing Debugger fetch your page again. If the build breaks after the cleanup, see Fix a Lovable app that breaks after a deploy.
Or let your AI tool do it
Claude Code, Codex and Cursor can do steps 1 to 5. In the project folder, paste this:
Find every Lovable trace in this project: the page title, description, author, Open Graph and Twitter tags, favicon, README and package name. Replace them with the name and description of this app. Don't touch @lovable.dev/vite-tanstack-config, src/lib/lovable-error-reporting.ts or the Supabase setup. Show me the list before you change anything, then run npm run build.
Read the list before you say yes. The step-by-step guides start from the same repository: Lovable to Claude Code, Lovable to Codex and Lovable to Cursor.
Still connected to Lovable?
If GitHub sync is on, the commits you push to the connected branch go back into Lovable. That is fine for these changes. Just keep lovable-tagger while you still build in Lovable. How the sync works is in Keep Lovable in sync when you edit in another tool.
The lovable.app address stays online after you move, with the old app and the badge, until you unpublish the project. The right order for that is in Leave Lovable without losing your app. The SEO side of the move is in Lovable SEO after you move.
Sources
- Lovable docs: Project settings
- Lovable docs: FAQ
- Lovable docs: Change or cancel your subscription
- Lovable docs: Subscription plans
- Lovable docs: Analytics
- Lovable docs: Deploying and hosting outside Lovable
- Vercel docs: Deploy a Lovable app on Vercel
- npm: @lovable.dev/vite-tanstack-config
- npm: lovable-tagger
- Meta for Developers: Images in link shares
- The Open Graph protocol
- LinkedIn Post Inspector
- Meta Sharing Debugger