ForHosting KIT · Text & AI

Build a word frequency table

Paste «The cat sat on the mat. The cat ran.» and get 9 words, 6 different ones, ranked: «the» first with 3 uses, then «cat» with 2. Every distinct word gets its own row with a count and a share. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Text
The cat sat on the mat. The cat ran.
You get
Total words
9
Unique words
6

Writers, editors, teachers, SEO practitioners, researchers, and developers use frequency tables to spot overused terms, check vocabulary range, prepare bag-of-words features, generate classroom answer keys, and audit drafts before publication. The engine is fully deterministic—one Unicode-aware tokenize pass, a hash map of counts, and a stable sort by count descending then word ascending—so the same paste always yields the same ranks, shares, and totals. There are no network calls, no sampling, and no date-dependent shortcuts.

What a word frequency table contains and how rows are ranked

A word frequency table answers a practical product question: which words dominate this passage, how often each one appears, and what share of all tokens each word represents. It is not the same as character counting, which measures length, and it is not the same as SEO keyword-density scoring against a single target phrase. Here every distinct word becomes a row with a rank, a count, and a share equal to count divided by total words, rounded to six decimal places for stable goldens.

Tokens are sequences of Unicode letters or digits, with optional internal apostrophe segments so contractions such as don't and names such as O'Brien stay whole when the source uses straight apostrophes. Punctuation, symbols, and bare whitespace act as separators and never receive their own rows. Matching is always case-insensitive: Hello, HELLO, and hello merge into one lowercased key so drafting noise does not inflate unique counts.

There is no stemming, no stop-word list, no language detection, and no machine-learning model that could drift between hosts.

Where frequency tables fit in writing, teaching, and software

Students meet word-frequency work when a language arts prompt asks which terms dominate a speech, when a corpus lab builds a simple bag-of-words table, or when a coding exercise demands deterministic token counts before charting. Teachers can pre-generate answer keys that show expected ranks and shares without trusting opaque spreadsheet formulas that split hyphenated words differently across locales. Editors and content teams paste drafts into a frequency table to spot accidental repetition, clichés that appear too often, or brand names that barely surface.

SEO and content strategists use the ranked list as a quick vocabulary audit before they open a full keyword-density workflow: the goal here is the full distribution of words, not a single target phrase score. Support and operations teams measure noisy ticket subjects and log lines so dashboards can surface the most common failure words without custom parsers.

Pair it with character counters, slug tools, or keyword-density helpers when you are building a small lab of free, deterministic text utilities for forms, CMS prep, and data hygiene across teams that need the same table every time.

Spot overused words in a draft

Paste an article or email and rank every word by frequency so you can cut repetition and tighten vocabulary before you publish.

Classroom and lab answer keys

Generate reproducible ranks, counts, and shares for language-arts prompts, corpus labs, and coding exercises that demand exact tables.

What does building a word frequency table cost?

It is free in your browser on this page.

How are words split from punctuation?

Tokens are Unicode letter or digit runs, with optional internal apostrophes. Commas, periods, symbols, and whitespace separate words and never become rows.

Is matching case-sensitive?

No. The table is always case-insensitive: Hello and hello count as the same lowercased word so drafting noise does not inflate unique counts.

What happens if the text has no words?

Provide non-empty text that contains at least one letter or digit token.

How is rank decided when two words share a count?

Rows sort by count descending, then by word ascending, so ties break alphabetically and stay stable across runs.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/text/word-frequency-table

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/text/word-frequency-table \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"The cat sat on the mat. The cat ran."}'
{
  "text": "The cat sat on the mat. The cat ran."
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "text.word_frequency_table",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_tokens20000
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

This tool builds a complete word frequency table from any non-empty text: it tokenizes letters and digits, folds case so Hello and hello merge, counts every occurrence, and ranks rows from most frequent to least frequent. Empty input, whitespace-only paste, and text with only punctuation are rejected with invalid_input so a blank form cannot become a silent empty success.

What a word frequency table contains and how rows are ranked

The response echoes the source text, reports total_words as the number of tokens found, unique_words as the number of distinct keys, lists table rows in rank order, and tags method as word_frequency_table for multi-tool pipelines. The engine either builds an exact ranked table inside the supported length or rejects the request with invalid_input. Rejected cases include a missing text field, a null value, an empty string, whitespace-only content, objects and arrays that are not plain text, payloads longer than the documented maximum character count, and strings that contain only punctuation with zero letter or digit tokens.

How the text field is read and how rankings stay reproducible

The value must be a non-empty string after a meaningful content check; finite numbers and bigints are stringified first so a bare product code typed as a number still produces a stable digit token. Outer spaces around real words are separators only; they do not create phantom tokens. Counting uses a single Unicode-aware tokenize pass, lowercases every token, stores tallies in a Map, and applies a pure comparison sort—no network dictionary, no locale table that reorders letters differently across hosts, and no random sampling. Ties break by word ascending so two words that share a count never flip order between runs. The preferred field is text, but aliases input, string, value, content, and s are accepted so query strings, spreadsheets, and typed forms can reuse the same contract without renaming columns. Booleans, plain objects, and arrays are rejected with a clear message so a mistaken JSON body does not become the word true or an unhelpful object dump. Empty string and whitespace-only paste are always invalid_input: the product promise is build a frequency table of every word, not invent a zero success for a blank submit. Length is capped at one hundred thousand characters so a runaway paste cannot monopolize a Worker; longer payloads fail with an explicit limit message rather than a truncated silent cut. Pair the free browser run on this page with the priced API when you need the identical frequency table inside an automated pipeline without shipping your own word counters or flaky spreadsheet formulas.

Where frequency tables fit in writing, teaching, and software

On this page the work runs entirely in your browser; through the API each successful analysis costs $0.002, failed validation is not charged, and nothing is stored after the response returns. That split—free interactive exploration and a priced, identical API—matches the rest of the KIT tier-A catalog and lets you move from a classroom demo to an automated pipeline without changing the numeric result.

Bag-of-words test fixtures

Build deterministic frequency tables for CI, search-index tests, and data pipelines without shipping a custom tokenizer.

Read the full KIT documentation →