LanguageTool est un correcteur grammatical open source qui détecte les fautes d'orthographe, de grammaire et de style dans plus de 20 langues. Contrairement aux correcteurs cloud (Grammarly, ProWritingAid), vous pouvez l'installer localement avec Docker et l'utiliser dans VS Code, votre navigateur ou via API sans envoyer vos textes à un tiers. Idéal pour la confidentialité des documents techniques, rapports ou documentation produit.
Ce guide vous permet d'installer LanguageTool en local (version 6.7, sortie octobre 2025) et de le configurer dans VS Code en 15 minutes. Prérequis : Docker installé + VS Code.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Installer LanguageTool 6.7 en local avec Docker Compose
- Configurer l'extension VS Code pour corriger en temps réel
- Utiliser l'API REST pour intégrer dans vos outils
- Comparer gratuit vs Premium (4,99€/mois pour reformulation IA)
Pourquoi LanguageTool en local ?
Section intitulée « Pourquoi LanguageTool en local ? »Vous vous demandez peut-être : pourquoi installer LanguageTool en local alors que les extensions navigateur cloud sont si simples ? La réponse dépend de vos besoins en confidentialité, coût et autonomie.
Avec une solution cloud (Grammarly, ProWritingAid...), chaque texte que vous corrigez est envoyé sur les serveurs de l'entreprise. Pour des emails personnels, ce n'est pas un problème. Mais pour de la documentation technique confidentielle, des rapports d'audit ou des contrats clients, c'est une fuite de données potentielle.
L'installation locale résout ce problème : vos textes ne quittent jamais votre machine. Vous gardez le contrôle total, sans limite de caractères, et gratuitement.
Les avantages du déploiement local
Section intitulée « Les avantages du déploiement local »Le tableau ci-dessous met en regard les deux approches sur cinq critères. Lisez la dernière ligne en premier : c'est le seul point où le local perd, et c'est un coût ponctuel de mise en place, pas une contrainte quotidienne. Les quatre autres lignes décrivent des avantages permanents. Gardez en tête que le comparatif porte sur le serveur LanguageTool auto-hébergé, pas sur l'extension navigateur officielle qui, elle, reste connectée au cloud par défaut.
| Critère | LanguageTool local | Cloud (Grammarly, etc.) |
|---|---|---|
| Confidentialité | ✅ Vos textes restent sur votre machine | ❌ Textes envoyés au cloud |
| Coût | ✅ Gratuit (version open source) | ⚠️ 12-30€/mois pour fonctions avancées |
| Limite d'usage | ✅ Illimité | ❌ Quotas de caractères |
| Langues | ✅ 20+ langues (français, anglais, allemand...) | ✅ Multilingue |
| Complexité | ⚠️ Installation Docker requise | ✅ Extension navigateur immédiate |
Détails des avantages :
-
Confidentialité : avec LanguageTool local, vos textes ne sont jamais transmis sur internet. Le serveur tourne sur votre machine (localhost). Idéal pour les environnements réglementés (santé, finance, défense).
-
Coût : la version open source de LanguageTool est 100% gratuite. Les solutions cloud (Grammarly Premium, ProWritingAid) coûtent entre 12 et 30€/mois pour débloquer la détection avancée.
-
Limite d'usage : pas de quota. Vous pouvez corriger un rapport de 100 000 mots sans abonnement. Les versions cloud gratuites limitent souvent à 400-500 caractères par vérification.
-
Complexité : le seul inconvénient : vous devez installer Docker et lancer un conteneur. Mais une fois configuré (15 minutes), c'est aussi simple qu'une extension navigateur.
Ce que LanguageTool détecte
Section intitulée « Ce que LanguageTool détecte »LanguageTool ne fonctionne pas comme un correcteur orthographique classique qui compare chaque mot à un dictionnaire. Il applique des règles de grammaire écrites en XML, complétées par des modèles statistiques, ce qui lui permet de repérer des mots correctement orthographiés mais mal employés. Les cinq familles de détection ci-dessous vont du plus fiable au plus discutable : les deux premières se trompent rarement, la cinquième relève du conseil de style que vous accepterez ou non selon votre registre.
-
Erreurs grammaticales : accords, conjugaisons, structures de phrases incorrectes
Exemple : "Les enfant jouent" → Correction : "Les enfants jouent"
-
Fautes d'orthographe : fautes de frappe, mots mal orthographiés
Exemple : "Je vais au écolee" → Correction : "Je vais à l'école"
-
Erreurs contextuelles : mots corrects mais mal employés
Exemple : "Leurs travaille est terminé" → Correction : "Leur travail est terminé"
-
Anglicismes et expressions inappropriées
Exemple : "Je suis confus" → Suggestion : "Je suis désolé" (si contexte d'excuse)
-
Améliorations stylistiques : phrases trop longues, répétitions, formulations passives
Exemple : "Le rapport a été rédigé par moi" → "J'ai rédigé le rapport"
Installation avec Docker Compose
Section intitulée « Installation avec Docker Compose »L'installation repose sur un seul conteneur : un serveur Java qui expose une API REST sur le port 8010. Tous les clients (VS Code, navigateur, vos scripts) parlent à cette même API, il n'y a ni base de données ni service annexe à déployer. Le schéma ci-dessous montre cette organisation : retenez surtout que le port 8010 est le seul point d'entrée, c'est lui que vous configurerez partout ensuite.
Prérequis
Section intitulée « Prérequis »- Docker : installer Docker
- Docker Compose : inclus avec Docker Desktop, ou installer séparément
- 2 Go de RAM minimum pour la JVM
Créer le fichier docker-compose.yml
Section intitulée « Créer le fichier docker-compose.yml »Créez un dossier languagetool et ajoutez-y ce fichier docker-compose.yml :
services: languagetool: image: erikvl87/languagetool:6.7@sha256:454acc9b3d232bdf37a0eddb1c8d0e93513ce41b914a8a374e3c44a884122364 container_name: LanguageTool restart: always ports: - 8010:8010 environment: - Java_Xms=512m # Heap minimum Java - Java_Xmx=1g # Heap maximum JavaLancer le serveur
Section intitulée « Lancer le serveur »Le premier démarrage télécharge l'image (plusieurs centaines de mégaoctets) puis charge les règles en mémoire, comptez une trentaine de secondes avant que l'API réponde. L'image embarque un HEALTHCHECK qui envoie une vraie requête de correction toutes les 30 secondes : c'est ce qui fait passer le conteneur à l'état healthy. Tant que docker ps affiche starting, le serveur n'est pas prêt et VS Code affichera des erreurs de connexion.
-
Placer vous dans le dossier contenant
docker-compose.yml -
Démarrer le conteneur :
Fenêtre de terminal docker compose up -dL'option
-dlance le conteneur en arrière-plan. -
Vérifier que le conteneur est démarré :
Fenêtre de terminal docker ps --filter "name=LanguageTool"Résultat attendu :
NAMES STATUS PORTSLanguageTool Up 1 minute (healthy) 0.0.0.0:8010->8010/tcp
Tester l'API REST
Section intitulée « Tester l'API REST »Pour vérifier que LanguageTool fonctionne, envoyez une requête de test :
curl -X POST \ --data "text=Je vais au écolee demain." \ --data "language=fr" \ http://localhost:8010/v2/checkRésultat attendu (extrait JSON) :
{ "software": { "name": "LanguageTool", "version": "6.7", "buildDate": "2025-10-24 09:23:16 +0000" }, "matches": [ { "message": "Faute de frappe possible trouvée.", "replacements": [ {"value": "école"}, {"value": "écoles"} ], "offset": 11, "length": 6 } ]}Configuration dans Visual Studio Code
Section intitulée « Configuration dans Visual Studio Code »Installer l'extension LanguageTool Linter
Section intitulée « Installer l'extension LanguageTool Linter »Plusieurs extensions portent un nom voisin dans le Marketplace. Celle utilisée ici est LanguageTool Linter, publiée par davidlday : c'est la seule qui sait pointer vers un serveur externe sans dépendre du service public. Vérifiez le nom de l'éditeur avant d'installer, une extension homonyme d'un autre auteur enverrait vos textes à l'API publique de languagetool.org, ce qui annulerait tout l'intérêt de l'installation locale.
- Ouvrez VS Code
- Allez dans l'onglet Extensions (
Ctrl + Shift + X) - Recherchez "LanguageTool Linter" (éditeur : davidlday)
- Cliquez sur Installer
Lien direct : LanguageTool Linter sur le Marketplace
Configurer l'extension pour utiliser le serveur local
Section intitulée « Configurer l'extension pour utiliser le serveur local »Un réglage mérite votre attention : languageToolLinter.external.url vaut http://localhost:8081 par défaut, parce que c'est le port historique du serveur LanguageTool. L'image Docker utilisée ici écoute sur 8010. Sans cette ligne, l'extension interroge un port où rien ne répond et reste silencieuse, sans message d'erreur visible. Le réglage serviceType vaut déjà external par défaut, mais l'écrire explicitement évite les mauvaises surprises si un paramétrage d'entreprise l'a modifié.
-
Ouvrir les paramètres JSON de VS Code :
- Palette de commandes :
Ctrl + Shift + P - Tapez :
Preferences: Open Settings (JSON)
- Palette de commandes :
-
Ajouter la configuration suivante :
{"languageToolLinter.serviceType": "external","languageToolLinter.languageTool.motherTongue": "fr","languageToolLinter.languageTool.language": "fr","languageToolLinter.external.url": "http://localhost:8010"} -
Redémarrer VS Code pour appliquer les changements
Utilisation dans VS Code
Section intitulée « Utilisation dans VS Code »L'extension ne traite que quatre types de documents : texte brut, Markdown, MDX et HTML. Elle n'analyse pas les commentaires d'un fichier Python ou Go, ne vous attendez donc pas à voir des soulignements dans votre code source. Par défaut, l'analyse se déclenche à l'enregistrement du fichier (lintOnSave), pas à la frappe : les options lintOnChange et lintOnOpen existent mais restent désactivées, la première pouvant saturer le serveur sur un gros document.
- Erreurs surlignées : toutes en jaune par défaut, la sévérité
warnings'appliquant à l'ensemble des règles - Suggestions au survol : passez la souris sur le texte surligné
- Correction en un clic : cliquez sur la suggestion pour appliquer
Pour distinguer visuellement les fautes d'orthographe (en rouge) des erreurs de grammaire et de typographie (en jaune), activez "languageToolLinter.diagnosticSeverityAuto": true et passez diagnosticSeverity à information.
Exemple visuel :

Utilisation dans les navigateurs
Section intitulée « Utilisation dans les navigateurs »Installation des extensions navigateur
Section intitulée « Installation des extensions navigateur »LanguageTool propose des extensions pour tous les navigateurs principaux. Important : ces extensions se connectent par défaut au cloud LanguageTool, pas à votre serveur local.
- Ouvrez le Chrome Web Store
- Cliquez sur "Ajouter à Chrome" (ou "Ajouter à Edge")
- L'icône LanguageTool apparaît dans la barre d'outils
- Ouvrez Firefox Add-ons
- Cliquez sur "Ajouter à Firefox"
- Confirmez l'installation
- Ouvrez le Mac App Store
- Recherchez "LanguageTool"
- Installez et activez dans les préférences Safari
Fonctionnement de l'extension
Section intitulée « Fonctionnement de l'extension »L'extension corrige automatiquement les textes saisis dans :
- Champs de formulaires web
- Éditeurs en ligne (Google Docs, Medium, WordPress...)
- Emails (Gmail, Outlook web)
Affichage des erreurs :
- Rouge : fautes d'orthographe
- Jaune : erreurs grammaticales
- Bleu : suggestions stylistiques
Gratuit vs Premium : que choisir ?
Section intitulée « Gratuit vs Premium : que choisir ? »Tableau comparatif
Section intitulée « Tableau comparatif »La ligne qui décide, dans la majorité des cas, est celle de la reformulation IA : c'est la seule fonction que le serveur auto-hébergé ne sait pas rendre, parce qu'elle s'appuie sur des modèles propriétaires hébergés chez l'éditeur. Tout le reste (grammaire, orthographe, détection de style de base) tourne à l'identique en local. Les tarifs indiqués sont ceux affichés sur le site de l'éditeur et évoluent régulièrement, vérifiez-les avant tout arbitrage budgétaire.
| Fonctionnalité | Gratuit (local) | Premium cloud |
|---|---|---|
| Correction grammaire/orthographe | ✅ Complète | ✅ Complète |
| Détection style | ✅ Basique | ✅ Avancée |
| Reformulation IA | ❌ Non | ✅ Illimitée |
| Limite caractères | ✅ Illimitée | ✅ 150 000 par champ |
| Confidentialité | ✅ 100% local | ❌ Cloud |
| Coût | ✅ Gratuit | 💰 4,99€/mois (59,89€/an) |
| Guide de style | ❌ Non | ✅ Oui |
| Support 20+ langues | ✅ Oui | ✅ Oui |
Recommandations
Section intitulée « Recommandations »Le critère de tri n'est pas le budget mais la nature du texte. Si ce que vous rédigez ne doit pas sortir de votre réseau (documentation d'architecture, rapport d'audit, post-mortem d'incident), l'arbitrage est tranché d'avance : le serveur local est la seule option acceptable, quel que soit le confort offert par le cloud. Le Premium ne se justifie que sur du contenu public où la reformulation apporte une vraie valeur éditoriale.
| Profil | Solution recommandée |
|---|---|
| Développeur / Ops rédigeant de la doc technique | ✅ Gratuit local (confidentialité + illimité) |
| Rédacteur pro cherchant reformulations IA | ✅ Premium (4,99€/mois) |
| Équipe (2-20 personnes) | ✅ Teams (56,90€/utilisateur/an) |
| Utilisation occasionnelle | ✅ Extension navigateur gratuite |
Dépannage
Section intitulée « Dépannage »Problèmes courants et solutions
Section intitulée « Problèmes courants et solutions »Le symptôme le plus déroutant n'est pas une erreur mais un silence : VS Code ne souligne rien et n'affiche aucun message. Dans ce cas, testez toujours l'API au curl avant de toucher aux réglages de l'éditeur. Si curl répond, le problème est côté extension (URL ou port) ; s'il ne répond pas, il est côté conteneur. Cette séparation vous évite de modifier au hasard des paramètres qui n'étaient pas en cause.
| Symptôme | Cause probable | Solution |
|---|---|---|
curl: (7) Failed to connect | Conteneur non démarré | docker compose up -d |
docker: command not found | Docker non installé | Installer Docker |
| Extension VS Code inactive | URL locale non configurée | Ajouter "languageToolLinter.external.url": "http://localhost:8010" |
| Pas de correction dans VS Code | Langue mal configurée | Vérifier "languageToolLinter.languageTool.language": "fr" |
| Conteneur redémarre en boucle | Mémoire insuffisante | Augmenter RAM Docker ou réduire heap Java |
Commandes de diagnostic
Section intitulée « Commandes de diagnostic »Exécutez ces quatre commandes dans l'ordre, elles vont du plus général au plus précis. Dans les logs, la ligne qui compte est celle du chargement des règles : tant que le serveur n'a pas terminé cette phase, il refuse les requêtes avec un timeout et non un message explicite. Un docker restart suffit à traiter la plupart des blocages, mais s'il faut le répéter plusieurs fois par jour, cherchez du côté de la mémoire allouée à la JVM plutôt que de continuer à redémarrer.
# Vérifier que le conteneur est en cours d'exécutiondocker ps --filter "name=LanguageTool"
# Voir les logs du conteneurdocker logs LanguageTool
# Tester l'API RESTcurl -X POST \ --data "text=Test de connexion." \ --data "language=fr" \ http://localhost:8010/v2/check
# Redémarrer le conteneurdocker restart LanguageToolBonnes pratiques
Section intitulée « Bonnes pratiques »Sécurité
Section intitulée « Sécurité »Le serveur LanguageTool n'a aucune authentification : toute machine capable de joindre le port 8010 peut lui soumettre du texte et consommer la mémoire de la JVM. Dans le docker-compose.yml donné plus haut, la directive ports: - 8010:8010 publie le service sur toutes les interfaces de la machine. Sur un poste connecté à un réseau partagé, remplacez-la par 127.0.0.1:8010:8010 pour restreindre l'écoute au bouclage local.
- Ne pas exposer le port 8010 sur internet : gardez LanguageTool en local (localhost uniquement)
- Pas de secrets dans les textes : même en local, évitez de copier des tokens/clés dans vos textes à corriger
- Pare-feu : si vous partagez sur le réseau local, filtrez l'accès par IP
Organisation
Section intitulée « Organisation »Un serveur LanguageTool est sans état : il ne stocke ni les textes soumis ni les corrections. Une instance partagée par une équipe entière ne pose donc pas de problème de cloisonnement des données, contrairement à un service cloud. En revanche, le dictionnaire personnalisé vit côté client, dans les réglages de l'extension VS Code, et n'est pas mutualisé : chacun maintient sa propre liste de termes métier.
- Un conteneur par équipe : déployez sur un serveur interne partagé (changez le port si multi-instances)
- Dictionnaire personnalisé : ajoutez vos termes techniques dans les paramètres de l'extension
- Ignorer certains fichiers : configurez VS Code pour exclure les fichiers générés (
.min.js,.lock)
Performance
Section intitulée « Performance »Deux leviers seulement, et ils n'agissent pas sur la même chose. Le heap Java conditionne la taille des documents traitables sans erreur mémoire ; les n-grammes améliorent la qualité de détection sur les mots corrects mais mal employés (confusions du type « ces » et « ses »), au prix d'un stockage important. Commencez sans n-grammes : ils n'apportent rien sur les fautes d'orthographe ordinaires et représentent plusieurs gigaoctets à conserver.
-
Heap Java : augmentez
Java_Xmxsi vous corrigez de très gros documents (> 50 000 mots) -
Ngrams (optionnel) : activez les modèles de langage pour détecter les confusions de mots. Comptez environ 1,8 Go pour le jeu français et 9 Go pour l'anglais :
environment:- langtool_languageModel=/ngramsvolumes:- ./ngrams:/ngrams:roDécompressez chaque archive dans un sous-dossier portant le code de la langue (
./ngrams/fr/,./ngrams/en/), sinon le serveur ne les charge pas. Téléchargez les jeux depuis LanguageTool.org
À retenir
Section intitulée « À retenir »- LanguageTool local garantit la confidentialité : vos textes ne quittent jamais votre machine
- Version 6.7 (octobre 2025) disponible via Docker
erikvl87/languagetool:6.7 - API REST sur le port 8010 : intégrable dans vos scripts et outils
- Extension VS Code : correction en temps réel avec configuration simple
- Gratuit vs Premium : version locale gratuite suffisante pour DevOps, Premium (4,99€/mois) pour reformulation IA
- 20+ langues supportées : français, anglais, allemand, espagnol, italien...