SwapSQL

MySQL to Supabase converter

Move your MySQL data to Supabase — convert the dump or migrate live.

Upload a dump file

Free

Export with mysqldump, upload the .sql file, and download PostgreSQL-ready SQL to import into Supabase. Powered by a real engine — AUTO_INCREMENT, ENUMs, zero dates all handled.

// converter

uploads deleted on completion real engine, not regex free account, e-mail only

Live MySQL-to-Supabase

Free up to 5 MB

No dump file needed. Enter your MySQL connection details and paste your Supabase connection string — SwapSQL reads from one and writes to the other.

  • Paste your Supabase connection string as the target
  • Test both connections before starting
  • Tables, data, indexes and keys transferred directly
  • Full report when the migration completes
  • Use Supabase's Session pooler string (IPv4) — the direct host is IPv6-only
Open live migration

Compare plans — or start free, upgrade when you need it.

Step 1 — Export your MySQL database

mysqldump --single-transaction --no-tablespaces \
  -h HOST -u USER -p DATABASE_NAME > dump.sql

# compress for faster upload:
gzip dump.sql

Need more detail (Docker, phpMyAdmin, remote servers)? See the full mysqldump guide.

Step 2 — Convert it

Drop dump.sql (or dump.sql.gz) into the box above. The dump is loaded into an isolated MySQL 8.0 sandbox, migrated to PostgreSQL 16 table-by-table, and exported with pg_dump — so the file you download is guaranteed-valid PostgreSQL, ready for Supabase.

Step 3 — Import into Supabase

Copy your Supabase connection string from the dashboard (Settings → Database → Connection string). Pick the Session pooler option (host …pooler.supabase.com, port 5432) — it works over IPv4. The direct host (db.[ref].supabase.co) is IPv6-only and won't connect from most tools or servers. Then:

psql "postgresql://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:5432/postgres" \
  -f dump.postgresql.sql

Alternatively, you can use the Supabase CLI:

supabase db push --db-url "postgresql://..." < dump.postgresql.sql

What converts automatically

After importing: Supabase setup

Once your data is in Supabase, you may want to:

// faq

Frequently asked questions

How do I migrate a MySQL database to Supabase?

Export your MySQL database with mysqldump, upload it above to convert it to PostgreSQL, then import the result into your Supabase project with psql using your Supabase connection string.

Does AUTO_INCREMENT convert to Supabase correctly?

Yes. AUTO_INCREMENT columns become PostgreSQL identity columns (or sequences), and the counter continues from your highest existing id. Supabase handles them natively.

What happens to ENUM columns?

MySQL ENUMs become native PostgreSQL ENUM types, which Supabase supports fully. The same labels and constraints carry over.

Can I use the converted dump with Supabase's migration system?

Yes. The output is a standard pg_dump-format file. You can import it directly with psql, or place it in your supabase/migrations/ folder for version-controlled deployments.

Will Row-Level Security work after the import?

The converted schema won't include RLS policies — those are specific to your Supabase application logic. After importing the data, set up RLS policies in the Supabase dashboard or via SQL as part of your application setup.

Can I migrate directly without a dump file?

Yes — live migration is included on the free plan for source databases up to 5 MB (two per day). Enter your MySQL source connection and your Supabase connection string as the target, and SwapSQL transfers everything directly. The Pro plan removes the size and daily limits.

Which Supabase connection string should I use for live migration?

Use the Session pooler string (host ends in pooler.supabase.com, port 5432). It works over IPv4. Supabase's direct host (db.[ref].supabase.co) is IPv6-only and is unreachable from most servers and tools, so a direct connection will fail with a "network is unreachable" error.