induwara.lk
induwara.lkAI · Text

Free AI Grammar Checker — Server-Side, No Signup

Paste any English paragraph — essay draft, email, cover letter, blog intro — and get a corrected version side-by-side with the original, each edit highlighted and labelled. The LanguageTool v2 engine runs on our server; the page stays light and the page bundle never ships model weights.

By Induwara AshinsanaUpdated May 12, 2026
Check grammarLanguageTool v2 · server-side
Sources cited
Text is sent once to the LanguageTool v2 engine for checking and not stored.305 / 4,000

Correction strength

English variant

Restore capitalised words (place names, brands) if the engine rewrites them.
Try a sample
Two passes run in one click: the LanguageTool v2 engine (server-side) and a deterministic rule baseline for a transparent cross-check.

What this does

Reads any English text and produces a corrected version with every change highlighted: insertions in green, deletions in red, replacements in amber. Each edit is labelled (article, preposition, agreement, tense, spelling, capitalisation, punctuation, word-order, other) with a one-line rule of thumb. LanguageTool v2 runs server-side; the deterministic rule baseline runs alongside it for a transparent cross-check.

Methodology: LanguageTool v2's ~5,000-rule engine (open-source, LGPL-2.1) running on the public Web API, cross-checked against a deterministic rule baseline (a/an phonetic rule, sentence-initial capitalisation, standalone "i"→"I", whitespace clean-up). Sources linked under “Sources” below.

How it works

Two independent passes run on the same input. They use very different methods, and watching them agree (or disagree) is the fastest way to judge whether a single correction is trustworthy.

1. LanguageTool v2 engine (server-side)

The primary corrector is LanguageTool v2, an open-source proof-reading engine bundling roughly 5,000 hand-curated grammar, style and spelling rules across 30+ languages, plus statistical n-gram detectors for confusable word pairs. We call the public Web API (https://api.languagetool.org/v2/check) from a server-only Next.js route handler. The browser never downloads dictionaries or rule files — the only payload it sends is your text, and the only payload it receives is a small JSON result with the corrected text and an edit list.

The response is a list of match objects, each with a character offset, a length, one or more candidate replacements, and a rule category. The route applies the first replacement of every non-overlapping match in offset order, then post-processes for spelling variant and proper-noun preservation. The three correction presets map directly to engine flags and our match filters:

  • Conservative — level=default, skip stylistic=yes, max replace ratio=0.6.
  • Standard — level=default, skip stylistic=no, max replace ratio=1.5.
  • Aggressive — level=picky, skip stylistic=no, max replace ratio=none.

With Preserve proper nounson, any token that was capitalised in the source — and was not sentence-initial — is restored verbatim if the engine rewrote it. That keeps Sri Lankan place names (Ratnapura, Polonnaruwa, Buttala) and brand names intact even when they fall outside the engine's dictionary.

2. Deterministic rule baseline

The second pass is a small hand-written corrector that applies only transformations whose correctness is uncontroversial: standalone lowercase "i" → "I", sentence-initial capitalisation, "a"/"an" agreement before vowel- and consonant-sound tokens, runs of whitespace collapsed, and spaces before sentence punctuation removed. It has zero dependencies, runs in microseconds, and is shown beside the engine output so you can see which edits a rule book could agree on — anything fixed beyond that line required the engine.

3. Edit highlighting and classification

Once both passes are done, the tool runs a longest-common-subsequence diff (Myers, 1986) at the whitespace-token level between original and final corrected text. Adjacent deletions/insertions are coalesced into replace segments, rendered in the tracked- changes view as colour-coded marks (red strikethrough for removals, green for insertions, amber for replacements). A rule-based classifier then labels each edit with one of nine categories: article, preposition, agreement, tense, spelling, capitalisation, punctuation, word-order, or other. Each edit ships with a one-line rule of thumb so the tool is educational as well as corrective.

4. Validation and limits

Inputs shorter than 5 characters are rejected with a friendly message — a single word doesn't need a grammar check. Inputs longer than 4,000 characters are rejected to stay well within LanguageTool v2's public-tier rate limit (20 requests/min, 20,000 chars/request). For longer pieces, split the source into paragraphs and check each separately — accuracy is actually higher on shorter, more topical passages because rules and n-gram statistics weigh nearby context.

The LanguageTool v2 engine is stateless: every call is independent and we send no identifiers. If the engine is rate-limited or unreachable, the deterministic baseline is still returned, so the page never shows a dead state.

Worked examples

Example 1 — common L2 errors (tense + article)

Before

I am working at this company since 2020 and I am responsible for the marketing.

After

I have been working at this company since 2020 and I am responsible for marketing.

  1. POST to /api/tools/grammar with mode=standard, variant=general.
  2. LanguageTool returns 2 matches: TENSE_AGREEMENT_WITH_SINCE (offset 2, len 10) and EN_THE_REDUNDANT_BEFORE_ABSTRACT (offset 67, len 14).
  3. Engine pass: "am working" → "have been working" (tense — present perfect continuous with "since").
  4. Engine pass: removed "the" before "marketing" (article — no article with abstract uncountable activity).
  5. Rule baseline produces 0 edits — neither change is in the baseline's rulebook. Both required the engine.

Example 2 — Sri Lankan place name + multiple error types

Before

ratnapura is famous for it's gems and have a old colonial railway station.

After

Ratnapura is famous for its gems and has an old colonial railway station.

  1. POST with mode=standard, variant=general, preserveProperNouns=true.
  2. Engine returns 4 matches: UPPERCASE_SENTENCE_START, ITS, HE_VERB_AGR (have → has), EN_A_VS_AN.
  3. All four replacements applied in offset order.
  4. Proper-noun guard: source had no other capitalised tokens to preserve, so no restoration needed.
  5. Rule baseline catches edits 1 (capitalisation of sentence start) and 4 (a/an); the engine adds edits 2 (its) and 3 (has). Divergence shows where engine judgement adds value.

Example 3 — clean sentence, expected 0 edits

Before

The Sri Lankan Premier League final will be played on 5 May 2026 at the R. Premadasa Stadium in Colombo.

After

The Sri Lankan Premier League final will be played on 5 May 2026 at the R. Premadasa Stadium in Colombo.

  1. POST with mode=standard.
  2. Engine returns 0 matches after filtering (abbreviation "R." recognised as part of a name).
  3. LCS diff → 0 segments.
  4. UI surfaces: "No grammar issues detected."
  5. Both the engine and the baseline agree that the sentence is clean — useful as a regression check that the tool doesn't invent corrections.

Frequently asked questions

Sources & references

Related tools

Rate this tool
Be the first to rate

Comments & feedback

Spotted a bug or want an improvement? Tell us — our team reviews every comment, and good ideas get built. Comments are public and anonymous.

Spotted an edge case the checker mishandled, or want to suggest a better engine?

Email me at [email protected] — most fixes ship within 24 hours.