Elimina le righe duplicate da un CSV
Uno strumento che elimina le righe duplicate da un file CSV. Puoi togliere i doppioni identici o considerare duplicate le righe che coincidono su una sola colonna chiave — per esempio l’email o la partita IVA. Carichi il file, scegli il criterio e scarichi l’elenco senza ripetizioni, tutto nel tuo browser.
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
Duplicati identici o per colonna
Il modo più semplice è togliere le righe perfettamente uguali. Ma spesso un contatto è “doppio” perché compare due volte con la stessa email pur avendo altri campi diversi. Per questo puoi scegliere una o più colonne chiave — email, partita IVA, codice cliente — e considerare duplicata ogni riga che coincide su quelle. Decidi tu quanto stretto dev’essere il confronto.
Quale copia tenere
Quando trova dei doppioni, il KIT ne mantiene uno. Puoi scegliere se conservare la prima occorrenza — utile se le righe più in alto sono le più recenti — o l’ultima. Così non perdi le informazioni che ti interessano e togli solo le ripetizioni. Alla fine sai anche quante righe sono state rimosse, per avere il controllo sul risultato.
Solo doppioni identici, non simili
Questo strumento confronta i valori così come sono scritti: “Mario Rossi” e “Rossi Mario” restano due righe distinte, perché il testo è diverso. Va benissimo per doppioni esatti su un campo chiave. Se invece devi unire varianti scritte in modo diverso — abbreviazioni, ordine invertito, punteggiatura — serve un confronto semantico, che ragiona sul significato e non sui caratteri.
Casi d'uso
Anagrafica clienti doppia
Lo Studio Commercialista Bianchi ha un elenco dove alcuni clienti compaiono due volte con la stessa partita IVA. Deduplicando su quella colonna, ogni cliente resta una riga sola.
Lista email pulita
Una lista per la newsletter, raccolta da più moduli, ha indirizzi ripetuti. Rimossi i doppioni per email, eviti di scrivere due volte alla stessa persona.
Unione di più export
Dopo aver messo insieme i file di più mesi, restano righe identiche. Una passata di deduplica e l’elenco è di nuovo pulito.
Domande frequenti
Posso deduplicare solo per una colonna, ad esempio la partita IVA?
Sì: scegli una o più colonne chiave — partita IVA, email, codice cliente — e lo strumento considera duplicate le righe che coincidono su quelle, anche se gli altri campi differiscono.
Quale delle righe doppie viene tenuta?
Quella che scegli tu: la prima occorrenza o l’ultima. Al termine sai anche quante righe sono state rimosse, così hai il controllo del risultato.
Riconosce i nomi scritti in modo diverso?
No: confronta i valori così come sono scritti, quindi “Mario Rossi” e “Rossi Mario” restano distinti. Per unire le varianti serve un confronto semantico, che ragiona sul significato.
È gratis?
Nel browser sì, senza registrazione e senza limiti. Via API costa $0.002 a richiesta, prezzo pubblicato, senza abbonamento.
I dati vengono inviati a un server?
No: la deduplica avviene nel browser, sul tuo dispositivo. Anagrafiche e liste di contatti non lasciano il tuo computer.
Quanto può essere grande il file?
Fino a 25 MB nel browser, che coprono decine di migliaia di righe. Per volumi maggiori conviene la via API.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"text": "…"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.dedupe_csv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 25 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |