Compter les mots uniques d'un texte
Une phrase de 15 mots sur un chat et un tapis peut ne compter que 9 mots différents, avec l'article the répété 4 fois. Vous voyez le total, les mots uniques et les dix plus fréquents, sans distinction de majuscules. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Le compteur de mots uniques lit un texte et répond à deux questions à la fois : combien de mots distincts il contient lorsque la casse est ignorée, et quels mots le dominent. Vous obtenez le nombre total de mots, le nombre de mots uniques et une liste classée des dix mots les plus fréquents avec leur nombre exact d'occurrences. C'est le moyen le plus rapide de profiler un document avant de l'éditer, de l'indexer ou de l'analyser — un seul appel au lieu d'une formule de tableur ou d'un script jetable.
Ce que révèle le nombre de mots uniques
Le nombre brut de mots est un signal faible à lui seul. Un paragraphe de 500 mots composé de 480 mots différents ne se lit pas du tout comme un paragraphe qui répète les mêmes 40 mots douze fois chacun, et c'est la métrique compter les mots uniques qui distingue les deux.
Les rédacteurs s'en servent pour repérer les répétitions qu'ils ne remarquent plus ; les relecteurs, pour juger la richesse du vocabulaire ; les spécialistes du référencement, pour vérifier si une page couvre réellement un sujet ou tourne simplement autour d'une phrase. Cette fonctionnalité renvoie le nombre de mots uniques à côté du total, de sorte que le rapport entre les deux — souvent appelé diversité lexicale — n'est qu'à une soustraction.
Comme le comptage ne tient pas compte de la casse, une phrase qui s'ouvre sur « Le » et utilise ensuite « le » deux fois compte toujours comme un seul mot unique avec trois occurrences, ce qui correspond à ce que l'on entend presque toujours par « combien de mots différents un texte utilise ». Les nombres comptent aussi comme des mots : un rapport dense en chiffres est donc mesuré honnêtement plutôt que de voir la moitié de ses unités silencieusement écartées.
Comment les mots sont reconnus et classés
La segmentation tient compte d'Unicode : un mot est une suite de lettres ou de chiffres dans n'importe quelle écriture, éventuellement reliée par des apostrophes ou des traits d'union internes, de sorte que « l'amour » et « bien-être » comptent chacun comme un seul mot, tandis que la ponctuation, les emoji et les espaces servent de séparateurs. Chaque unité est convertie en minuscules avant d'entrer dans la table de fréquences, et la première forme rencontrée est celle affichée dans les résultats, ce qui préserve l'orthographe originale de votre texte.
La réponse liste les dix mots les plus fréquents par ordre de rang avec leur nombre exact d'occurrences ; en cas d'égalité, le mot apparu en premier dans le texte est mieux classé, ce qui garantit un résultat stable et reproductible pour une même entrée.
Où cela s'intègre dans les flux de travail réels
L'usage le plus courant est celui d'une étape de prétraitement peu coûteuse. Avant d'envoyer un document à un modèle onéreux ou à un relecteur humain, vous le profilez : est-il assez long, est-il répétitif, le vocabulaire correspond-il à ce que vous attendiez ? Les équipes de contenu y font passer leurs brouillons pour détecter la suroptimisation, lorsqu'un mot-clé apparaît cinquante fois dans mille mots.
Les responsables de localisation comparent les nombres de mots uniques des fichiers sources et traduits pour repérer les segments omis. Les développeurs qui construisent des fonctions de recherche ou d'étiquetage utilisent la liste des dix premiers mots comme extracteur de mots-clés de premier passage avant de passer à des outils plus lourds.
Cas d’usage
Mesurer la diversité lexicale d'un brouillon
Comparez les mots uniques au nombre total de mots pour repérer une écriture répétitive avant qu'un relecteur ne le fasse.
Profiler un contenu avant indexation
Extrayez les dix mots les plus fréquents comme mots-clés candidats pour un index de recherche ou un pipeline d'étiquetage.
Auditer la densité des mots-clés
Vérifiez si une expression cible domine une page au-delà de ce qui se lit naturellement, avec des nombres exacts plutôt que des suppositions.
Questions fréquentes
Combien cela coûte-t-il ?
L'outil est également gratuit dans votre navigateur sur cette page.
Le comptage tient-il compte de la casse ?
Non. « Mot », « mot » et « MOT » comptent comme le même mot unique ; le résultat affiche la première forme apparue dans votre texte.
Qu'est-ce qui compte comme un mot ?
Une suite de lettres ou de chiffres Unicode, éventuellement reliée par des apostrophes ou des traits d'union internes — ainsi « l'amour » et « bien-être » sont des mots uniques. Les nombres comptent aussi.
Pourquoi seulement le top 10 ?
La fonctionnalité renvoie les nombres total et unique pour l'ensemble du texte, plus les dix mots les plus fréquents comme profil compact. Cela couvre les cas d'usage courants de profilage sans transmettre un histogramme complet.
Le texte est-il conservé ?
Non. Il est traité en mémoire puis supprimé ; seuls les comptages sont renvoyés.
Outils associés
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/text/count-unique-words \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The cat sat on the mat. The cat was happy, and the mat was warm."}'const res = await fetch("https://api.kit.forhosting.com/text/count-unique-words", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The cat sat on the mat. The cat was happy, and the mat was warm."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/count-unique-words",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The cat sat on the mat. The cat was happy, and the mat was warm."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/count-unique-words", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The cat sat on the mat. The cat was happy, and the mat was warm."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The cat sat on the mat. The cat was happy, and the mat was warm."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/count-unique-words", 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": "The cat sat on the mat. The cat was happy, and the mat was warm."
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.count_unique_words",
"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_tokens | 20000 |
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. |
Notes techniques
Comment les mots sont reconnus et classés
Un texte qui ne contient aucune unité lexicale — par exemple uniquement de la ponctuation ou des emoji — est rejeté avec une erreur invalid_input au lieu de renvoyer un zéro trompeur, afin que les pipelines automatisés puissent distinguer un résultat vide d'une requête invalide.
Où cela s'intègre dans les flux de travail réels
Le même code qui alimente l'API s'exécute gratuitement dans votre navigateur sur cette page : vous pouvez coller un brouillon, vérifier son profil, et ne payer $0.002 par requête que lorsque vous l'intégrez dans un pipeline automatisé qui a besoin de la réponse par programme, à grande échelle, et pour chaque document traité.
Questions techniques
Que se passe-t-il avec un texte composé uniquement de ponctuation ?
Si le texte ne contient aucune unité lexicale, la requête échoue avec une erreur invalid_input et n'est pas facturée.