QuickUse Generator

Alphanumeric CNPJ Generator

Generate structurally valid CNPJs for testing — numeric, the new alphanumeric format, or a mix. Up to 50 at once, with or without mask. Test-only, 100% in your browser.

cnpjFor testing purposes only

CNPJs generated here follow the valid Receita Federal format but are NOT real registered CNPJs. Use them for QA, test fixtures and seed data — never for transactions or identity claims.

Using fake CNPJs for fraudulent purposes is a federal crime in Brazil (Art. 299 do Código Penal — falsidade ideológica + Art. 11 da Lei 8.137/1990 — crimes against the tax order).

Format
Between 1 and 50.

Editorial guide

About this generator

An honest technical read on what is happening behind the Generate button.

This tool generates structurally valid CNPJs — Brazil's company tax ID — for testing and development. Each number passes the official módulo 11 check, in the classic all-numeric form, the new alphanumeric form arriving in July 2026, or a mix of both, with or without the XX.XXX.XXX/XXXX-XX mask. Generate one or up to fifty at a time, copy them individually or as a list, and drop them straight into fixtures, seed data, or a form you are trying to break. They are valid by construction — and, just as importantly, they do not belong to any real company.

Valid by construction, not registered

A CNPJ has fourteen positions: a twelve-position base — an eight-position root plus a four-position branch identifier — followed by two numeric check digits. This generator draws the twelve base positions at random from the allowed alphabet and then computes the two check digits with the same módulo 11 routine Receita Federal uses, so every result is internally consistent and will pass any correct validator. What it cannot do is make the number real: structural validity says the arithmetic is right, not that Receita ever issued that number to a business. Treat every generated CNPJ as disposable test data, never as a stand-in for a genuine company. If you want to see the check-digit arithmetic worked out position by position, the check-digit calculator lays out every term; to confirm a number you already have, use the validator.

Why generate test CNPJs at all

Realistic identifiers are the awkward middle of test data. A hard-coded 11.111.111/1111-11 is rejected the moment any validation runs — Receita excludes repeated-digit numbers — yet inventing a number by hand almost never satisfies the check digit. So developers either disable validation in tests (and stop testing the thing they care about) or copy a real company's CNPJ off the internet (and quietly smuggle someone's actual identifier into a fixture). A generator that emits valid, obviously-fake numbers removes both temptations: signup flows, invoice forms, ERP imports, and contract templates can all be exercised with data that behaves like the real thing and carries no privacy baggage.

Three formats, for the 2026 coexistence

From July 2026 newly issued CNPJs can contain letters in the first twelve positions, while every existing numeric CNPJ stays valid forever. For a while your systems will see both. The format toggle exists for exactly that transition. Numeric produces the classic all-digit form, useful for regression-testing that nothing about the old format changed. Alphanumeric always includes at least one letter, so you are genuinely exercising the new code path rather than a number that happens to look numeric. Mixed emits a batch where each entry is independently numeric or alphanumeric — the closest thing to what a production database will actually hold during the coexistence period, and the best stress test for validation that must accept both.

The ambiguous-letter toggle

By default the generator avoids the visually ambiguous letters I O U Q F. This follows ENCAT's Nota Técnica Conjunta 2025.001, which recommended Receita not issue those letters to reduce transcription errors — a recommendation still pending confirmation, not a validation rule. Keeping the toggle on produces test data that matches the most likely real-world issuance, which is the safer default when you are testing a system that may adopt the same restriction. Turn it off and the generator draws from the full A-Z range, which is also perfectly valid: remember that a validator must accept those letters even though a generator does well to avoid them.

Using generated data responsibly

The point of fake data is to stay fake. Generated CNPJs are ideal for automated tests, demos, documentation, and seed databases; they are not a way to register a company, pass KYC, or stand in for due diligence, and presenting one as a real business identifier can amount to fraud. Under the LGPD a CNPJ is a low-sensitivity business identifier rather than personal data, but the same discipline that keeps real CPFs out of your fixtures applies here: generate fresh fake numbers rather than recycle real ones. A new batch costs nothing and leaves no trace, so there is never a reason to hold on to a real identifier for convenience. Everything runs entirely in your browser — nothing is sent to a server, and the tool stores only your generation settings locally, never the numbers themselves. For the full picture of the rollout and what it means for your stack, see our guide on what changes with the alphanumeric CNPJ.

Frequently asked questions

How do I generate a valid alphanumeric CNPJ?

Choose a format (numeric, alphanumeric, or mixed), set how many you want, and click Generate. The tool builds the twelve base positions at random and computes the two check digits with the official módulo 11 routine, so each result is structurally valid. Toggle the mask on or off, and copy any single number or the whole list at once.

Are these CNPJs real companies?

No. They are valid by construction — the arithmetic of the check digit is correct — but they are not registered with Receita Federal and do not correspond to any real business. They are for testing, demos, and seed data only. Presenting a generated CNPJ as a genuine company identifier can constitute fraud.

Why not just hard-code a CNPJ in my tests?

Two reasons. A repeated-digit placeholder like 11.111.111/1111-11 is rejected by any correct validator because Receita excludes those numbers, so it cannot exercise a real validation path. And a number you find online belongs to an actual company — copying it into a fixture quietly imports someone's real identifier. A generator gives you numbers that are valid and obviously disposable.

What is the difference between the three formats?

Numeric produces the classic all-digit CNPJ. Alphanumeric always includes at least one letter in the first twelve positions, so it genuinely exercises the new format. Mixed generates a batch where each entry is independently numeric or alphanumeric — the realistic shape of a database during the 2026 coexistence period, and the best test for validation that must accept both.

Why does it avoid the letters I, O, U, Q and F by default?

ENCAT (Nota Técnica Conjunta 2025.001) recommended that Receita avoid issuing those visually ambiguous letters to cut down transcription errors. That is a pending recommendation, not a validation rule, so the option is a soft default: leaving it on matches the most likely real-world issuance. Turn it off to draw from the full A-Z range, which is also perfectly valid.

Can I use these for KYC, signups, or official filings?

No. Generated CNPJs are fake by design and must never be used to register a company, pass identity verification, or stand in for due diligence. Their purpose is the opposite: to let you test and demonstrate systems without touching any real company's data.

How do I test that my system handles the new format?

Generate a mixed batch and feed it through your validation, storage, and display paths. Watch for a numeric-only check such as a ^\d{14}$ regular expression or an integer column — those reject valid alphanumeric CNPJs. You can confirm any generated number with the validator and see its check-digit math in the calculator.

Is anything sent to a server or stored?

No. Generation runs entirely in your browser. The generated numbers are never persisted or transmitted; the tool keeps only your generation settings (format, quantity, mask, ambiguous toggle) in local storage so it can offer them again, and you can clear that at any time.