gekro
GitHub LinkedIn
Dev

Word Counter

Paste any text, see words, characters, sentences, paragraphs, reading time, reading level, and the top-10 most-used words - live as you type.

0 words · 0 characters

Spell-check is on — right-click any underlined word for suggestions.

0 / 500 (0%)

Statistics

Words0
Characters0
Characters (no spaces)0
Sentences0
Paragraphs0
Reading time
Speaking time
Reading level
Avg word length
Avg sentence length
Unique words0
Longest word
Top 10 words
  1. No words yet.

As-is, no warranty. These apps are free under their listed license and run entirely in your browser. Use at your own risk — don't blame me if your PC catches fire, your dog runs away, or the math turns out wrong. Verify anything that actually matters. None of this is professional financial, medical, legal, or engineering advice.

© 2026 Rohit Burani · MIT · Built at gekro.com · View source ↗

Guide

What It Does

Paste or type text on the left. Stats update live on the right.

  • Headline number — big “X,XXX words · Y,YYY characters” at the top, the same way most counter sites lead
  • Full stats panel — words, characters (with/without spaces), sentences, paragraphs, reading time, speaking time, reading level (Flesch-Kincaid grade), average word length, average sentence length, unique words, longest word
  • Top-10 most-used words — collapsible list with counts. Spot repetition before your editor does
  • Word goal — slider from 50 to 5000, live progress bar that turns green when you hit it
  • Case converter — UPPER, lower, Title, Sentence, aLtErNaTiNg
  • Native spell check — right-click any underlined word for suggestions. Works offline, in your locale, free

How the numbers are calculated

MetricHow
WordsSplit text on whitespace runs (/\s+/), count non-empty
Characterstext.length including spaces and newlines
Characters (no spaces)text.replace(/\s/g, '').length
SentencesCount terminal-punctuation groups: ., !, ?,
ParagraphsSplit on blank-line runs (/\n\s*\n/), count non-empty
Reading timewords / 265 minutes (Brysbaert 2019 silent-reading meta-analysis)
Speaking timewords / 150 minutes (average conversational speech rate)
Reading levelFlesch-Kincaid grade: 0.39 × (words/sentences) + 11.8 × (syllables/words) - 15.59
SyllablesVowel-group counting with silent-e / -ed / -es stripping; minimum 1 per word
Unique wordsLowercase, strip non-letter/digit chars, count distinct
Longest wordIterate cleaned words, keep the max
Top 10Frequency map → sort desc → slice 10

The Flesch-Kincaid label maps grade ranges to plain English: <6 = Elementary, 6-8 = Middle school, 9-12 = High school, 13-15 = College, 16+ = Graduate.

Why no server-side grammar checker

Other counter sites bolt a paid “Check” button onto their UI that pings a remote LanguageTool-style backend. We don’t.

  • Your text never leaves your browser.
  • The browser’s native spell check (the spellcheck="true" attribute on the textarea) already catches misspellings and offers corrections via right-click. It uses your OS dictionary, your locale, and is offline.
  • A real grammar checker (subject-verb agreement, passive voice, comma splices) needs ~5-10 MB of WASM or a server round-trip. Both would break the 100%-client-side promise. If you want that level, LanguageTool runs locally as a Java server and there are good browser extensions; that’s the right home for it, not a side feature in a counter.

When To Use It

  • Drafting a blog post, essay, LinkedIn update, or newsletter and need a live word count
  • Checking the reading level of marketing copy or technical docs
  • Spotting overused words (“just”, “really”, “very”) before your editor flags them
  • Quick character count for tweet/title/meta-description length checks
  • Estimating reading time for a piece of long-form content

What’s NOT Included

  • Grammar check — see above, deliberate scope choice
  • Persistent state — reload = blank slate, by design (every other Gekro app in this batch follows the same rule)
  • Thesaurus / synonyms — would need a 1-2 MB word database; out of scope
  • Multi-document tabs — one textarea, one counter; if you need multiple drafts use separate browser tabs
  • History / undo button — the <textarea> has native Ctrl+Z / Ctrl+Y, no JS button needed

For informational purposes only. Not financial, medical, or legal advice. You are solely responsible for how you use these tools.