validation-br
A primeira biblioteca a inserir o suporte ao CNPJ alfanumérico
Biblioteca de validação de documentos pessoais do Brasil com suporte a CPF, CNPJ (numérico e alfanumérico), Título Eleitoral, PIS/PASEP, CNH.
Validation-BR também valida numerações de outros tipos de registros como RENAVAM, Processos Judiciais, Número de Protocolo do Governo Federal e Objetos registrados de Rastreamento dos Correios, além de permitir a criação de números fake para facilitar o desenvolvimento e testes, aplicar máscaras e calcular somente os dígitos verificadores.
Instalação
yarn add validation-br
npm install validation-br
Importação
Importação direta
const { isCPF, isCNPJ } = require('validation-br');
import { isCPF, isCNPJ } from 'validation-br';
Importação de submódulos
Importando os submódulos, é possível criar máscaras, números fake para testes de desenvolvimento e calcular dígitos verificadores.
As funções dos exemplos abaixo se aplicam a todos os tipos de documentos.
import { isCPF } from 'validation-br';
isCPF('01234567890');
isCPF('01234567891');
import { dv, fake, mask, validate } from 'validation-br/dist/cpf';
dv(906259666);
dv('906259666');
dv('906.259.666');
fake();
fake(true);
mask(90625966651);
normalize('906.259.666-51');
validateOrFail('01234567890');
Tabela de Conteúdo
Funções de Validação
Usando em outras bibliotecas de validação
Validation-BR pode ser utilizado em conjunto com quaisquer bibliotecas de validação que permita estender seus métodos.
Abaixo seguem alguns exemplos. Sinta-se convidado a adicionar a sua biblioteca favorita em nosso wiki.
- Vuelidate - Usado para validação de estado no vuejs
- Class-Validator - Usado em nest, typeorm E mais uma infinidade de frameworks
- Indicative - Indicative é a biblioteca padrão de validação usada no Adonis.
- Joi - Joi é um validador de esquemas usado em aplicações node, react, vue etc.
- Yup - Yup é usado para validar estado em aplicações react.
CNH
Valida o documento da carteira nacional de habilitação.
import { isCNH } from 'validation-br';
isCNH('69044271146');
isCNH('62472927637');
isCNH('46190476839');
import { validate, mask, normalize, fake, dv } from 'validation-br/dist/cnh';
validate('624729276-37');
validateOrFail('62472927637');
fake();
fake(true);
mask('62472927637');
normalize('624729276-37');
dv('624729276');
CNPJ
Valida um CNPJ numérico e alfanumérico.
Primeira biblioteca a inserir o suporte ao CNPJ alfanumérico.
A partir da Nota Técnica conjunta COCAD/SUARA/RFB nº 49 de 14 de maio de 2024, os números de CNPJ poderão ser alfanuméricos. A alteração entra em uso em 2026.
import { isCNPJ } from 'validation-br';
isCNPJ('73.797.980/0001-79');
isCNPJ('55585709000198');
isCNPJ('99362238000180');
import { validate, mask, dv, normalize, fake, validateOrFail } from 'validation-br/dist/cnpj';
validate('99362238000180');
validateOrFail('99362238000180');
fake();
fake(true);
fake({ withMask: true });
fake({ withMask: true, alphanumeric: true });
fake({ withMask: false, alphanumeric: true });
mask('99362238000180');
normalize('99.362.238/0001-80');
dv('993622380001');
CPF
Valida um CPF
import { isCPF } from 'validation-br';
isCPF('01234567890');
isCPF('012.345.678-90');
isCPF('01234567891');
import { validate, mask, dv, normalize, fake, validateOrFail } from 'validation-br/dist/cpf';
validate('01234567890');
validateOrFail('01234567890');
fake();
fake(true);
mask('01234567890');
normalize('012.345.678-90');
dv('012345678');
Processos Judiciais
Valida números de processo da esfera judicial. Esta padronização foi adotada em 2010 e de lá para cá todos os processos judiciais abertos no país seguem o mesmo padrão, seja eleitoral, cível, militar etc.
O número é composto por 6 partes:
-
Número sequencial dado pelo órgão de registro, reiniciado a cada ano, com até 7 caracteres
-
Dígito verificador com 2 caracteres
-
Ano de registro com 4 caracteres
-
Órgão do poder judiciário com 1 caractere, sendo eles:
- 1 - Supremo Tribunal Federal
- 2 - Conselho Nacional de Justiça
- 3 - Superior Tribunal de Justiça
- 4 - Justiça Federal
- 5 - Justiça do Trabalho
- 6 - Justiça Eleitoral
- 7 - Justiça Militar da União
- 8 - Justiça dos Estados e do Distrito Federal e Territórios
- 9 - Justiça Militar Estadual
-
Tribunal do segmento do poder judiciário com 2 caracteres
-
Código da unidade de origem do processo com 4 caracteres
import { isJudicialProcess } from 'validation-br';
isJudicialProcess('20802520125150049');
isJudicialProcess('0011006-07.2016.8.20.0100');
isJudicialProcess('00110060720168200101');
import {
validate,
mask,
dv,
normalize,
fake,
validateOrFail,
} from 'validation-br/dist/judicialProcess';
validate('00110060720168200100');
validateOrFail('00110060720168200100');
fake();
fake(true);
mask('00110060720168200100');
normalize('0011006-07.2016.8.20.0100');
dv('001100620168200100');
NUP-17
Válida um Número Unificado de Protocolo de 17 dígitos. Esta numeração é usada pelo Governo Federal como forma única de numerar processos em todas os órgãos do executivo.
- Os primeiros 5 dígitos correspondem código do órgão
- Os dígitos de 6 a 11 são um número sequencial dado pelo órgão em questão e é reiniciado a cada ano
- Os dígitos 12 a 15 representam o ano de registro do protocolo
- Os caracteres 16 a 17 são o dígito verificador
import { isNUP17 } from 'validation-br';
isNUP17('23037001462202165');
isNUP17('23037.001462/2021-65');
isNUP17('23037.001462/2021-66');
import { validate, mask, dv, normalize, fake, validateOrFail } from 'validation-br/dist/nup17';
validate('23037.001462/2021-65');
validateOrFail('23037.001462/2021-65');
fake();
fake(true);
mask('23037001462202165');
normalize('23037.001462/2021-65');
dv('230370014622021');
PIS
Valida códigos PIS, PASEP, NIS e NIT, que usam o mesmo algoritmo. Aceita números com e sem pontos e traços.
import { isPIS } from 'validation-br';
isPIS('71282677380');
isPIS('237.95126.95-5');
isPIS('500.12973.80-1');
import { validate, mask, dv, normalize, fake, validateOrFail } from 'validation-br/dist/pisPasep';
validate('71282677380');
validateOrFail('71282677380');
fake();
fake(true);
normalize('712.82677.38-0');
mask('71282677380');
dv('7128267738');
Código de Rastreamento Postal dos Correios
Valida um código de rastreamento de objetos postais no formato XX00000000DYY, onde:
- XX: O código do objeto postal com 2 dígitos;
- 00000000: Número sequencial do objeto com 8 dígitos;
- D: Dígito Verificador
- YY: País de origem do objeto com 2 dígitos.
import { isPostalCode } from 'validation-br';
isPostalCode('PN718252423BR');
isPostalCode('RY728187035CN');
isPostalCode('JT194624698BR');
import { validate, mask, dv, normalize, fake, validateOrFail } from 'validation-br/dist/postalCode';
validate('PN718252423BR');
validateOrFail('PN718252423BR');
fake();
fake(true);
mask('pn718252423br');
normalize('pn718252423br');
dv('PN718252423BR');
RENAVAM
Valida o número de um RENAVAM de 11 dígitos
import { isRenavam } from 'validation-br';
isRenavam('14283256656');
isRenavam('95059845976');
isRenavam('67747331626');
import { validate, mask, dv, normalize, fake, validateOrFail } from 'validation-br/dist/renavam';
validate('95059845976');
validateOrFail('95059845976');
fake();
fake(true);
normalize('9505984597-6');
mask('95059845976');
dv('950598459');
Título de Eleitor
Valida um título eleitoral
import { isTituloEleitor } from 'validation-br';
isTituloEleitor('743650641660');
isTituloEleitor('525028881694');
isTituloEleitor('153016161686');
import {
validate,
mask,
dv,
normalize,
fake,
validateOrFail,
} from 'validation-br/dist/tituloEleitor';
validate('01234567890');
validateOrFail('01234567890');
fake();
fake(true);
normalize('1530.1616.1686');
mask('525028881694');
dv('5250288816');
Testes
Todos os testes passando com 100% de cobertura

Github Actions
Github actions executados nas versões 18, 20 e 22 do Node.

Changelog
- 25/12/2025:
- 1.6.0
- Incluída a função normalize() que retorna o valor normalizado, somente números (ou letras maiúsculas quando couber).
- 16/12/2023:
- 1.5.0
- CNPJ alfanumérico
- Removidos github actions dos node 12, 14 e 16 e acrescentado o 22
- 16/12/2023:
- 1.4.5
- Corrige o caminho da definição dos types. (Thanks @ishigami)
- 30/12/2022:
- 1.4.4
- Correção de bug quando o documento válido tinha caracteres adicionais
- Refatoração de
clearValue() para comportar configurações opcionais
- 01/10/2022:
- 1.4.1
- Correção na importação principal dos módulos
- Refatoração do isJudicialProcess para permitir 100% de cobertura dos testes
- Inclusão de mais testes unitários para atingir 100% de cobertura
- 10/01/2022:
- 1.1.0 - Adicionado NUP17 - Número Unificado de Protocolo de 17 dígitos do Governo Federal
- 09/01/2022:
- 1.0.0 - Biblioteca convertida para Typescript e testes convertidos para Jest
- 08/01/2022:
- 0.21.1 - Adicionadas as funções isRenavam e isJudicialProcess
- 16/09/2021:
- 0.5.0 - Adicionadas as funções isCPF, isCNPJ e isTituloEleitor
- 0.7.0 - Adicionadas as funções isPostalCode e isCNH
- 0.8.0 - Adicionada a função isPIS
Referências