Word Cloud Generator

Paste text to create a word cloud sized by word frequency

PDF · Word (.docx) · txt · rtf · odt · csv · md — drag & drop works too

Enter some text and click generate.

About Word Cloud Generator

A word cloud draws each word at a size that grows with how often it appears. This tool splits your text (pasted, or extracted from a txt, pdf, docx or similar file) into words, counts them, then places the most frequent word at the center and spirals outward to find free space for each of the rest.

It looks like a summary, but all a word cloud really encodes is how many times each exact word form occurred. Below: how the counting and layout work, and why the result can mislead, especially with languages that attach grammar to words or do not use spaces.

How words are counted

Words are found with the browser's Intl.Segmenter: spaces and punctuation separate words in English, Spanish and Korean, and Japanese and Chinese, which use no spaces, are split with the dictionary built into the browser. Counting is case-insensitive by default, so Data and data are one word. There is no stemming: "analyze", "analyzes" and "analysis" are three separate words, and "customer" and "customers" split the vote between them. If one concept is spread over several forms, it will look smaller than it is. Normalizing obvious variants with find-and-replace before pasting is the simplest fix.

Korean attaches particles to nouns, so 데이터를, 데이터가 and 데이터는 (data as object, subject and topic) would count as three different words. The Korean particle option, on by default, strips common particles and merges them into 데이터. It is rule-based, not a morphological analyzer: it skips one-syllable stems, respects which particles follow a final consonant, and only strips particles that double as common noun endings (이, 가, 의, 도, 만, 로) when the bare stem also appears in the text. Japanese sentences such as 吾輩は猫である。 are split into 吾輩, は, 猫, で, ある, and the particles and auxiliaries are removed as stopwords.

Stopwords

With stopword removal on, the tool drops about a hundred high-frequency English function words (the, of, and, is, would, which…), common Korean conjunctions and pronouns, Spanish articles, prepositions and pronouns (el, la, de, que…) and Japanese particles and auxiliaries (の, は, を, です, ます…). Spanish words spelled like English words, such as son, era and sin, are left out of the list. Without that filter almost every English cloud would be dominated by the word the.

A fixed list is only a starting point. In a survey about a product, the product's name appears in nearly every answer and will be the largest word while telling you nothing. The same goes for the question's own wording echoed in responses. Type those terms into the words-to-exclude box, separated by commas or spaces, so the differences that matter can show; that box applies even when stopword removal is off. Conversely, words like "not" and "no" are on the stoplist, which is part of why a word cloud cannot tell "helpful" from "not helpful".

Why size is not importance

Font size is mapped linearly from the lowest to the highest count. But people read area, not letter height. Area grows with the square of the font size and also with the length of the word. A word drawn at twice the font size takes up four times the area, and at equal frequency "communication" dominates "team" simply because it has more letters.

Frequency also strips context. "No complaints" and "many complaints" both enlarge "complaints". Jacob Harris, then a senior software architect at The New York Times, made this case in his 2011 Nieman Lab piece "Word clouds considered harmful": word clouds support only the crudest kind of text analysis and leave readers to supply the context themselves. A sorted frequency table, or a handful of quoted sentences, carries the argument better; the cloud works as a visual opener.

The layout algorithm

Placement follows the approach used by Jason Davies's d3-cloud. Words are handled from most to least frequent. Each one starts at the center; if it collides with something already placed, it moves step by step along a spiral until it finds a free spot. The rectangular shape uses a rectangular spiral stretched to the frame's aspect ratio, so wide frames fill to the edges. The circular shape uses an Archimedean spiral. Every fifth word is tried vertically first, with the other orientation as a fallback.

Collisions are tested with each word's bounding rectangle, not the actual glyph outlines. Small words cannot tuck into the gaps between letters of large ones, so the result is a little looser than tools that test at pixel level. A word that finds no space is silently skipped, which is why raising the maximum word count sometimes adds nothing. "Fit to frame" reruns the layout at several global scale factors and keeps the one that fills about 70% of the frame with bounding boxes without dropping any of the top words.

Worked examples

English: case folding and stopwords

Input
The data is the data. Data is not the model.
Output
data 3, model 1

Data and data merge; the, is and not are removed as stopwords. Note that "not" disappearing is exactly the kind of lost meaning to watch for.

Korean: stripping particles

Input
데이터를 분석하면 데이터가 보인다. 데이터는 거짓말을 하지 않는다. 데이터 분석
Output
데이터 4, 거짓말 1, 보인다 1, 분석 1, 분석하면 1, 않는다 1, 하지 1

The noun 데이터 (data) appears four times with different particles and is merged into one word. With the particle option off, it splits into four words of frequency 1. The verb form 분석하면 is not merged with 분석.

Japanese: split without spaces

Input
吾輩は猫である。名前はまだ無い。
Output
まだ 1, 名前 1, 吾輩 1, 無い 1, 猫 1

Intl.Segmenter splits the sentences into words, and は, で and ある are removed as stopwords.

How to use it

  1. Paste text or upload a file (txt, md, csv, json, srt, pdf, docx, odt and more).
  2. Set the maximum word count, shape (rectangle or circle), rotation, stopword removal, Korean particle stripping and any extra words to exclude.
  3. Generate and save the image. Positions can shift slightly between runs.

Frequently asked questions

Does the biggest word mean the most important topic?

It means the most frequent word form. It ignores negation and context, and long words look bigger at the same count.

Why do singular and plural show up separately?

The tool does not stem or lemmatize. Merge variants with find-and-replace before generating if you want them counted together.

I raised the word limit but nothing changed.

Words that cannot find a non-overlapping spot are dropped. Turn on fit to frame, allow vertical words, or use the rectangle shape to fit more.

Can I add my own stopwords?

Yes. Type them into the words-to-exclude box, separated by commas or spaces. They are removed even if the built-in stopword list is turned off.

Sources

Last reviewed:

Privacy and how data is handled