Sua biblioteca brasileira para formatar e validar CPF, CNPJ, CEP e telefones sem dor de cabeça! / Your go-to Brazilian library for formatting and validating CPF, CNPJ, ZIP codes and phones hassle-free!
Uma biblioteca TypeScript super leve e modular que te ajuda a trabalhar com dados brasileiros na sua aplicação. Chega de quebrar a cabeça com formatação e validação de CPF, CNPJ, CEP e telefones!
npm install br-data-utils// Importa só o que você precisa (melhor pro bundle size)
import { formatCPF, validateCPF } from 'br-data-utils/cpf';
import { formatCNPJ, validateCNPJ } from 'br-data-utils/cnpj';
import { formatCEP, validateCEP } from 'br-data-utils/cep';
import { formatTelefoneFixo, validateTelefoneFixo } from 'br-data-utils/telefone-fixo';
import { formatTelefoneMovel, validateTelefoneMovel } from 'br-data-utils/telefone-movel';
// CPF
const cpfFormatado = formatCPF('12345678901'); // '123.456.789-01'
const cpfValido = validateCPF('123.456.789-01'); // true
// CNPJ
const cnpjFormatado = formatCNPJ('11222333000181'); // '11.222.333/0001-81'
const cnpjValido = validateCNPJ('11.222.333/0001-81'); // true
// CEP
const cepFormatado = formatCEP('12345678'); // '12345-678'
const cepValido = validateCEP('12345-678'); // true
// Telefone Fixo
const foneFixoFormatado = formatTelefoneFixo('1131234567'); // '(11) 3123-4567'
const foneFixoValido = validateTelefoneFixo('(11) 3123-4567'); // true
// Telefone Móvel
const foneMovelFormatado = formatTelefoneMovel('11987654321'); // '(11) 98765-4321'
const foneMovelValido = validateTelefoneMovel('(11) 98765-4321'); // true// Importa tudo de uma vez
import {
formatCPF, validateCPF,
formatCNPJ, validateCNPJ,
formatCEP, validateCEP,
formatTelefoneFixo, validateTelefoneFixo,
formatTelefoneMovel, validateTelefoneMovel
} from 'br-data-utils';A biblioteca foi pensada para ser modular e performática:
src/
├── index.ts # Ponto central de exportação
├── cpf.ts # Roteamento direto CPF
├── cnpj.ts # Roteamento direto CNPJ
├── cep.ts # Roteamento direto CEP
├── modules/ # Módulos principais
│ ├── cpf.ts # Lógica de CPF
│ ├── cnpj.ts # Lógica de CNPJ
│ ├── cep.ts # Lógica de CEP
│ ├── telefone-fixo.ts # Lógica de telefone fixo
│ └── telefone-movel.ts # Lógica de telefone móvel
└── types/ # Tipos TypeScript
└── jest.d.ts # Tipos para testes
- CPF: Algoritmo oficial com dígitos verificadores e bloqueio de sequências óbvias (111.111.111-11, etc.)
- CNPJ: Algoritmo oficial com dígitos verificadores e validação de sequências inválidas
- CEP: Valida formato de 8 dígitos e bloqueia CEPs impossíveis
- Telefone Fixo: Valida DDDs brasileiros reais e formato de 10 dígitos
- Telefone Móvel: Valida DDDs, formato de 11 dígitos e prefixos válidos (começa com 9)
formatCPF(cpf: string): string | null- Formata CPF ou retorna null se inválidovalidateCPF(cpf: string): boolean- Valida CPF usando algoritmo oficial
formatCNPJ(cnpj: string): string | null- Formata CNPJ ou retorna null se inválidovalidateCNPJ(cnpj: string): boolean- Valida CNPJ usando algoritmo oficial
formatCEP(cep: string): string | null- Formata CEP ou retorna null se inválidovalidateCEP(cep: string): boolean- Valida formato do CEP
formatTelefoneFixo(telefone: string): string | null- Formata telefone fixo ou retorna null se inválidovalidateTelefoneFixo(telefone: string): boolean- Valida telefone fixo
formatTelefoneMovel(telefone: string): string | null- Formata telefone móvel ou retorna null se inválidovalidateTelefoneMovel(telefone: string): boolean- Valida telefone móvel
- TypeScript: Type safety pra não ter erro bobo
- ESM: Módulos ES6 modernos
- Zero dependências: Nenhum pacote externo pra não pesar seu bundle
- Testes automatizados: Cobertura completa com Jest
- Tree-shaking friendly: Importe só o que usar
- Leve: Zero dependências de produção
- Modular: Importe só o que precisa
- TypeScript: Autocompletar e segurança de tipos
- Testada: 37+ testes cobrindo todos os casos edge
- Atualizada: Segue as regras mais recentes de validação brasileiras
A super lightweight and modular TypeScript library that helps you work with Brazilian data in your application. No more headaches with formatting and validating CPF, CNPJ, ZIP codes and phone numbers!
npm install br-data-utils// Import only what you need (better for bundle size)
import { formatCPF, validateCPF } from 'br-data-utils/cpf';
import { formatCNPJ, validateCNPJ } from 'br-data-utils/cnpj';
import { formatCEP, validateCEP } from 'br-data-utils/cep';
import { formatTelefoneFixo, validateTelefoneFixo } from 'br-data-utils/telefone-fixo';
import { formatTelefoneMovel, validateTelefoneMovel } from 'br-data-utils/telefone-movel';
// CPF (Brazilian individual taxpayer ID)
const formattedCPF = formatCPF('12345678901'); // '123.456.789-01'
const isCPFValid = validateCPF('123.456.789-01'); // true
// CNPJ (Brazilian company ID)
const formattedCNPJ = formatCNPJ('11222333000181'); // '11.222.333/0001-81'
const isCNPJValid = validateCNPJ('11.222.333/0001-81'); // true
// CEP (ZIP code)
const formattedCEP = formatCEP('12345678'); // '12345-678'
const isCEPValid = validateCEP('12345-678'); // true
// Landline Phone
const formattedLandline = formatTelefoneFixo('1131234567'); // '(11) 3123-4567'
const isLandlineValid = validateTelefoneFixo('(11) 3123-4567'); // true
// Mobile Phone
const formattedMobile = formatTelefoneMovel('11987654321'); // '(11) 98765-4321'
const isMobileValid = validateTelefoneMovel('(11) 98765-4321'); // true// Import everything at once
import {
formatCPF, validateCPF,
formatCNPJ, validateCNPJ,
formatCEP, validateCEP,
formatTelefoneFixo, validateTelefoneFixo,
formatTelefoneMovel, validateTelefoneMovel
} from 'br-data-utils';The library was designed to be modular and performant:
src/
├── index.ts # Central export point
├── cpf.ts # Direct CPF routing
├── cnpj.ts # Direct CNPJ routing
├── cep.ts # Direct CEP routing
├── modules/ # Main modules
│ ├── cpf.ts # CPF logic
│ ├── cnpj.ts # CNPJ logic
│ ├── cep.ts # CEP logic
│ ├── telefone-fixo.ts # Landline phone logic
│ └── telefone-movel.ts # Mobile phone logic
└── types/ # TypeScript types
└── jest.d.ts # Test types
- CPF: Official algorithm with check digits and blocks obvious sequences (111.111.111-11, etc.)
- CNPJ: Official algorithm with check digits and invalid sequence validation
- CEP: Validates 8-digit format and blocks impossible ZIP codes
- Landline Phone: Validates real Brazilian DDDs and 10-digit format
- Mobile Phone: Validates DDDs, 11-digit format and valid prefixes (starts with 9)
formatCPF(cpf: string): string | null- Formats CPF or returns null if invalidvalidateCPF(cpf: string): boolean- Validates CPF using official algorithm
formatCNPJ(cnpj: string): string | null- Formats CNPJ or returns null if invalidvalidateCNPJ(cnpj: string): boolean- Validates CNPJ using official algorithm
formatCEP(cep: string): string | null- Formats CEP or returns null if invalidvalidateCEP(cep: string): boolean- Validates CEP format
formatTelefoneFixo(telefone: string): string | null- Formats landline or returns null if invalidvalidateTelefoneFixo(telefone: string): boolean- Validates landline phone
formatTelefoneMovel(telefone: string): string | null- Formats mobile or returns null if invalidvalidateTelefoneMovel(telefone: string): boolean- Validates mobile phone
- TypeScript: Type safety to avoid silly mistakes
- ESM: Modern ES6 modules
- Zero dependencies: No external packages to weigh down your bundle
- Automated tests: Complete coverage with Jest
- Tree-shaking friendly: Import only what you use
- Lightweight: Zero production dependencies
- Modular: Import only what you need
- TypeScript: Autocomplete and type safety
- Well-tested: 37+ tests covering all edge cases
- Up-to-date: Follows the latest Brazilian validation rules
Contribuições são super bem-vindas! Só abrir uma PR ou issue. / Contributions are super welcome! Just open a PR or issue.