FirexportGuías

Cómo exportar los usuarios de Firebase Authentication

La pestaña Usuarios (Users) de Firebase Authentication lista todas las cuentas de tu proyecto, pero no puede descargarlas: su único menú contiene los parámetros de hash de contraseña. Hay tres formas de sacar tus usuarios en un archivo. Cuál te conviene depende de para qué sea el archivo: una lista para leer, compartir o para enviar correos, o una mudanza a otro proyecto.

Actualizado el 7 de octubre de 2026. Firexport, la extensión del método 1, es nuestra. Los métodos 2 y 3 no la necesitan.

La respuesta corta

  • Una lista de usuarios para una hoja de cálculo, ahora mismo: expórtala desde la pestaña Usuarios (Users) con una extensión del navegador. Método 1
  • Mover usuarios a otro proyecto, con sus contraseñas: firebase auth:export y luego firebase auth:import. Método 2
  • Una exportación programada, o columnas a tu manera: un script corto con el Admin SDK. Método 3
1. Consola + extensión2. Firebase CLI3. Script con Admin SDK
ConfiguraciónInstalar una extensión de ChromeNode.js y Firebase CLINode.js y credenciales de Google Cloud
FormatosCSV con fila de encabezado, o JSONCSV sin fila de encabezado, o JSONCSV con fila de encabezado (o lo que escriba tu código)
Fechas y horasLa fecha de la consola (ISO 8601 con Advanced)Milisegundos desde la época UnixISO 8601
Reclamaciones personalizadasCon AdvancedIncluidasIncluidas
Hashes de contraseñasNunca se leenIncluidos (rol Editor o Propietario)Se omiten

1. Exportar desde Firebase console con Firexport

En Firebase console, Authentication > Usuarios (Users) muestra tus usuarios en una tabla, una página a la vez, sin nada con qué descargarlos. Firexport es una extensión gratuita de Chrome que agrega un botón Exportar a esa tabla.

  1. Instala Firexport desde Chrome Web Store.
  2. En Firebase console, abre Authentication y la pestaña Usuarios (Users).
  3. Haz clic en Exportar, a la derecha de Agregar usuario (Add user). Firexport recorre todas las páginas de la tabla y descarga un solo archivo CSV. Para JSON, abre el menú ⋮ junto al botón y elige Exportar a JSON.
La pestaña Usuarios de Firebase Authentication, con el botón Exportar que Firexport agrega junto a Agregar usuario y su menú abierto
Exportar está a la derecha de Agregar usuario. Su menú tiene CSV y JSON.

Lo que acaba en el archivo:

  • En la versión gratuita, una fila por usuario con uid, identifier, disabled, providers, creationTime y lastSignInTime: la tabla tal como la muestra la consola. Las fechas van en el formato de la consola, sin hora, y los proveedores son nombres como Email o Google.
  • Firexport Advanced, el plan de pago, escribe el registro completo de cada usuario con los nombres del Admin SDK: email, emailVerified, displayName, phoneNumber, photoURL, providerData, customClaims, multiFactor, y las fechas de creación, de acceso y del token en ISO 8601 (UTC).
  • Los nombres de las columnas están en inglés sea cual sea el idioma de la consola, así que todas las exportaciones tienen las mismas columnas.

Los hashes de contraseñas nunca se leen, y los datos de tus usuarios se quedan en tu navegador: el archivo se crea ahí y no va a ningún lado más que a tus descargas. No hay que configurar ninguna clave de cuenta de servicio ni ninguna CLI, porque funciona en la sesión de la consola en la que ya iniciaste sesión. Se ejecuta en Chrome y otros navegadores basados en Chromium.

Un usuario a la vez

Para revisar un solo usuario, pasa el cursor sobre su fila. Un ícono de información al inicio de las acciones de la fila abre una tarjeta con el registro completo: nombre visible, correo verificado, proveedores, fechas de acceso y del token, reclamaciones personalizadas y segundos factores. El ícono de copiar de la tarjeta copia el usuario al portapapeles como JSON. Ambos son gratuitos.

La tarjeta de detalles de un usuario junto a la tabla Usuarios, con proveedores, fechas de acceso, reclamaciones personalizadas y un segundo factor
La tarjeta muestra lo que la tabla Usuarios deja fuera.

Exporta tus usuarios de Firebase desde la consola, sin CLI ni claves de cuenta de servicio.

Añadir a Chrome — gratis

2. Exportar con Firebase CLI

El comando auth:export de Firebase CLI descarga todas las cuentas de un proyecto en un solo archivo. Está pensado para mover usuarios a otro proyecto con auth:import, así que incluye los hashes y la sal de las contraseñas. Eso también convierte el archivo en una credencial: no lo dejes en unidades compartidas ni lo envíes por correo. Los campos de hash y sal requieren una cuenta con el rol Editor o Propietario en el proyecto.

npm install -g firebase-tools
firebase login
firebase auth:export users.json --project your-project-id
  • El nombre del archivo determina el formato: users.json o users.csv.
  • El CSV no tiene fila de encabezado. Sus columnas van en un orden fijo: UID, correo, correo verificado, hash de contraseña, sal, nombre y URL de la foto, cuatro columnas para cada uno de Google, Facebook, Twitter y GitHub, y luego fecha de creación, fecha del último acceso, número de teléfono y algunas más. La referencia de auth:export de Google las enumera. Las fechas van en milisegundos desde la época Unix.
  • El JSON conserva los nombres propios de la API: localId, createdAt, lastSignedInAt, providerUserInfo y customAttributes para las reclamaciones personalizadas (una cadena JSON).
  • Solo se exportan las contraseñas con hash scrypt de Firebase. Los usuarios importados con otro algoritmo que no hayan iniciado sesión desde entonces salen con los campos de hash y sal vacíos.

Para mover los usuarios, importa el archivo en el otro proyecto con los parámetros de hash del proyecto anterior, que están en Authentication > Usuarios (Users) > ⋮ > Parámetros de hash de contraseña (Password hash parameters). Los usuarios conservan sus UID y pueden iniciar sesión con la misma contraseña.

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_COST

3. Exportar con un script del Admin SDK

Para columnas a tu manera, o una exportación que se ejecute de forma programada, un script corto de Node.js con el Firebase Admin SDK lista todos los usuarios y escribe un CSV con fila de encabezado. Necesita una cuenta que pueda leer usuarios: un Propietario o Editor del proyecto, o el rol Visualizador de Firebase Authentication.

  1. Instala el SDK: npm install firebase-admin
  2. Inicia sesión para obtener credenciales locales: gcloud auth application-default login. En un servidor, apunta GOOGLE_APPLICATION_CREDENTIALS a una clave de cuenta de servicio.
  3. Guarda el script de abajo como export-users.mjs, reemplaza your-project-id y ejecuta node 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 una llamada falla porque la API “requires a quota project” (requiere un proyecto de cuota), ejecuta gcloud auth application-default set-quota-project your-project-id y vuelve a intentarlo.
  • listUsers devuelve los usuarios en orden de UID, no por fecha de registro. Ordena las filas si necesitas ese orden.
  • El SDK devuelve los hashes de contraseñas solo a una cuenta con el permiso firebaseauth.configs.getHashConfig, y el script los omite de todos modos. Para mover usuarios con sus contraseñas, usa el método 2.

Preguntas frecuentes

¿Puede Firebase console exportar los usuarios de Authentication?

No. La pestaña Usuarios (Users) tiene un cuadro de búsqueda, Agregar usuario (Add user), un botón de actualizar y un menú cuyo único elemento es Parámetros de hash de contraseña (Password hash parameters). Para sacar los usuarios a un archivo hace falta Firebase CLI (firebase auth:export), el Admin SDK o una extensión del navegador que agregue un botón Exportar a esa pestaña.

¿Cómo obtengo una lista de todos los correos de los usuarios de Firebase?

Exporta los usuarios y quédate con la columna del correo. En la exportación gratuita de Firexport es la columna identifier, que muestra lo mismo que la consola: el correo, o el número de teléfono si el usuario inicia sesión con teléfono. En un script del Admin SDK, toma user.email de listUsers.

¿La exportación incluye las contraseñas de los usuarios?

Ningún método da contraseñas en texto plano, porque Firebase nunca las guarda. firebase auth:export incluye los hashes y la sal de las contraseñas, que firebase auth:import usa para mover usuarios con contraseñas que siguen funcionando. Firexport nunca lee los hashes, y el Admin SDK solo los devuelve con un permiso adicional.

¿Cómo muevo los usuarios a otro proyecto de Firebase?

Ejecuta firebase auth:export users.json en el proyecto anterior y luego firebase auth:import users.json en el nuevo, con --hash-algo=SCRYPT y la clave de hash, el separador de sal, las rondas y el costo de memoria de los Parámetros de hash de contraseña (Password hash parameters) del proyecto anterior. Con un archivo sin hashes, de Firexport o de un script, cada usuario con contraseña tendría que restablecerla.

¿Puedo abrir la exportación en Excel o Google Sheets?

Sí. Todos los métodos de esta guía escriben CSV, que ambos abren. El CSV de Firexport y el del script empiezan con una marca de orden de bytes, así que Excel lee bien los nombres en cualquier idioma. Si en un CSV sin ella los nombres salen corruptos, impórtalo con Datos > Desde el texto/CSV (Data > From Text/CSV) y pon Origen de archivo (File Origin) en 65001: Unicode (UTF-8).