Writing Analyzer

Long sentences, passive voice, adverbs and filler, sentence by sentence.

Runs entirely in your browser

Loading the tool…

  • —Sentences
  • —Words each, average
  • —Longest
  • —Over the limit
  • —Passive candidates
  • —Adverbs
  • —Nominalisations
  • —Filler words

WordsSentence

Paste a draft and every sentence comes back with its length and whatever is worth a second look in it. It does not rewrite anything, and that is deliberate: the rewriting is the part you are better at, and the part a tool gets wrong.

Five things are flagged. Sentences over your chosen length, since a reader holds a clause in their head until the verb arrives. Passive voice, which buries who did what. Adverbs, which usually mark a verb that was not strong enough. Nominalisations, verbs turned into nouns, where "make a decision" is standing in for "decide". And filler, the very, really, quite that almost always come out without loss.

Every one of these is a heuristic, and a flag is not a verdict. Passive voice is detected by looking for a form of "to be" near a past participle, which also catches "is tired". Adverbs are words ending in -ly that are not on a list of nouns that also do. A long sentence can be the best one on the page. The tool finds candidates; whether any of them is a problem is a judgement it cannot make.

Passive voice in particular is not a mistake. It is the right choice when the actor is unknown, irrelevant or deliberately withheld: "the file was corrupted" is honest when nobody knows what corrupted it. The reason to count them is that most drafts contain more than their author intended.

This is a different question from the text analyzer, which counts which words dominate a page. That one is about the topic; this one is about the sentences.

How to use it

  1. Paste your draft. It analyses as you type, and nothing is uploaded.
  2. Read the table: each sentence with its word count and any flags.
  3. Tick the box to hide everything that came back clean.

Questions

How long should a sentence be?

There is no correct number, which is why the threshold is a box rather than a constant. Twenty to twenty-five words is a common ceiling for prose meant to be read quickly; technical writing often runs longer and legal writing much longer. What matters more than any average is variety: a page of identical-length sentences is tiring however short they are.

How does it detect passive voice?

By looking for a form of "to be" followed within two words by a past participle, with a list of irregular ones since no suffix rule catches "written" or "taken". It is a heuristic and it has false positives, "is tired" and "was interested" being the common ones, which is why the count is labelled candidates rather than errors.

Is passive voice wrong?

No, and any tool that says so is oversimplifying. It is the right choice when the actor is unknown, unimportant or deliberately left out. The reason to count it is that most drafts have more of it than their writer meant, usually where a sentence has quietly stopped saying who did the thing.

What is a nominalisation?

A verb wearing a noun's clothes: "make a decision" for "decide", "perform an analysis" for "analyse", "the implementation of" for "implementing". They add words and drain energy, and they cluster in official prose. Words ending in -tion, -ment, -ance and -ity are flagged, which catches most of them and some innocent nouns too.

Why does it not rewrite the text for me?

Because doing that properly needs a language model, and a model is tens of megabytes that would have to be downloaded. Every page on this site is a single self-contained file served with a header forbidding it from connecting anywhere, and that guarantee is worth more than an automatic rewrite of uncertain quality. This tool finds the sentences; you write them.

Is my draft sent anywhere?

No. The analysis runs in WebAssembly inside this tab, and the page is served with a Content-Security-Policy whose connect-src is none, so the browser refuses to let it open a connection at all. Unpublished writing is exactly the kind of thing not to paste into a website that has a server, and this one does not.

Your data stays on your device

Everything above runs inside your browser as WebAssembly compiled from Rust. Nothing you type is uploaded, logged or stored on a server. You can load this page once, go offline, and it still works.

This page makes no requests at all, to anywhere. That is not a promise in the copy: it is a Content-Security-Policy header your browser enforces, and connect-src on it is none. Open the network tab and watch nothing happen.