---
layout: article
title: Migrate from Supabase
description: Effortlessly migrate from Supabase to Appwrite. Discover migration strategies, data transfer methods, and tips for a smooth transition to Appwrite.
difficulty: beginner
readtime: 20
---

Appwrite migrations help you quickly migrate your data from Supabase or other [sources](/docs/advanced/migrations#sources) to Appwrite. You can follow the instructions on the Appwrite Console migration wizard or use this guide to perform your data migration. While migrations are a great way to move your data from other services to Appwrite and get started quickly, they're not perfect. Make sure to understand the different [limitations](#limitations) before completing your migration.

{% info title="Charges" %}
When you migrate data from Supabase to Appwrite Cloud, the resource usage during the migration will not count towards your Appwrite Cloud usage charges. However, Supabase, may have data transfer charges.
{% /info %}

{% section #obtain-credentials step=1 title="Obtain credentials" %}

Find all of the following credentials from your Supabase project.

1. Go to your Supabase project dashboard and click the **Connect** button in the top right corner.

1. A modal will appear with several connection options. Select **Transaction pooler** (recommended for migrations).

1. Copy the connection details from the modal to retrieve the **Host**, **Port** and **Username** fields below.

| Field          | Description                                                                                                    |
| ---------------| -------------------------------------------------------------------------------------------------------------- |
| **Host**       | The host of your Supabase Database, found in the **Transaction pooler** connection string from the **Connect** modal. |
| **Port**       | The port of your Supabase Database, found in the **Transaction pooler** connection string. |
| **Username**   | The username of your Supabase Database, found in the **Transaction pooler** connection string from the **Connect** modal. |
| **Password**   | The password of your Supabase Database, this was set when you created your Supabase project. If you forgot your password, you can reset it in **Database Settings**. |
| **Endpoint**   | This is the endpoint of your Supabase instance under **Project Settings > API > Project URL**. This is used to migrate your files. |
| **API Key**    | This is the key of your Supabase instance under **Project Settings > API keys**. This is used to migrate your files. Make sure to use the hidden **service_role** key. |

{% /section %}

{% section #create-migration step=2 title="Create migration" %}

Before migrating to Appwrite make sure you've read the [migration overview](/docs/advanced/migrations) page.

1. Create a new project and click on the **Migrations** tab in **Project Settings**.

1. Click on the **Create Migration** button and select **Supabase** as your source.

1. Enter the credentials from the [Obtain credentials](#obtain-credentials) step and click **Next**.

1. Select the resources you want to migrate and finally click **Start migration** to begin the migration process.

{% /section %}

{% section #next-steps step=3 title="Next steps" %}

1. In your Appwrite Console, navigate to **Overview** > **Integrations** > **Platforms**, add the platforms for your Web, Flutter, Android, and iOS apps. Appwrite will reject requests from unknown web, Flutter, and mobile apps to protect from malicious attacks. You app **must be added as a platform** for Appwrite to accept requests.

1. Remember to [add appropriate permissions](/docs/advanced/platform/permissions) to the migrated resources to protect user data and privacy.

1. Migrate functions manually, by [pick a runtime](/docs/products/functions/runtimes) and [learn to develop Appwrite Functions](/docs/products/functions/develop).

1. Explore Appwrite's unique features by exploring the rest of the [Appwrite Documentation](/docs).

{% /section %}

# Limitations {% #limitations %}

Not all vendors make their APIs publicly accessible or easy to use for extracting and fully owning your data. Furthermore, due to varying design philosophies, certain resources cannot be migrated on a one-to-one basis. Below, you'll find a list of some known limitations when migrating data from Supabase to Appwrite. It's advisable to review this list before initiating your migration or deploying your product in a production environment.

- Appwrite's Databases services support a different set of features as PostgreSQL. Some features like advanced indexes, Postgres functions, and scheduling will not be migrated.
- OAuth users will not be migrated because the sessions are managed by the third-party OAuth provider. Users will need to re-authenticate with your OAuth provider after the migration is complete.
- Functions are not automatically migrated because of syntax and runtime differences.