Supprimer les doublons d’un CSV
Cet outil retire les lignes en double d’un fichier CSV. Vous décidez sur quelle colonne juger de l’identité — l’adresse e-mail, un numéro de client, une référence — et l’outil ne conserve qu’une occurrence par valeur. De quoi assainir une liste sans écrire de formule Excel ni de macro.
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Les doublons exacts
Cet outil identifie les lignes identiques, à la valeur près, sur la ou les colonnes que vous désignez comme clé. Deux entrées portant la même adresse e-mail seront reconnues comme un doublon, et une seule sera conservée. Il s’agit d’une comparaison stricte : « [email protected] » et « [email protected] » peuvent être considérés comme distincts selon vos réglages de casse, un point à vérifier avant de lancer.
Choisir la colonne qui fait foi
Tout dépend de ce qui définit un doublon dans votre fichier. Sur une liste de contacts, c’est souvent l’e-mail ; sur un catalogue, la référence produit ; sur une base clients, un identifiant unique. Vous désignez cette colonne clé et l’outil s’y tient. Ce choix est décisif : dédoublonner sur la mauvaise colonne peut fusionner des entrées qui n’avaient rien à voir.
Quelle occurrence garder
Quand plusieurs lignes partagent la même clé, vous décidez laquelle conserver : la première rencontrée ou la dernière. C’est important si vos lignes ne sont pas rigoureusement identiques ailleurs — une adresse mise à jour, un champ complété plus tard. Toute l’opération se déroule dans votre navigateur, sur cette page ; le fichier n’est pas envoyé, ce qui protège une liste de contacts personnels.
Cas d’usage
Assainir une liste d’abonnés
Sophie Nguyen fusionne plusieurs exports de contacts et supprime les doublons sur la colonne e-mail avant d’importer la liste dans son outil d’envoi.
Nettoyer un catalogue
Atelier Garnier SARL retire les références produits saisies deux fois, en gardant la dernière version renseignée de chaque ligne.
Éviter les envois en double
Julien Lefèvre s’assure qu’aucun client ne recevra deux fois la même communication, en dédoublonnant sa base sur l’identifiant client.
Questions fréquentes
Sur quoi l’outil juge-t-il qu’une ligne est un doublon ?
Sur la ou les colonnes clés que vous désignez. Deux lignes partageant cette valeur sont considérées comme un doublon.
La casse est-elle prise en compte ?
Selon vos réglages, une majuscule peut rendre deux valeurs distinctes. Vérifiez ce point si vos données mélangent majuscules et minuscules.
Quelle ligne est conservée parmi les doublons ?
Celle que vous choisissez : la première rencontrée ou la dernière, utile quand les lignes diffèrent ailleurs.
Cet outil repère-t-il les valeurs seulement proches ?
Non, il traite les doublons exacts. Pour rapprocher des variantes comme « Sté » et « Société », un outil de dédoublonnage sémantique existe séparément.
Mes données sont-elles transmises à un serveur ?
Non, tout se passe localement dans votre navigateur ; rien n’est envoyé.
Est-ce gratuit ?
Oui, sans limite dans le navigateur ; l’usage programmable revient à $0.002 la requête.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"text": "…"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.dedupe_csv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
max_mb | 25 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |