Skip to main content

Checks grammar using LanguageTool.

Project description

language_tool_python: a grammar checker for Python 📝

This is a Python wrapper for LanguageTool. LanguageTool is open-source grammar tool, also known as the spellchecker for OpenOffice. This library allows you to make to detect grammar errors and spelling mistakes through a Python script or through a command-line interface.

Local and Remote Servers

By default, language_tool_python will download a LanguageTool server .jar and run that in the background to detect grammar errors locally. However, LanguageTool also offers a Public HTTP Proofreading API that is supported as well. Follow the link for rate limiting details. (Running locally won't have the same restrictions.)

Using language_tool_python locally

Local server is the default setting. To use this, just initialize a LanguageTool object:

import language_tool_python
tool = language_tool_python.LanguageTool('en-US')  # use a local server (automatically set up), language English

Using language_tool_python with the public LanguageTool remote server

There is also a built-in class for querying LanguageTool's public servers. Initialize it like this:

import language_tool_python
tool = language_tool_python.LanguageToolPublicAPI('es') # use the public API, language Spanish

Using language_tool_python with the another remote server

Finally, you're able to pass in your own remote server as an argument to the LanguageTool class:

import language_tool_python
tool = language_tool_python.LanguageTool('ca-ES', remote_server='')  # use a remote server API, language Catalan

Example usage

From the interpreter:

import language_tool_python
tool = language_tool_python.LanguageTool('en-US')
text = 'A sentence with a error in the Hitchhiker’s Guide tot he Galaxy'
matches = tool.check(text)

Check out some Match object attributes:

matches[0].ruleId, matches[0].replacements
('EN_A_VS_AN', ['an'])
matches[1].ruleId, matches[1].replacements
('TOT_HE', ['to the'])

Print a Match object:

Line 1, column 51, Rule ID: TOT_HE[1]
Message: Did you mean 'to the'?
Suggestion: to the

Automatically apply suggestions to the text:

'A sentence with an error in the Hitchhiker’s Guide to the Galaxy'

From the command line::

$ echo 'This are bad.' > example.txt

$ language_tool_python example.txt
example.txt:1:1: THIS_NNS[3]: Did you mean 'these'?


To install via pip::

$ pip install --upgrade language_tool_python

To overwrite the host part of URL that is used to download LanguageTool-{version}.zip::

- SET language_tool_python_DOWNLOAD_HOST = [alternate URL]


  • Python 3.3+ <>_ (or 2.7)
  • lib3to2 <>_ (if installing for Python 2)
  • LanguageTool <>_ (Java 6.0+)

The installation process should take care of downloading LanguageTool (it may take a few minutes). Otherwise, you can manually download <>_ and unzip it into where the language_tool_python package resides.

LanguageTool Version

As of April 2020, language_tool_python was forked from language-check and no longer supports LanguageTool versions lower than 4.0.


This is a fork of (which is a fork of that produces more easily parsable results from the command-line.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for language-tool-python, version 2.1.1
Filename, size File type Python version Upload date Hashes
Filename, size language_tool_python-2.1.1-py3-none-any.whl (17.5 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size language_tool_python-2.1.1.tar.gz (16.0 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page