Gerador de placa de veículos e conversor Mercosul

Este gerador sorteia placas de veículos no padrão Mercosul (ABC1D23) ou no antigo (ABC-1234) para testar cadastros, sistemas de estacionamento e de frota. Na mesma página, digite uma placa para conferir o formato e ver a equivalente no outro padrão: na conversão, o segundo número da placa antiga vira letra, com 0 = A, 1 = B e assim até 9 = J.

Atualizado em · Por Leonardo Gaertner

-


Achou um resultado errado ou tem uma sugestão? Avise por e-mail.

Como usar

  1. Escolha o formato, Mercosul ou antigo, e clique em "Gerar outra".
  2. Copie a placa para usar no teste.
  3. Para converter, digite uma placa no campo de baixo e veja a equivalente no outro padrão.

Como funciona

A placa antiga tem 3 letras e 4 números (ABC-1234). A do Mercosul tem 3 letras, 1 número, 1 letra e 2 números (ABC1D23). Quando um veículo troca de placa, a nova mantém tudo e só troca o segundo número por uma letra: 0 vira A, 1 vira B, 2 vira C, até 9, que vira J. Assim, ABC-1234 passa a ser ABC1C34.

O caminho de volta só existe quando a letra do meio vai de A a J. Uma placa como BRA2K19 já foi emitida no padrão Mercosul e não tem versão antiga. Placas sorteadas podem coincidir com as de veículos reais, por isso servem apenas para testes de software.

Conversões

ABC-1234 → ABC1C34

XYZ-9087 → XYZ9A87

BRA2E19 → BRA-2419

Fonte: Wikipédia: placas de identificação de veículos no Brasil

Como conferimos esta ferramenta

As placas geradas e a leitura de formato são comparadas com a biblioteca validation-br, e a conversão para o Mercosul é testada com os dez números da tabela. Veja como o site é testado.

Em código

Para aceitar os dois formatos de placa no seu sistema e guardar tudo no padrão Mercosul, confira o formato e converta a placa antiga:

JavaScript
// Confere a placa e converte a antiga (ABC-1234) para o Mercosul (ABC1C34):
// o segundo número vira letra, com 0 = A, 1 = B ... 9 = J.
const ANTIGA = /^[A-Z]{3}\d{4}$/;
const MERCOSUL = /^[A-Z]{3}\d[A-Z]\d{2}$/;

function paraMercosul(placa) {
  const p = placa.toUpperCase().replace(/[\s-]/g, '');
  if (MERCOSUL.test(p)) return p;
  if (!ANTIGA.test(p)) return null; // placa inválida
  return p.slice(0, 4) + 'ABCDEFGHIJ'[Number(p[4])] + p.slice(5);
}

console.log(paraMercosul('abc-1234')); // ABC1C34
Python
import re

ANTIGA = re.compile(r"^[A-Z]{3}\d{4}$")
MERCOSUL = re.compile(r"^[A-Z]{3}\d[A-Z]\d{2}$")


def para_mercosul(placa: str) -> str | None:
    p = re.sub(r"[\s-]", "", placa.upper())
    if MERCOSUL.match(p):
        return p
    if not ANTIGA.match(p):
        return None  # placa inválida
    return p[:4] + "ABCDEFGHIJ"[int(p[4])] + p[5:]


print(para_mercosul("abc-1234"))  # ABC1C34
PHP
<?php
function paraMercosul(string $placa): ?string
{
    $p = preg_replace('/[\s-]/', '', strtoupper($placa));
    if (preg_match('/^[A-Z]{3}\d[A-Z]\d{2}$/', $p)) {
        return $p;
    }
    if (!preg_match('/^[A-Z]{3}\d{4}$/', $p)) {
        return null; // placa inválida
    }
    return substr($p, 0, 4) . 'ABCDEFGHIJ'[(int) $p[4]] . substr($p, 5);
}

echo paraMercosul('abc-1234'), "\n"; // ABC1C34

Perguntas frequentes

Como converter uma placa antiga para Mercosul?

Troque o segundo número (o 5º caractere) pela letra correspondente: 0 = A, 1 = B, 2 = C, 3 = D, 4 = E, 5 = F, 6 = G, 7 = H, 8 = I e 9 = J. As letras e os outros números ficam iguais.

Placa Mercosul tem hífen?

Não. A placa Mercosul é escrita sem hífen (ABC1D23). O hífen era usado só nas placas antigas, cinza (ABC-1234). Em sistemas, o mais seguro é guardar sem hífen e em maiúsculas.

A placa gerada pertence a algum carro?

Pode pertencer por coincidência, porque o formato é o mesmo das placas reais. Use as placas geradas só em ambientes de teste e nunca para identificar veículos.