# Firebase: “The email address is already in use by another account” (auth/email-already-in-use)

> Sign-up fails with Firebase auth/email-already-in-use: an account with that email exists. Offer sign-in or reset, and check for a Google sign-in on that email.

Canonical: https://app369.com/fix/firebase-auth-email-already-in-use/
Last updated: 2026-11-08

createUserWithEmailAndPassword fails with auth/email-already-in-use, or ERROR_EMAIL_ALREADY_IN_USE on Android and iOS. Firebase already has a user with that email, maybe from an earlier sign-up, a Google or Apple sign-in, or a test account. The error is correct; what usually needs fixing is the sign-up screen, which leaves the person stuck.

**Short answer**

Catch the code and give the person a way forward: a link to sign in, and a password reset for the same email. If the existing account was made with Google or Apple, sign-in has to use that provider; add password sign-in to it later by linking. In development, delete the old test user in the Firebase console instead of reusing the email.

## **Why the email is taken, and the fix**

1. 01 ### **The person already signed up**
  > “Thrown if there already exists an account with the given email address.” [**Firebase, firebase.auth.Auth (createUserWithEmailAndPassword)**](https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth) Most often the person forgot they have an account. Catch the error on the sign-up form and offer sign-in and password reset with the email already filled in. In Flutter the code is email-already-in-use, without the auth/ prefix.```
try {
  await createUserWithEmailAndPassword(auth, email, password);
} catch (e) {
  if (e.code === 'auth/email-already-in-use') {
    showMessage('You already have an account. Sign in or reset your password.');
  }
}
```
2. 02 ### **The account was created with Google, Apple or another provider**
  > “The call to linkWithCredential will fail if the credentials are already linked to another user account.” [**Firebase, Link multiple auth providers to an account**](https://firebase.google.com/docs/auth/web/account-linking) A user who signed in with Google has an account with that email but no password. Ask them to sign in with Google, then link an email and password credential to the signed-in user if you want both methods: linkWithCredential(user, EmailAuthProvider.credential(email, password)).
3. 03 ### **Checking the email before sign-up no longer works**
  > “Invalid sign-up cases continue to return EMAIL_EXISTS errors” [**Google Cloud, Email enumeration protection**](https://cloud.google.com/identity-platform/docs/admin/email-enumeration-protection) Older code called fetchSignInMethodsForEmail to decide between sign-up and sign-in. With email enumeration protection, on by default for projects created on or after September 15, 2023, that list comes back empty, so the code sends existing users to sign-up. Try the sign-up and handle this error instead.
4. 04 ### **Leftover test users** Reusing the same email while testing hits this every time after the first run. Delete the user under Authentication, Users in the Firebase console, or use the Auth emulator for repeatable tests.

Checked against the vendor’s docs on November 8, 2026: [Firebase reference: firebase.auth.Auth](https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth); [Firebase docs: Link multiple auth providers to an account](https://firebase.google.com/docs/auth/web/account-linking); [Google Cloud docs: Email enumeration protection](https://cloud.google.com/identity-platform/docs/admin/email-enumeration-protection).

## **Rather hand it over?**

Fixed scope, fixed price, paid upfront. The work happens in writing; no call needed.

- [from $450**App Fix Ticket**One reproducible bug in an existing mobile or web app, diagnosed and fixed.**See scope and start**](https://app369.com/fixed-price/flutter-firebase-bug-fix/)
- [from $450**AI-Built App Rescue**A Lovable, Bolt or Cursor app checked end to end in 3 days, then its worst problems fixed at a fixed price.****No issues worth fixing, no charge.**** If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.**See scope and start**](https://app369.com/fixed-price/ai-app-rescue/)

Related: [**Firebase auth/account-exists-with-different-credential**](https://app369.com/fix/firebase-auth-account-exists-with-different-credential/) · [**Firebase auth/invalid-credential**](https://app369.com/fix/firebase-auth-invalid-credential/) · [**Firebase auth/operation-not-allowed**](https://app369.com/fix/firebase-auth-operation-not-allowed/) · [**Firebase auth/invalid-email**](https://app369.com/fix/firebase-auth-invalid-email/)

Questions

## **More on this error**

<details>

<summary>**Should the message say the email is taken? **+</summary>

It is a trade-off. Saying so helps real users but tells anyone which emails have accounts. Firebase still returns this error on sign-up even with email enumeration protection on, so decide on the wording and consider rate limits on sign-up.

</details>

<details>

<summary>**Can one email have two Firebase accounts? **+</summary>

Only if you switch the project to allow multiple accounts per email address in the Authentication settings. With the default of one account per email, link the providers to one user instead.

</details>

<details>

<summary>**Can you fix it for me? **+</summary>

If one bug is the whole problem, the App Fix Ticket covers it: a written diagnosis first, then the fix. If the app has more going on, the Launch Check is a written check of the whole app. Each issue found is rated critical, high, medium or low, with where it is and how it was confirmed. No issues worth fixing, no charge. If the Launch Check finds nothing rated medium or higher, Simon refunds the full $450. You keep the report either way. This applies to the first 10 Launch Checks bought after October 30, 2026.

</details>

A different error?

## **Describe it and get a written quote**

Send the error and what you were doing. You get a written scope, a fixed price and a timeline; Simon replies by email, usually within one business day.

[**Describe your problem **→](https://app369.com/contact/) [**All fixes**](https://app369.com/fix/)