CPF/CNPJ validator and formatter for NodeJS
npm install @julioakira/cpf-cnpj-utils
A zero-dependency simple toolkit to deal with CPFs and CNPJs written in Typescript. Now updated to support alphanumeric CNPJs
- yarn
```
yarn add @julioakira/cpf-cnpj-utils
- npm
``
npm i @julioakira/cpf-cnpj-utils
You can import or require CPF, CNPJ or both in your code.
`js
import { CPF, CNPJ } from '@julioakira/cpf-cnpj-utils'
const { CPF, CNPJ } = require('@julioakira/cpf-cnpj-utils');
`
Both CPF and CNPJ packages have the same functionalities:
- Format - Formats and unformatted CPF/CNPJ.
- Strip - Strips a formatted CPF/CNPJ.
- Validate - Validates a formatted or unformatted CPF/CNPJ.
- Generate - Generates a valid CPF/CNPJ.
`js
// Returns 30.306.294/0001-45
const formatted = CNPJ.Format('30306294000145');
// Returns 30306294000145
const stripped = CNPJ.Strip('30.306.294/0001-45');
// Generates a valid unformatted CNPJ
const cnpj = CNPJ.Generate()
// Generates a valid formatted CNPJ
const cnpj = CNPJ.Generate(true);
// Returns true for valid and false for invalid
const valid = CNPJ.Validate('30306294000145')
const valid = CNPJ.Validate('30.306.294/0001-45');
const invalid = CNPJ.Validate('30306294000155');
const invalid = CNPJ.Validate('30.306.294/0001-55');
`
`js
// Returns 606.772.720-06
const formatted = CPF.Format('60677272006');
// Returns 60677272006
const stripped = CPF.Strip('606.772.720-06');
// Generates a valid unformatted CPF
const cpf = CPF.Generate()
// Generates a valid formatted CNPJ
const cpf = CPF.Generate(true);
// Returns true for valid and false for invalid
const valid = CPF.Validate('60677272006')
const valid = CPF.Validate('606.772.720-06');
const invalid = CPF.Validate('40308985062');
const invalid = CPF.Validate('403.089.850-62');
`
Starting from july/2026, CNPJs might include alphanumeric characters. The validator and generator functions support them out of the box:
`js
// Returns "IH.NKO.M5D/DLZU-99"
const generated = CNPJ.Generate(true)
// returns true
const validated = CNPJ.Validate('IH.NKO.M5D/DLZU-99')
`
NOTE From versions below 2.0.0 the zero_pad argument is by default true. This was changed in versions above 2.0.0.
Some CPFs and CNPJs that use the pattern before july/2026 might have variable lengths and not be zero padded up to their regular length. The validate function has a optional zero_pad argument, which is false by default but can be manually set to true if desired:
`js
// CNPJ with 13 digits returns false
const valid = CNPJ.Validate('4307650002502');
// Setting auto zero padding to true returns true
const invalid = CNPJ.Validate('4307650002502', true);
`
`js
// CPF with 10 digits returns false
const valid = CPF.Validate('2204306240');
// Setting auto zero padding to true invalidates and returns true
const invalid = CNPJ.Validate('2204306240', true);
`
Tests are handled by Jest.
- yarn
``
yarn test
- npm
```
npm test