# How can I migrate a site to Vercel without downtime?

**Author:** Justin Vitale, Ryan Haraki

---

With this article, we plan to guide you through all the steps necessary on how to migrate a domain to Vercel without downtime. Your domain should be serving content from 3rd party servers that are unrelated to Vercel, and you need to be prepared to make the necessary DNS changes.

## Keep your current DNS provider

To maintain uninterrupted service during the migration, do not immediately change your nameservers to Vercel's. Continue using your current DNS provider throughout the setup process.

## Add your own domain to your Vercel project

If you have already added a project domain and configured SSL certificates on Vercel, you can skip these steps and head straight to "Setting your DNS Records".

1. Visit the domains tab in your team dashboard.
   
2. Click "Add Existing".
   
3. Select the project you'd like to add the domain to. This is likely the project where your deployment is hosted.
   

## Pre-Generate SSL Certificates

Once you have added the domain, go back to your team domains dashboard and click on the domain to open the configuration page.

Scroll to the bottom of the page and click "Pre-generate SSL Certificates". Alternatively, you may use the CLI command below to generate challenges.

`vercel certs issue "*.example.com" example.com --challenge-only`

We recommend users to issue certificates for the specific domains they want to migrate. If the DNS configuration of `example.com` is pointing to non-Vercel servers, and you plan to migrate both `www.example.com` and `example.com` to Vercel deployments, you can create a challenge with the following command:

`vercel certs issue www.example.com example.com --challenge-only`

If you used the Vercel dashboard, copy the TXT records into your DNS provider and click "Verify" to issue an SSL certificate. Please note that DNS changes may take a while to propagate.

Use the `dig` command to verify whether the TXT records have been set.

`dig TXT _acme-challenge.example.com +short`

If you used the terminal, you can manually generate an SSL certificate with the following command:

`vercel certs issue www.example.com example.com`

In order to verify your changes were successful, click on the domain in your Vercel Domains dashboard and scroll down to the "SSL Certificates" section. If you see a new certificate, then you are ready to proceed to the next step.

## Verifying the Certificate

We learned how to generate a certificate before we assign a domain to a Vercel deployment. Before you change the DNS records of your domain, we can verify if the certificate is correct and will be accepted by browsers. You can run the following command:

`curl https://example.com --resolve example.com:443:76.76.21.21 -I`

If the request is successful, we confirmed the certificate is working and you can proceed with the migration.

## Setting your DNS records

In the dashboard of your DNS provider, delete any existing `A` records and immediately add a new `A` record pointing to the IP address listed in your projects domain settings for apex domains (read more [here](https://vercel.com/docs/domains/working-with-domains/add-a-domain#apex-domains)). For subdomains, use the unique CNAME record listed in your projects domain settings (for example `d1d4fc829fe7bc7c.vercel-dns-017.com`). Ensure any proxies are disabled so the traffic goes directly to Vercel.

The TTL is generally 5 minutes domains, you can verify this in [Domain Digger](https://digger.tools/) by looking at the TTL for the TXT records on your domain. This means it will usually take about 5 minutes for changes to propagate and for your deployment to be migrated to Vercel.

## Clone the Current DNS Configuration

To locate the current DNS provider of your domain, you can run the following command:

`dig NS example.com +short`

The result will show the current DNS authority. Next, you'll need to locate your DNS records from the provider's dashboard. If you are using Vercel, the DNS configuration is located [in your dashboard](https://vercel.com/docs/concepts/projects/custom-domains#dns-records).

After you've successfully located all records associated with your domain, you can either download a "zone file" or copy each record manually to the new provider.

## Verify the Records

To verify the records, you can query the DNS configuration served by the future DNS authority:

`dig A api.example.com +short @ns1.vercel-dns.com`

If you were moving your DNS to [Cloudflare](/docs/integrations/cloudflare), for example, the correct command would be:

`dig A api.example.com +short @example.ns.cloudflare.com`

Before proceeding, we recommend checking every record you moved. For more insight into the DNS resolution, remove the `+short` flag.

## Switch the Nameservers

In your registrar's dashboard (where you bought the domain), change the Nameservers to your new provider. Nameserver changes can take up to 48 hours to propagate. If you bought the domain from Vercel you can [manage nameservers](https://vercel.com/docs/concepts/projects/domains/managing-nameservers) from the [domains page](https://vercel.com/dashboard/domains).

---

[View full KB sitemap](/kb/sitemap.md)
