Mock Data Generator

Generate realistic mock data (users, emails, addresses, dates) as JSON, CSV, or SQL. 7 locales.

generators

Mock Data Generator

Runs entirely in your browser. Your input never leaves your device.

What next?

How it works

Por qué importan los datos de prueba realistas

Los fixtures codificados con user1, [email protected] y 123 Main St ocultan bugs que solo aparecen con datos reales. Un campo de nombre que cabe con "Ana" se desborda con "María de los Ángeles Gutiérrez-Hernández". Un campo de fecha que funciona en un locale falla con otro formato. Los buenos datos de prueba ejercitan tu código con variedad real — longitudes de string distintas, caracteres unicode, valores edge case — antes de que los usuarios reales lo hagan en producción.

Esta herramienta usa faker.js, la librería de datos falsos para JavaScript más usada, ejecutándose completamente en tu navegador.

Categorías de datos

faker.js organiza los datos falsos en módulos. Los más usados por los desarrolladores:

PersonfirstName, lastName, fullName, jobTitle, gender, bio. Con soporte de locale: un locale japonés produce nombres japoneses plausibles; uno latinoamericano produce nombres en español.

Internetemail, userName, url, ip, ipv6, mac, password, domainName. Útil para cuentas de usuario, logs de API, registros de red.

LocationstreetAddress, city, state, country, zipCode, latitude, longitude. Combina con datos de persona para perfiles de usuario realistas.

Financeamount, currencyCode, currencyName, accountNumber, creditCardNumber, transactionType. Excelente para fixtures de e-commerce y fintech. Nota: los números de tarjeta pasan la validación Luhn pero no son tarjetas reales.

Companyname, catchPhrase, buzzPhrase, industry. Útil al sembrar registros de organizaciones o cuentas.

Datepast, future, between, birthdate, recent. Retorna objetos Date de JavaScript; la herramienta los serializa como strings ISO 8601.

Loremword, words, sentence, paragraph, paragraphs. Lorem ipsum clásico o frases en inglés aleatorias realistas.

Output JSON vs CSV

Elige JSON cuando:

  • Alimentes datos a una REST API o siembres una base de datos mediante un migration script
  • Tu esquema tenga objetos anidados (por ejemplo, un usuario con un objeto de dirección embebido)
  • Escribas fixtures de prueba para Jest, Vitest o Playwright

Elige CSV cuando:

  • Importes a una planilla (Excel, Google Sheets)
  • Cargues en una base de datos con COPY o LOAD DATA
  • Envíes a un stakeholder que necesita revisar datos de muestra

Los campos JSON anidados se aplanan automáticamente para CSV: { "address": { "city": "Buenos Aires" } } se convierte en la columna address.city.

Seeds para reproducibilidad

Por defecto, faker.js usa un seed aleatorio en cada ejecución. Si necesitas output determinista — los mismos registros falsos cada vez que corres tu suite de tests — establece un seed. Cualquier entero sirve; la herramienta lo pasa a faker.seed(n).

// Equivalente a lo que hace esta herramienta internamente
import { faker } from '@faker-js/faker'
faker.seed(42)
const name = faker.person.fullName() // Siempre el mismo nombre con seed 42

Usa un seed fijo para fixtures de CI que se commitean al repo. Usa seed aleatorio cuando explores cómo se ve tu UI con datos variados.

Generación con awareness de locale

faker.js tiene locales integrados para más de 60 regiones. Cambiar el locale afecta nombres, direcciones, teléfonos y otros campos. El locale en produce datos en inglés americano por defecto. Otros locales comunes:

  • es — Nombres y direcciones en español
  • pt_BR — Nombres en portugués brasileño y formatos de CPF
  • de — Nombres y direcciones en alemán
  • ja — Nombres en japonés (kanji + hiragana)
  • zh_CN — Chino simplificado

Especialmente útil al testear el manejo de internacionalización — si tu app solo se prueba con nombres ASCII, no encontrarás bugs de encoding hasta el lanzamiento.

¿Cuántas filas puedo generar?

El navegador maneja cómodamente hasta unas 10.000 filas sin lag notable. Más allá de eso, tanto el loop de generación como el rendering del resultado en la UI empiezan a consumir memoria significativa. Para datasets muy grandes (100k+ filas), genera en lotes más pequeños o usa faker.js en un script de Node.js:

import { faker } from '@faker-js/faker'
import { writeFileSync } from 'fs'

const rows = Array.from({ length: 100_000 }, () => ({
  id: faker.string.uuid(),
  name: faker.person.fullName(),
  email: faker.internet.email(),
}))

writeFileSync('fixtures.json', JSON.stringify(rows, null, 2))

Casos de uso prácticos

Tests de integración de API — genera 50 objetos de usuario, envíalos a tu endpoint POST en un loop, verifica el shape de la respuesta. Detecta bugs de serialización que los objetos fijos no revelan.

Sembrado de base de datos — genera registros que coincidan con tu esquema y córrelos por el bulk-insert de tu ORM. Prueba constraints, índices y triggers con cardinalidad realista.

Entornos de demo — puebla una base de datos de staging para que los stakeholders vean una app con aspecto real, no tablas vacías o texto placeholder.

Validación de esquema — pasa el JSON generado por un validador JSON Schema o Zod. Si el validador lo rechaza, o tu esquema es demasiado estricto o faker está generando edge cases que tu esquema no anticipó — ambos son hallazgos útiles.

Privacidad

faker.js se ejecuta completamente en tu navegador. Ningún dato generado se envía a nuestros servidores. Todos los valores se producen algorítmicamente — no son nombres ni emails reales de personas reales.

FAQ

¿Los datos generados son reales? ¿Podrían coincidir accidentalmente con una persona real?

No. faker.js construye valores algorítmicamente — elige de listas de palabras, aplica patrones de formato y combina componentes. La probabilidad de generar accidentalmente la combinación de nombre + email + dirección de una persona real es astronómicamente baja. Dicho eso, nunca uses datos generados en un contexto de producción que requiera identidades reales.

¿Qué hace establecer un seed?

Un seed inicializa el generador de números aleatorios de faker en un estado fijo, de modo que cada ejecución con el mismo seed produce output idéntico. Esto es crítico para fixtures de prueba reproducibles — si tu test verifica valores específicos, el fixture debe ser estable entre ejecuciones. Usa cualquier entero como seed. Si cambias el seed, obtienes un dataset completamente diferente (pero nuevamente reproducible).

¿Puedo generar objetos JSON anidados?

La herramienta actual genera registros planos por esquema. Para estructuras anidadas, usa faker.js en un script Node.js donde puedes componer objetos libremente:

const user = {
  id: faker.string.uuid(),
  profile: {
    name: faker.person.fullName(),
    avatar: faker.image.avatar(),
  },
  address: {
    city: faker.location.city(),
    country: faker.location.country(),
  },
}

¿Por qué el conteo de filas de CSV y JSON a veces difiere?

No difieren — ambos modos generan el mismo número de registros. Lo que puede diferir es el conteo de filas aparente si abres el CSV en Excel y Excel auto-convierte valores (por ejemplo, un UUID que parece un número queda truncado). El archivo en bruto es correcto; la visualización es la interpretación de Excel.

¿Cuál es el máximo de filas que debo generar en el navegador?

Alrededor de 10.000 filas es cómodo. Más allá de eso, el loop de generación y la serialización JSON empiezan a consumir memoria notable y la UI puede lagear. Para 100k+ filas, instala @faker-js/faker via npm y corre un script Node.js — puede generar millones de filas limitado solo por el espacio en disco.

¿Cómo genero datos específicos de locale como el CPF brasileño o códigos postales alemanes?

Establece el locale en pt_BR o de en el dropdown. Los módulos de locale de faker.js incluyen formatos específicos por región para teléfonos, códigos postales e IDs. No todos los locales implementan todos los campos — si falta una implementación específica, faker hace fallback al valor en inglés.

¿Puedo usar esto para load testing?

Sí, con una advertencia. Esta herramienta genera datos en el navegador para archivos de fixture y scripts de seeding. Para load testing (enviar miles de requests por segundo), genera tus archivos de fixture aquí, luego aliméntalos a tu herramienta de load testing (k6, Artillery, Locust). No intentes manejar el load testing directamente desde el navegador.

¿Los números de tarjeta de crédito generados son válidos?

Los números pasan el algoritmo Luhn (la verificación de checksum) porque faker los genera así para que sean realistas. No son números de tarjeta reales y serán rechazados por cualquier procesador de pagos real. Nunca los uses en un flujo de pago en producción.