FirexportGuides
Comment exporter les utilisateurs de Firebase Authentication
L’onglet Utilisateurs (Users) de Firebase Authentication liste tous les comptes de votre projet, mais ne permet pas de les télécharger : son seul menu contient les paramètres de hachage du mot de passe. Il existe trois façons de sortir vos utilisateurs dans un fichier. Celle qui convient dépend de l’usage du fichier : une liste à lire, à partager ou à envoyer par e-mail, ou un transfert vers un autre projet.
Mis à jour le 7 octobre 2026. Firexport, l’extension de la méthode 1, est la nôtre. Les méthodes 2 et 3 n’en ont pas besoin.
La réponse courte
- Une liste d’utilisateurs pour un tableur, tout de suite: exportez-la depuis l’onglet Utilisateurs (Users) avec une extension de navigateur. Méthode 1
- Transférer des utilisateurs vers un autre projet, mots de passe compris: firebase auth:export, puis firebase auth:import. Méthode 2
- Un export planifié, ou des colonnes à votre façon: un court script Admin SDK. Méthode 3
| 1. Console + extension | 2. Firebase CLI | 3. Script Admin SDK | |
|---|---|---|---|
| Mise en place | Installer une extension Chrome | Node.js et la Firebase CLI | Node.js et des identifiants Google Cloud |
| Formats | CSV avec une ligne d’en-tête, ou JSON | CSV sans ligne d’en-tête, ou JSON | CSV avec une ligne d’en-tête (ou ce que votre code écrit) |
| Dates | La date de la console (ISO 8601 avec Advanced) | Millisecondes depuis l’epoch | ISO 8601 |
| Revendications personnalisées | Avec Advanced | Incluses | Incluses |
| Hachages de mot de passe | Jamais lus | Inclus (rôle Éditeur ou Propriétaire) | Exclus |
1. Exporter depuis la console Firebase avec Firexport
Dans la console Firebase, Authentication > Utilisateurs (Users) affiche vos utilisateurs dans un tableau, une page à la fois, sans rien pour les télécharger. Firexport est une extension Chrome gratuite qui ajoute un bouton Exporter à ce tableau.
- Installez Firexport depuis le Chrome Web Store.
- Dans la console Firebase, ouvrez Authentication et l’onglet Utilisateurs (Users).
- Cliquez sur Exporter, à droite du bouton Ajouter un utilisateur (Add user). Firexport parcourt toutes les pages du tableau et télécharge un seul fichier CSV. Pour du JSON, ouvrez le menu ⋮ à côté du bouton et choisissez Exporter en JSON.

Ce qui se retrouve dans le fichier :
- Dans la version gratuite, une ligne par utilisateur avec
uid,identifier,disabled,providers,creationTimeetlastSignInTime: le tableau tel que la console l’affiche. Les dates sont au format de la console, sans l’heure, et les fournisseurs sont des noms comme Email ou Google. - Firexport Advanced, l’offre payante, écrit l’enregistrement complet de chaque utilisateur sous les noms de le SDK Admin :
email,emailVerified,displayName,phoneNumber,photoURL,providerData,customClaims,multiFactor, ainsi que les dates de création, de connexion et de jeton en ISO 8601 (UTC). - Les noms de colonnes sont en anglais quelle que soit la langue de la console : chaque export a donc les mêmes colonnes.
Les hachages de mot de passe ne sont jamais lus, et les données de vos utilisateurs restent dans votre navigateur : le fichier y est construit, et il ne va nulle part ailleurs que dans vos téléchargements. Aucune clé de compte de service ni CLI à configurer : cela fonctionne dans la session de console où vous êtes déjà connecté. L’extension fonctionne dans Chrome et les autres navigateurs basés sur Chromium.
Un utilisateur à la fois
Pour vérifier un seul utilisateur, survolez sa ligne. Une icône d’information, au début des actions de la ligne, ouvre une fiche avec l’enregistrement complet : nom à afficher, e-mail validé, fournisseurs, dates de connexion et de jeton, revendications personnalisées et seconds facteurs. L’icône de copie de la fiche place l’utilisateur dans le presse-papiers en JSON. Les deux sont gratuites.

Exportez vos utilisateurs Firebase depuis la console, sans CLI ni clé de compte de service.
2. Exporter avec la Firebase CLI
La commande auth:export de la Firebase CLI télécharge tous les comptes d’un projet dans un seul fichier. Elle est faite pour transférer des utilisateurs vers un autre projet avec auth:import, elle inclut donc les hachages de mot de passe et les sels. Cela fait aussi du fichier un identifiant sensible : tenez-le à l’écart des drives partagés et des e-mails. Les champs de hachage et de sel exigent un compte avec le rôle Éditeur ou Propriétaire sur le projet.
npm install -g firebase-tools
firebase login
firebase auth:export users.json --project your-project-id- Le nom du fichier détermine le format :
users.jsonouusers.csv. - Le CSV n’a pas de ligne d’en-tête. Ses colonnes suivent un ordre fixe : UID, e-mail, e-mail validé, hachage du mot de passe, sel, nom et URL de la photo, quatre colonnes par fournisseur pour Google, Facebook, Twitter et GitHub, puis date de création, date de dernière connexion, numéro de téléphone et quelques autres. La référence auth:export de Google les liste. Les dates sont en millisecondes depuis l’epoch.
- Le JSON garde les noms propres à l’API :
localId,createdAt,lastSignedInAt,providerUserInfo, etcustomAttributespour les revendications personnalisées (une chaîne JSON). - Seuls les mots de passe hachés avec le scrypt de Firebase sont exportés. Les utilisateurs importés avec un autre algorithme qui ne se sont pas connectés depuis sortent avec des champs de hachage et de sel vides.
Pour transférer les utilisateurs, importez le fichier dans l’autre projet avec les paramètres de hachage de l’ancien projet (Authentication > Utilisateurs (Users) > ⋮ > Paramètres de hachage du mot de passe (Password hash parameters)). Les utilisateurs gardent leurs UID et peuvent se connecter avec le même mot de passe.
firebase auth:import users.json --project new-project-id \
--hash-algo=SCRYPT --hash-key=BASE64_SIGNER_KEY --salt-separator=BASE64_SALT_SEPARATOR \
--rounds=ROUNDS --mem-cost=MEM_COST3. Exporter avec un script Admin SDK
Pour des colonnes à votre façon, ou un export qui s’exécute selon un planning, un court script Node.js avec le SDK Admin Firebase liste tous les utilisateurs et écrit un CSV avec une ligne d’en-tête. Il lui faut un compte qui peut lire les utilisateurs : un Propriétaire ou un Éditeur du projet, ou le rôle Lecteur Firebase Authentication.
- Installez le SDK :
npm install firebase-admin - Connectez-vous pour obtenir des identifiants locaux :
gcloud auth application-default login. Sur un serveur, faites plutôt pointerGOOGLE_APPLICATION_CREDENTIALSvers une clé de compte de service. - Enregistrez le script ci-dessous sous
export-users.mjs, remplacezyour-project-idet exécuteznode export-users.mjs.
// Usage: node export-users.mjs → writes users.csv
import { writeFileSync } from 'node:fs';
import { initializeApp } from 'firebase-admin/app';
import { getAuth } from 'firebase-admin/auth';
initializeApp({ projectId: 'your-project-id' });
const auth = getAuth();
// listUsers returns at most 1,000 users per call, so follow the page token to the end.
const users = [];
let pageToken;
do {
const page = await auth.listUsers(1000, pageToken);
users.push(...page.users);
pageToken = page.pageToken;
} while (pageToken);
// One row per user. Times become ISO 8601. Password hashes are left out: this is a user list, not a backup.
const iso = (time) => (time ? new Date(time).toISOString() : '');
const rows = users.map((user) => ({
uid: user.uid,
email: user.email,
emailVerified: user.emailVerified,
displayName: user.displayName,
phoneNumber: user.phoneNumber,
disabled: user.disabled,
providers: user.providerData.map((provider) => provider.providerId).join(' '),
creationTime: iso(user.metadata.creationTime),
lastSignInTime: iso(user.metadata.lastSignInTime),
customClaims: user.customClaims ? JSON.stringify(user.customClaims) : '',
}));
// Quote any cell with a comma, a quote or a line break.
function cell(value) {
const text = value === undefined || value === null ? '' : String(value);
return /[",\r\n]/.test(text) ? `"${text.replaceAll('"', '""')}"` : text;
}
const columns = ['uid', 'email', 'emailVerified', 'displayName', 'phoneNumber', 'disabled',
'providers', 'creationTime', 'lastSignInTime', 'customClaims'];
const lines = [columns, ...rows.map((row) => columns.map((column) => row[column]))];
// The byte order mark at the start makes Excel read names in any language correctly.
writeFileSync('users.csv', '' + lines.map((line) => line.map(cell).join(',')).join('\r\n'));
console.log(`Wrote ${rows.length} users to users.csv`);- Si un appel échoue parce que l’API exige un projet de quota (« requires a quota project »), exécutez
gcloud auth application-default set-quota-project your-project-idet réessayez. listUsersrenvoie les utilisateurs dans l’ordre des UID, pas par date d’inscription. Triez les lignes si vous avez besoin de cet ordre.- Le SDK ne renvoie les hachages de mot de passe qu’à un compte qui a l’autorisation
firebaseauth.configs.getHashConfig, et le script les laisse de côté dans tous les cas. Pour transférer des utilisateurs avec leurs mots de passe, utilisez la méthode 2.
FAQ
La console Firebase peut-elle exporter les utilisateurs d’Authentication ?
Non. L’onglet Utilisateurs (Users) a un champ de recherche, Ajouter un utilisateur (Add user), un bouton d’actualisation et un menu dont le seul élément est Paramètres de hachage du mot de passe (Password hash parameters). Pour mettre les utilisateurs dans un fichier, il faut la Firebase CLI (firebase auth:export), le SDK Admin, ou une extension de navigateur qui ajoute un bouton Exporter à cet onglet.
Comment obtenir la liste de tous les e-mails des utilisateurs dans Firebase ?
Exportez les utilisateurs et gardez la colonne de l’e-mail. Dans l’export gratuit de Firexport, c’est la colonne identifier, qui affiche ce que montre la console : l’e-mail, ou le numéro de téléphone pour la connexion par téléphone. Dans un script Admin SDK, récupérez user.email depuis listUsers.
L’export inclut-il les mots de passe des utilisateurs ?
Aucune méthode ne donne les mots de passe en clair, car Firebase ne les stocke jamais. firebase auth:export inclut les hachages de mot de passe et les sels, dont firebase auth:import se sert pour transférer des utilisateurs avec des mots de passe qui fonctionnent. Firexport ne lit jamais les hachages, et le SDK Admin ne les renvoie qu’avec une autorisation supplémentaire.
Comment transférer des utilisateurs vers un autre projet Firebase ?
Exécutez firebase auth:export users.json sur l’ancien projet, puis firebase auth:import users.json sur le nouveau avec --hash-algo=SCRYPT et la clé de hachage, le séparateur de sel, le nombre de tours et le coût mémoire indiqués dans les Paramètres de hachage du mot de passe (Password hash parameters) de l’ancien projet. Un fichier sans hachages, issu de Firexport ou d’un script, obligerait chaque utilisateur à mot de passe à réinitialiser son mot de passe.
Puis-je ouvrir l’export dans Excel ou Google Sheets ?
Oui. Toutes les méthodes présentées ici écrivent du CSV, que les deux ouvrent. Le CSV de Firexport et celui du script commencent par une marque d’ordre des octets, donc Excel lit les noms dans toutes les langues. Si les noms s’affichent mal dans un CSV qui n’en a pas, importez-le avec Données > À partir d’un fichier texte/CSV (Data > From Text/CSV) et réglez Origine du fichier (File Origin) sur 65001 : Unicode (UTF-8).
