bateCarimbo.
Identidade

RG por estado e a nova CIN: por que não existe padrão nacional de RG e o que muda

Cada estado emite o RG com numeração e dígito verificador próprios. Entenda as variações, como modelar o campo em sistemas sem validar o DV genericamente, o que é a Carteira de Identidade Nacional e os prazos da transição.

Por · Publicado em · 12 min de leitura

Um formulário pede RG. O time aplica a máscara 00.000.000-0, copia de algum repositório uma função de dígito verificador e considera o campo resolvido. Semanas depois chegam três chamados: um cliente do Paraná não consegue concluir o cadastro, o RG de outro termina em X e a coluna do banco recusa, e uma mesma pessoa aparece duas vezes na base com números diferentes. Nenhum dos três é erro de implementação. Os três vêm da mesma premissa equivocada — a de que o RG é um documento nacional com um formato só.

O RG é estadual, e isso explica quase tudo

O CPF nasce de um cadastro nacional mantido por um único órgão, a Receita Federal. O Registro Geral não. Ele é atribuído pelo órgão de identificação de cada unidade federativa, que mantém a própria série numérica, define o próprio comprimento e decide se usa ou não dígito verificador. Não existe uma autoridade que coordene essas séries entre si.

A consequência prática é direta: o mesmo número pode existir em dois estados apontando para duas pessoas diferentes. A unicidade, quando existe, vale dentro do estado emissor. É por isso que o RG nunca aparece sozinho em um documento — vem sempre acompanhado do órgão e da sigla da unidade federativa, e é esse par que identifica de qual série o número saiu.

Quem emite: SSP, IIRGD, Polícia Civil e as variações de formato

Na maioria dos estados a emissão fica a cargo de um instituto de identificação vinculado à Polícia Civil, que por sua vez responde à Secretaria de Segurança Pública — daí a sigla SSP impressa na carteira. Em São Paulo, o órgão é o Instituto de Identificação Ricardo Gumbleton Daunt, o IIRGD, e o atendimento ao cidadão acontece pelos postos do Poupatempo. Outros estados usam siglas próprias, e há casos em que o serviço está sob o Detran em vez da SSP.

Some-se a isso o fato de que a carteira de identidade não é o único documento de identificação em circulação. Passaporte, CNH, carteiras de conselho de classe e carteiras funcionais também identificam o portador, e o número de qualquer um deles pode acabar digitado em um campo rotulado como RG. Um cadastro que assume o formato paulista está rejeitando essas entradas sem perceber.

O que varia de um estado para outro no campo RG
DimensãoVariação encontrada em cadastros reais
ComprimentoDe sete a dez caracteres, dependendo da série e da época de emissão
Dígito verificadorParte dos estados calcula um; outros não têm nenhum dígito de controle
LetrasO verificador pode ser X; há números que circulam com a sigla da UF na frente
MáscaraPontos e hífen em posições diferentes, ou nenhuma pontuação
Órgão emissorSSP, Detran, institutos de identificação, conselhos de classe
Zeros à esquerdaBases divergem entre gravar e descartar, mudando o comprimento do mesmo RG

Por que não existe validador universal de RG

Nenhum órgão nacional publica um algoritmo de dígito verificador para o RG, pela razão simples de que não há um número nacional de RG para verificar. Toda biblioteca que promete validar RG está, na prática, validando a convenção de um estado — quase sempre a de São Paulo — e chamando isso de validação genérica.

Isso muda o cálculo de risco do campo. Rejeitar um CPF com dígito verificador errado é seguro: a regra é nacional e determinística, e um falso negativo praticamente só acontece se a pessoa digitou errado. No RG, o falso negativo é o caso comum, e o custo dele é alto — você está bloqueando um cadastro legítimo por causa de um número que é válido no estado em que foi emitido. Esse é um dos erros mais frequentes em validadores de documentos brasileiros, e ele passa despercebido porque o time de desenvolvimento costuma testar com o próprio RG.

Dá para medir esse desperdício sem adivinhação. Instrumente o formulário registrando qual campo causou cada rejeição e, quando houver, a UF informada pelo usuário. Se as recusas de RG se concentram fora de São Paulo, o validador é o problema, não o preenchimento. É um gráfico que costuma encerrar a discussão sobre afrouxar a regra mais rápido do que qualquer argumento técnico.

O padrão SSP-SP, o mais implementado

A convenção paulista virou padrão de fato porque é a que a maioria dos validadores online implementa: oito dígitos de base, um dígito verificador calculado por módulo 11 com os pesos 2 a 9 aplicados da esquerda para a direita, e a máscara 00.000.000-0. Tomando a base 24598973:

Dígito verificador no padrão SSP-SP
CaracterePesoProduto
224
4312
5420
9545
8648
9763
7856
3927
Soma275

275 ÷ 11 → resto 0

Resto zero: 11 − 0 = 11, e o resultado 11 é convertido para 0.

Dígito verificador = 0

O RG completo fica 24.598.973-0. Há dois resultados que exigem tratamento explícito. Quando o resto é 0, a subtração devolve 11, que não cabe em uma posição e vira 0. Quando o resto é 1, a subtração devolve 10, que também não cabe — e a convenção é representá-lo pela letra X. A base 32773324 soma 166, cujo resto na divisão por 11 é 1, produzindo o RG 32.773.324-X.

Esse X é responsável por uma parte considerável dos problemas em produção. Ele quebra colunas numéricas, expressões regulares que só aceitam dígitos e conversões implícitas para inteiro. É também o motivo pelo qual o gerador de RG produz números terminados em X de vez em quando: se o seu formulário não aguenta um deles, é melhor descobrir isso em teste.

Uma pessoa pode ter vários RGs

Como cada estado mantinha a própria base e não havia consulta unificada entre elas, quem morou em mais de uma unidade federativa podia tirar uma carteira de identidade em cada uma, com números distintos e igualmente legítimos. Não é situação de exceção: aparece com frequência em bases grandes, e a própria pessoa muitas vezes não sabe qual dos números está gravado onde.

Para um sistema, isso produz duas falhas simétricas. Se o RG é usado como chave de identificação, a mesma pessoa entra duas vezes, com histórico dividido entre dois cadastros. Se o RG é usado para deduplicação, duas pessoas diferentes que carregam o mesmo número em estados distintos são fundidas em um registro só — um erro bem mais caro, porque mistura dados de titulares diferentes. A chave de identidade de pessoa física é o CPF; o RG é atributo descritivo.

Como modelar o campo RG em um sistema

A modelagem decorre de tudo o que foi dito acima. O número é texto, não número: zeros à esquerda são significativos e o verificador pode ser uma letra. Guardar em coluna inteira destrói informação de forma silenciosa e só aparece quando alguém tenta reimprimir o documento. Se o cadastro alimenta contratos ou documentos que reproduzem o RG como ele consta na carteira, guarde também a forma digitada pelo usuário, ao lado da normalizada — a pontuação original é a única pista de como aquele número aparece no papel.

O campo também não vive sozinho. Sem órgão emissor e unidade federativa, o número não identifica nada, porque não se sabe de qual série ele veio. A data de expedição é o terceiro item: como o RG pode ser reemitido, ela é o que permite distinguir vias e entender por que duas cópias do mesmo documento divergem. O conjunto mínimo é:

  • numero — texto, normalizado sem pontuação e com X em maiúscula;
  • orgao_emissor — texto curto, aceitando siglas fora da lista de SSPs;
  • uf_emissor — dois caracteres, sem valor padrão chutado;
  • data_expedicao — data, opcional na maioria dos cadastros.

Índice único sobre o número isolado está errado por construção. No máximo, unicidade sobre o par número e UF emissora — e ainda assim entendendo que essa restrição é uma heurística de qualidade de dados, e não a identidade da pessoa.

A validação segue a mesma lógica: verificar o que é seguro verificar e tratar o dígito como informação auxiliar. A função abaixo aceita qualquer RG plausível e só confere o verificador quando a UF declarada é SP, devolvendo o resultado como aviso em vez de rejeição.

TypeScript
const PESOS = [2, 3, 4, 5, 6, 7, 8, 9];

/** Remove pontuação e padroniza o X em maiúscula. */
export function normalizarRg(entrada: string): string {
  return entrada.replace(/[^0-9xX]/g, "").toUpperCase();
}

/** Dígito verificador na convenção da SSP-SP (8 dígitos de base). */
export function dvPadraoSp(base: string): string {
  const soma = [...base].reduce(
    (acc, char, i) => acc + Number(char) * PESOS[i],
    0,
  );
  const dv = 11 - (soma % 11);
  if (dv === 10) return "X";
  if (dv === 11) return "0";
  return String(dv);
}

type Resultado =
  | { aceito: false; motivo: string }
  | { aceito: true; dvConfere: boolean | null };

export function conferirRg(numero: string, uf?: string): Resultado {
  const valor = normalizarRg(numero);

  if (valor.length < 5 || valor.length > 14) {
    return { aceito: false, motivo: "comprimento implausível" };
  }
  if (valor.slice(0, -1).includes("X")) {
    return { aceito: false, motivo: "X só é aceito na última posição" };
  }

  // Fora do padrão paulista não há regra conhecida: aceita sem conferir.
  if (uf !== "SP" || valor.length !== 9) {
    return { aceito: true, dvConfere: null };
  }

  return { aceito: true, dvConfere: dvPadraoSp(valor.slice(0, 8)) === valor[8] };
}
Validação tolerante: o comprimento e o conjunto de caracteres bloqueiam; o dígito verificador apenas informa.

O dvConfere nulo é a parte importante da assinatura. Ele obriga quem chama a função a decidir o que fazer com a ausência de verificação, em vez de deixar um booleano falso circular como se fosse reprovação.

A Carteira de Identidade Nacional: o CPF como número único

O Decreto nº 10.977/2022 instituiu a Carteira de Identidade Nacional, a CIN, com uma decisão de projeto que resolve a raiz do problema: o número do documento passa a ser o CPF. A Lei nº 14.534/2023 completou o movimento ao estabelecer o CPF como número suficiente e único de identificação do cidadão nas bases de dados de serviços públicos.

A emissão continua sendo feita pelos mesmos institutos estaduais, mas sobre um modelo nacional. O efeito colateral é exatamente o que os sistemas precisavam: o identificador do documento de identidade deixa de ser uma série estadual isolada e passa a ser um número já nacional, já único e já verificável pelo mesmo módulo 11 que todo backend brasileiro implementa. O caso da pessoa com dois RGs perde o sentido, porque não há dois CPFs.

Nada disso apaga os números antigos. Carteiras emitidas há décadas continuam em circulação, contratos assinados as citam e bases legadas guardam o número como sempre guardaram. O ponto é outro: a migração que importa em um sistema não é trocar uma coluna por outra, é parar de tratar o RG como chave de pessoa e passar a tratá-lo como o que ele sempre foi, um número de documento. Essa mudança não depende de prazo nenhum e pode ser feita hoje.

O que muda para sistemas durante a transição

Enquanto os dois modelos convivem, um cadastro recebe três tipos de usuário: quem tem só a carteira antiga, quem já tem a CIN e quem tem as duas coisas em gavetas diferentes. Um campo RG obrigatório atende bem apenas o primeiro grupo.

  • Se você já coleta CPF, o RG não precisa ser obrigatório. Na maioria dos cadastros ele é redundante desde antes da CIN.
  • Prefira rotular o campo como documento de identidade, com um seletor de tipo, em vez de assumir que todo mundo vai digitar um RG.
  • Não aperte a validação. Quanto mais restritivo o campo, mais gente fica de fora conforme os formatos em circulação mudam.
  • Se houver alguma data de virada no seu processo, ela é configuração, e não constante compilada. O cronograma da transição foi ajustado ao longo do caminho, e o texto vigente do decreto é a única referência confiável para consultar — o link está nas fontes ao final.

Vale explicitar o que este guia não afirma: nenhum prazo específico de obrigatoriedade. Datas de corte circulam bastante em conteúdo de terceiros e mudam com frequência; colocá-las em regra de negócio é como gravar uma alíquota no código.

Massa de teste para cadastros que pedem RG

Para exercitar o campo sem manipular a identidade de ninguém, o caminho é usar números fictícios com verificador correto no padrão SSP-SP mais um conjunto deliberado de casos-limite. Os valores abaixo foram conferidos com a regra descrita acima.

Casos-limite para o campo RG
ValorO que ele exercita
24.598.973-0caso normal, resto 0 convertido em dígito 0
32.773.324-Xverificador X: quebra coluna numérica e regex só de dígitos
19.283.746-1resto 10 sem tratamento especial; pega código que trata 10 como erro
27.431.865-9segundo número válido, para testar deduplicação e importação
1234567comprimento fora do padrão paulista: precisa ser aceito sem cálculo de DV
24598973mesmo RG sem máscara: o formulário deve normalizar, não recusar

Para volume, o gerador de RG produz lotes no padrão SSP-SP com ou sem máscara. Quando o teste envolve a ficha inteira e o RG precisa conviver com CPF, endereço e data de nascimento coerentes, o gerador de pessoas monta o conjunto de uma vez. O que não entra em ambiente de teste, em nenhuma hipótese, é RG de gente de verdade — a LGPD aplicada a dados de teste trata justamente disso, e o número da carteira de identidade é dado pessoal como qualquer outro.

Fontes e referências

Ferramentas e guias relacionados