Migrate from Firebase Auth to Supabase
Migrate Firebase auth users to Supabase Auth.
Supabase provides several tools to help migrate auth users from a Firebase project to a Supabase project. There are two parts to the migration process:
firestoreusers2json(TypeScript, JavaScript) exports users from an existing Firebase project to a.jsonfile on your local system.import_users(TypeScript, JavaScript) imports users from a saved.jsonfile into your Supabase project (inserting those users into theauth.userstable of yourPostgresdatabase instance).
Set up the migration tool
-
Clone the
firebase-to-supabaserepository:1git clone https://github.com/supabase-community/firebase-to-supabase.git -
In the
/authdirectory, create a file namedsupabase-service.jsonwith the following contents:1234567{ "host": "database.server.com", "password": "secretpassword", "user": "postgres", "database": "postgres", "port": 5432} -
On your project dashboard, click Connect
-
Under the Session pooler, click on the View parameters under the connect string. Replace the
HostandUserfields with the values shown. -
Enter the password you used when you created your Supabase project in the
passwordentry in thesupabase-service.jsonfile.
Generate a Firebase private key
- Log in to your Firebase Console and open your project.
- Click the gear icon next to Project Overview in the sidebar and select Project Settings.
- Click Service Accounts and select Firebase Admin SDK.
- Click Generate new private key.
- Rename the downloaded file to
firebase-service.json.
Save your Firebase password hash parameters
- Log in to your Firebase Console and open your project.
- Select Authentication (Build section) in the sidebar.
- Select Users in the top menu.
- At the top right of the users list, open the menu (3 dots) and click Password hash parameters.
- Copy and save the parameters for
base64_signer_key,base64_salt_separator,rounds, andmem_cost.
1234567hash_config { algorithm: SCRYPT, base64_signer_key: XXXX/XXX+XXXXXXXXXXXXXXXXX+XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX==, base64_salt_separator: Aa==, rounds: 8, mem_cost: 14,}Command line options
Dump Firestore users to a JSON file
node firestoreusers2json.js [<filename.json>] [<batch_size>]
filename.json: (optional) output filename (defaults to./users.json)batchSize: (optional) number of users to fetch in each batch (defaults to 100)
Import JSON users file to Supabase Auth (Postgres: auth.users
node import_users.js <path_to_json_file> [<batch_size>]
path_to_json_file: full local path and filename of JSON input file (of users)batch_size: (optional) number of users to process in a batch (defaults to 100)
Notes
For more advanced migrations, including the use of a middleware server component for verifying a user's existing Firebase password and updating that password in your Supabase project the first time a user logs in, see the firebase-to-supabase repo.
Resources
Migrate to Supabase
Contact us if you need more help migrating your project.