Remover acentos do texto

Esta ferramenta remove os acentos e a cedilha de um texto, trocando cada letra pela versão sem acento: á, à, â e ã viram a, ç vira c, ü vira u. O restante, como pontuação, números e emojis, fica igual. É útil para gerar nomes de arquivo, logins, comparar nomes e preparar dados para sistemas que não aceitam acentos.

Atualizado em · Por Leonardo Gaertner

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

Como usar

  1. Digite ou cole o texto.
  2. Se quiser manter o ç, marque a opção.
  3. Copie o resultado.

Como funciona

No Unicode, uma letra acentuada pode ser decomposta em letra base mais um sinal combinante: á é a + acento agudo. A ferramenta faz essa decomposição (a forma NFD) e apaga só os sinais de acentuação, o que funciona para o português e para os outros idiomas que usam o alfabeto latino, como ü, ñ e å.

Algumas letras não se decompõem e são trocadas diretamente: ø vira o, æ vira ae, ß vira ss e ł vira l. Letras de outros alfabetos, como o grego e o cirílico, não viram letras latinas: perdem só os acentos, se tiverem.

Exemplo

Texto: São Paulo, Ceará e Piauí

Sem acentos: Sao Paulo, Ceara e Piaui

Fonte: Unicode UAX #15: formas de normalização (NFC e NFD)

Em código

Para remover acentos em código, decomponha o texto na forma NFD, que separa a letra do acento, e apague os acentos. É o mesmo princípio da ferramenta.

JavaScript
// Remove acentos e cedilha: "Ação" vira "Acao".
function removerAcentos(texto) {
  // NFD separa a letra do acento (á vira a + ´); depois, os acentos saem.
  return texto.normalize('NFD').replace(/[̀-ͯ]/g, '').normalize('NFC');
}

console.log(removerAcentos('São Paulo, Ceará e Piauí')); // Sao Paulo, Ceara e Piaui
Python
import unicodedata


def remover_acentos(texto: str) -> str:
    """Remove acentos e cedilha: "Ação" vira "Acao"."""
    # NFD separa a letra do acento (á vira a + ´); depois, os acentos saem.
    decomposto = unicodedata.normalize("NFD", texto)
    sem_acentos = "".join(c for c in decomposto if not unicodedata.combining(c))
    return unicodedata.normalize("NFC", sem_acentos)


print(remover_acentos("São Paulo, Ceará e Piauí"))  # Sao Paulo, Ceara e Piaui
PHP
<?php
// Remove acentos e cedilha: "Ação" vira "Acao". Usa a extensão intl.
function removerAcentos(string $texto): string
{
    // NFD separa a letra do acento (á vira a + ´); depois, os acentos saem.
    $decomposto = Normalizer::normalize($texto, Normalizer::FORM_D);
    return Normalizer::normalize(preg_replace('/\p{Mn}/u', '', $decomposto), Normalizer::FORM_C);
}

echo removerAcentos('São Paulo, Ceará e Piauí'), PHP_EOL; // Sao Paulo, Ceara e Piaui

Precisa da extensão intl, que costuma vir ativada.

Perguntas frequentes

Remover acentos basta para criar um link ou nome de arquivo?

Não. Também é preciso trocar espaços por hífen, passar para minúsculas e tirar símbolos. O guia sobre como gerar slug de URL, na seção de guias do PraDev, mostra o passo a passo em JavaScript, Python e PHP.

Por que comparar nomes sem acento?

Porque o mesmo nome pode chegar escrito de jeitos diferentes, como José e Jose. Comparar as versões sem acento e em minúsculas evita cadastros duplicados e buscas que não acham nada.

O texto que eu colo é enviado para algum lugar?

Não. A troca é feita no seu navegador, e o texto não sai do seu dispositivo.