Skip to content
RefinoStart free

How to move a v0 website to GitHub and your own hosting

v0 is unusual among AI builders: it deploys to a Vercel project in your own account, so the hosting is already yours. Leaving is mostly a matter of getting the code into a repository you control and connecting the Vercel project to it directly. This guide is that sequence, plus the integrations to check.

Published September 11, 2026 · About a 8 minute read · Last reviewed September 2026

This is the v0-specific version of leaving an AI builder. v0 is unusual: it doesn’t host anything itself. A v0 account is a Vercel account, and every v0 project deploys to a Vercel project in your own team. So “leaving v0” mostly means making sure the code and the Vercel project can carry on without the chat that made them. v0 was rebuilt in February 2026 and its documentation describes only the new model; if you remember one-way “sync to GitHub” and “Blocks”, that’s the old one.

Not sure yet what you own there? The companion guide, do you actually own your v0 site?, sorts the layers before you move anything.

What v0 lets you take with you

LayerWhat v0 offers today
CodeA GitHub repository created under the GitHub account or organization you choose. v0 works on a branch and merges a pull request into your base branch when you publish; it never pushes to main directly. Once connected, the repository is the source of truth. A ZIP download exists too.
HostingAlready Vercel, in your account. The first deploy creates a Vercel project; custom domains, environment variables and rollbacks are managed in the Vercel dashboard.
BackendIntegrations such as Neon, Supabase, Upstash and Vercel Blob are provisioned through the Vercel Marketplace into your Vercel team and billed through Vercel. There is no v0-managed database or sign-in.
DomainNot sold by v0. Whatever registrar you used.
SecretsEnvironment variables live on the Vercel project. v0’s preview can only see the Development environment, so production secrets never reach it.

Step 1: Work out which kind of project you have

  • Is GitHub connected? In v0, open the project menu, then Settings, then GitHub. If a repository is shown, the code is already in Git and v0 treats that repository as the source of truth.
  • Which Vercel scope? The project belongs to a Vercel team or to your personal scope. Click “Inspect on Vercel” from a deployment to see which.
  • Which integrations? The Vercel project’s Storage and Integrations tabs list any database, cache or blob store v0 added.

By default a v0 project is a Next.js app with TypeScript, Tailwind and shadcn/ui, which every major host can run. v0 can use other frameworks; package.json says which.

Step 2: Get the code into GitHub

If no repository is connected, connect one: project menu, Settings, GitHub, Connect. Under Git Scope choose the GitHub account or organization that should own it, name the repository, and v0 creates it privately and pushes the current code. From then on v0 commits to a working branch and, when you publish, opens and merges a pull request into the base branch.

If you don’t want a GitHub connection at all, download the ZIP from the project menu and put it in a repository yourself. The connection is the better route because the Vercel project can then deploy from Git rather than from v0.

Step 3: Make sure the repository and the Vercel project are yours

Two owners to check. The repository’s owner is whatever Git Scope was chosen at connection; check it as the GitHub guide describes, and transfer it if it’s wrong. The Vercel project’s owner is the team it sits in. If a freelancer built the site in their own v0 or Vercel team, v0 can transfer a chat, and the linked Vercel project with it, to another scope, provided the person doing it owns the current team. Vercel’s own project transfer does the same for the project alone.

Either transfer moves deployments, environment variables and domains, but not Marketplace integrations: databases and blob stores have to be moved separately, and the destination team must already have the same integration installed. Do that before relying on the transferred project.

Step 4: Inventory secrets and integrations

Method in the secrets guide. v0 specifics are simple, because everything is on the Vercel project:

  • Open the Vercel project’s Environment Variables page and list every name for Production, Preview and Development. v0 calls the same thing “Vars”.
  • Integration-provided variables (Neon’s PG* names, Supabase keys, a Blob token) were added by the Marketplace and belong to resources in your team.
  • If the project uses Vercel Connect, a beta feature for signing in to third-party services, those tokens are short-lived and never appear as environment variables. A site depending on it can’t take that dependency to another host as-is.

Step 5: Decide on the host

You already have one. The Vercel project is an ordinary Vercel project, and nothing in v0’s documentation says it needs v0 to keep running. The simplest exit is to stay on Vercel and make the project deploy from the GitHub repository: v0 and the Vercel project share the same Git connection, so once the repository exists, pushes to the production branch deploy on their own.

If you want to leave Vercel too, treat it as an ordinary host move using the host move guide: a Next.js app deploys to Netlify or Cloudflare from the same repository. Marketplace resources are Vercel-billed, so a full exit means moving each one to the provider’s own account or to an alternative.

Step 6: Backend dependencies

  • Neon (which is also where any old “Vercel Postgres” database now lives) is a Postgres database. It can be dumped and restored anywhere Postgres runs; Vercel’s dashboard also runs queries and copies results.
  • Supabase via the Marketplace is a Supabase project provisioned and billed through Vercel. Its data, auth users and storage are Supabase’s usual exports.
  • Vercel Blob holds uploaded files. There’s no bulk export button; a developer lists and downloads through the SDK. Stores can be transferred between your own teams.
  • Upstash is a cache; usually nothing to migrate.

If you stay on Vercel, none of this moves. The data guide has the ownership questions to record for each.

Step 7: Deploy from Git and test

Make a small change directly in the repository, not through v0, and confirm the Vercel project deploys it: a commit to the production branch should produce a production deployment. If it doesn’t, open the Vercel project’s Settings, then Git, and check the connected repository and production branch. If the team has Deployment Policies, make sure Git deployments are allowed. Then test the site on its vercel.app address.

Step 8: DNS

Staying on Vercel: nothing changes. The domain was already configured in the Vercel project. Leaving Vercel: the ordinary two-record change in the DNS guide.

Step 9: Verify

  • A commit made outside v0 deployed to production on its own.
  • The repository is under my GitHub account or organization and I have admin rights.
  • The Vercel project is in a team I own, with my payment method.
  • Every integration resource is in that same team, or has been moved there.
  • Sign-in, forms and anything reading the database work on the live domain.

Step 10: Only then decide what to do with v0

You can keep it. v0 works from the same repository as any other tool: when a developer or coding agent pushes, v0 pulls; when v0 merges a pull request, they pull. Branch protection and required reviews on the base branch apply to v0 too. If you stop using v0, there’s no documented v0-side disconnect; the repository and the Vercel project simply continue. Cancelling a paid v0 plan moves the account to Free at the end of the billing period; nothing in the documentation says projects, repositories or deployments are removed.

Traps

  • Vercel Hobby is for personal, non-commercial use, and can’t deploy from a private repository owned by a GitHub organization. A business site needs a Pro team.
  • A v0 team plan can add a Vercel Pro charge if your Vercel team is on Hobby, and downgrading a Vercel team from Pro to Hobby removes all its other members.
  • Project transfers don’t carry integrations. Move the database and blob store separately.
  • Vercel Connect credentials aren’t portable.
  • The sandbox isn’t a backup. The repository is.

A v0 site that deploys from its own repository in your own Vercel team is about as well-owned as an AI-built site gets. Changing its words without a prompt is the part Refino adds.

Sources

The rules and product behaviour described above were checked against these pages when the guide was last updated. If something here has changed, these are the places to look.

Keep going

Or go back to the overview of what owning your site means, which ties all of these together.

  • Do you actually own your v0 site?

    What you own when you build with v0, and what still depends on v0 or Vercel: the generated code and its GitHub connection, the Vercel project v0 deploys to, custom domains, environment variables, Marketplace integrations, and how to confirm another developer or agent could take over. With an ownership checklist.

    About a 7 minute read

  • How to take your website with you when you leave an AI builder

    Leaving an AI website builder means more than downloading the code. An inventory of everything a site depends on, from the domain to the database to the secrets, and a structured checklist for moving it all.

    About a 10 minute read

  • How to put your website’s code in GitHub

    How to get the actual source code of your website into a GitHub repository you control, whether it’s already on GitHub under someone else’s account, only on a developer’s computer, or inside an AI or site-building platform. With a verification checklist.

    About a 11 minute read

Get started

Your first site is free.

Sign in with GitHub, connect the site you built with AI, and change its words yourself. Free covers one site, with no card and no end date. Pro covers up to five.

Questions first? Email hello@refino.dev. We read every message and reply ourselves.