Test data for Brazilian software
EN
Fictitious data for software testing. Using fake documents for fraud is a crime in Brazil (Penal Code, arts. 297–299, 307).

Synthetic Brazilian person generator

Build complete, internally consistent fake Brazilian identities for test fixtures, seed databases and demos — without copying anyone’s real personal data.

—

Up to 1000 items at once. Everything is generated in your browser.

How to use

  1. Pick the options: sex (or random), UF (state, or any), age range and With mask (punctuation).
  2. Click Generate to create one person and see every field.
  3. Use Copy to take a single field or the whole record into your test.
  4. For bulk data, set the Quantity (1 to 1000) and generate the batch in one go.
  5. Download it with Export CSV (spreadsheets, PostgreSQL COPY) or Export JSON (fixtures and seed scripts).

How it works

What each field contains

Brazilian forms usually ask for a CPF (the individual taxpayer ID), an RG (state identity card), a CEP (postal code) and a mobile number with a two-digit area code (DDD). This tool fills all of them consistently — CPF, DDD, CEP and city all match the same UF (state) — using crypto.getRandomValues in your browser:

  • nome: a common given name (female or male, matching sexo) plus two different common surnames, combined at random.
  • nascimento / idade: the age is drawn from your range (default 18–80) and the birth date is drawn so the person is exactly that age today. ISO format YYYY-MM-DD.
  • cpf: valid check digits, with the 9th digit set to the fiscal region of the UF.
  • rg: follows the SSP-SP (São Paulo) pattern, 8 digits plus a check digit that may be X. Every state has its own RG rules, so treat this as a format sample.
  • email: firstname.surname plus a number, always at example.com, example.net or example.org, reserved by RFC 2606, so no mail is ever delivered.
  • celular: the real DDD of the chosen city plus 9 digits starting with 9; the number itself is random.
  • cep: fictitious, drawn inside the state’s CEP range; it may not match any actual street.
  • endereco, numero, bairro: generic street and neighbourhood words; cidade and uf are real.

With mask affects CPF, RG and mobile; the CEP always keeps its hyphen.

Verified example

With UF = PR, female, age 25–35, one run returned: Daniela Ferreira Ramos, born 1998-10-09 (28 on the generation date, 2026-11-13), CPF 323.619.059-06, RG 43.685.640-2, daniela.ramos17@example.com, (41) 96270-4701, CEP 87975-295, Curitiba/PR. Checks: the CPF’s 9th digit 9 is the fiscal region for PR and SC; 41 is Curitiba’s area code; prefix 87975 lies in the 80000–87999 range used for Paraná; the CPF and RG-SP validators accept both numbers.

Why synthetic data beats a copy of production

Copying real customers into staging counts as processing personal data under Brazil’s LGPD (Law 13,709/2018, similar in spirit to the GDPR): it needs a purpose, a legal basis and safeguards, and every copy widens the breach surface. Synthetic records remove that risk, can live in your repository, can be shared with vendors, and let you force edge cases your real data may not contain. Because numbers are random, a CPF or phone may coincide with a real one by chance — keep them inside test systems.

FAQ

Why is there no Validate tab for this tool?

A synthetic person as a whole has nothing to validate. The fields with their own rules can be checked in the dedicated tools — the CPF generator and validator (the RG follows the SSP-SP pattern described above). This page focuses on generating complete records in bulk and exporting them as CSV or JSON.

Do these records belong to real people?

Not by design. Names are random combinations, addresses use generic words and emails sit on reserved domains. CPF and mobile numbers, however, are random and may coincidentally exist. Use them only in test environments, never to register for real services, contact anyone or pass any verification.

Can I use the CEP to test address lookup?

Only for format and per-state range checks. The CEP is fictitious: it falls inside the state range but may not exist in the Correios (Brazilian postal service) database. If your test calls a CEP lookup service, expect “not found” and handle it, or mock the response.

How do I load a batch as seed data?

Set the Quantity, then Export JSON for a seed script (Prisma, Knex, Django fixtures, Rails) or Export CSV for PostgreSQL COPY or MySQL LOAD DATA. Keys match the field names: nome, sexo, nascimento, idade, cpf, rg, email, celular, cep, endereco, numero, bairro, cidade, uf.

Does fake data make staging LGPD-compliant?

It helps a lot: a test database with no real people in it is no longer a source of personal-data leaks. The LGPD still applies to production and to any real data that reaches test environments another way, such as logs or old dumps.

Sources

Related tools

Updated 2026-11-13 · Rafael Lima