Como remover linhas duplicadas de um CSV
Esta ferramenta remove linhas duplicadas de arquivos CSV: você envia a planilha, escolhe quais colunas definem o que é "repetido" e baixa o arquivo sem as duplicatas. Grátis, direto no navegador, sem cadastro — e com o arquivo processado na sua máquina, sem subir para servidor nenhum.
Executar grátis
Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.
Duplicado nem sempre é a linha inteira igual
Às vezes a linha se repete por completo — aí qualquer filtro resolve. O caso difícil é outro: o mesmo cliente cadastrado duas vezes com telefones diferentes, o mesmo produto com descrições distintas. Por isso a ferramenta deixa você escolher as colunas-chave: marque só o e-mail, ou só o CPF, e linhas com essa coluna repetida contam como duplicata, mesmo que o resto seja diferente. Você decide se fica a primeira ou a última ocorrência de cada uma.
Como usar
Envie o CSV (separador por vírgula ou ponto e vírgula, detectado automaticamente), marque as colunas que definem a duplicata e rode. A ferramenta informa quantas linhas foram removidas e mostra o resultado antes do download — transparência para você conferir que só saiu o que devia sair. Maiúsculas, minúsculas e espaços nas pontas podem ser ignorados na comparação, para "[email protected] " e "[email protected]" contarem como a mesma pessoa.
Grátis no navegador, contínuo via API
O uso na página é grátis e ilimitado, sem cadastro; o arquivo não sai do seu navegador — importante quando a planilha carrega dados pessoais. Para desduplicar continuamente (toda lista que entra no sistema, todo arquivo de campanha), a mesma capacidade roda via API por US$ 0,002 por chamada, com arquivos de até 25 MB. E se as suas duplicatas são "parecidas mas não idênticas" — grafias diferentes do mesmo nome —, o KIT tem uma capacidade específica de deduplicação por semelhança.
Casos de uso
Higienizar a lista antes do disparo de e-mail
A base de contatos juntou inscrições do site, da loja e de eventos — e o mesmo e-mail aparece três vezes. Removendo duplicatas pela coluna de e-mail, ninguém recebe a campanha em triplicata e a taxa de descadastro agradece.
Unificar cadastros pelo CPF
No sistema da escola de cursos, alunos recadastrados geraram fichas repetidas. Usando o CPF como coluna-chave, Carlos Eduardo Souza reduz a base às fichas únicas antes da migração para o sistema novo.
Limpar o relatório consolidado de vendas
Ao juntar os CSVs das filiais de Recife e Belo Horizonte, alguns pedidos entraram duas vezes. A deduplicação pelo número do pedido devolve o total correto antes de o relatório chegar à diretoria.
Perguntas frequentes
Posso escolher qual linha fica quando há repetição?
Pode: a primeira ou a última ocorrência. Útil quando as linhas mais recentes têm os dados atualizados.
"MARIA SILVA" e "maria silva" contam como duplicata?
Você decide: dá para ignorar maiúsculas, minúsculas e espaços nas pontas na comparação. Com essa opção ligada, as duas contam como a mesma pessoa.
E se os nomes estiverem escritos de jeitos diferentes, tipo "José" e "Jose"?
Aí a comparação exata não alcança — esse é o território da deduplicação por semelhança, outra capacidade do KIT, que encontra registros parecidos sem serem idênticos.
A lista tem CPFs e e-mails. Os dados saem do meu computador?
Não: o processamento acontece no seu navegador, sem envio a servidor. Para dados pessoais sob a LGPD, isso elimina a discussão sobre compartilhamento.
Quanto custa?
Na página, nada — grátis, sem limite e sem cadastro. Via API, para desduplicar automaticamente, US$ 0,002 por chamada.
Tem limite de tamanho?
25 MB por arquivo — centenas de milhares de linhas de uma base de contatos típica.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/data/dedupe-csv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/dedupe-csv", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/dedupe-csv",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/dedupe-csv", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/dedupe-csv", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "…"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.dedupe_csv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_mb | 25 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |