Text Analysis Workbench | Frequency, Readability, Tone, and Similarity

TextRuns in Your Browser (No Uploads)

Measure grapheme and word frequency, explicit keyword-window density, five English readability formulas, bounded English lexicon sentiment, and exact grapheme edit similarity in one private browser Worker. Every result names its segmentation, denominator, language, lexicon, and complexity boundary; readability and sentiment are estimates for review, not proof of writing quality, emotion, authorship, or meaning.

What to do next

Continue with a related workflow or open the next tool that usually follows this task.

How to Use This Tool

Choose the measurement that answers the current question; do not compare scores from different modes as if they shared a scale.

For frequency, density, or similarity, select the segmentation locale, Unicode normalization, and case policy before entering text.

Remove secrets and personal data before sharing results even though processing stays in this browser and the tool does not upload source text.

Paste text or load one bounded text file. Similarity requires a second source, while readability and sentiment require English text.

Run the dedicated Worker and inspect exclusions, denominators, lexicon coverage, language notices, and resource diagnostics before reading the headline number.

Copy or download the complete tab-separated report, retain the original source, and verify editorial or research decisions with domain evidence and human review.

When to Use This Tool

Audit repeated terms without punctuation noise

Count locale-segmented words or grapheme clusters after an explicit case and normalization policy, with whitespace, number, and short-token exclusions reported separately.

Check a target phrase against a defined denominator

Measure overlapping contiguous one- to five-word occurrences against the number of eligible windows instead of calling an undocumented percentage keyword density.

Compare English readability formulas

Review Flesch Reading Ease, Flesch-Kincaid grade, estimated Gunning Fog, Coleman-Liau, and ARI from the same sentence, word, letter, and estimated-syllable counts.

Triage obvious English tone words

Inspect which pinned AFINN labels matched, how local negation changed them, and what share of tokens received any score before deciding whether deeper qualitative review is needed.

Compare revisions beyond a visual diff

Calculate exact grapheme-cluster edits and unique-word Jaccard overlap after a visible normalization and case policy, with a preflight complexity cap.

Common Mistakes

Treating a grapheme as a byte or code point

A displayed character can contain several code points, such as a combining mark or joined emoji. Character frequency counts Intl.Segmenter grapheme clusters and shows their code points; it does not count file bytes.

Quoting keyword density without its denominator

This workbench divides occurrences by eligible contiguous n-gram windows. Other tools may divide by all words or multiply phrase length, so percentages are not comparable until token filters and formulas match.

Applying English readability to Korean or Japanese

The five formulas depend on English words, sentence boundaries, letters, and estimated syllables. Predominantly non-Latin input is rejected rather than assigned a precise-looking invalid grade.

Calling lexicon sentiment an emotion detector

AFINN labels and a short negation window cannot understand sarcasm, entities, factual truth, intent, safety, culture, or domain jargon. Coverage is matched-token share, not model confidence.

Normalizing away a difference that matters

NFC, NFKC, and case folding can make strings compare equal while the original code points differ. Use none and case-sensitive comparison when source identity, identifiers, signatures, or forensic evidence matters.

Examples

Count user-perceived characters

The percentage denominator is the four included grapheme clusters, not the six clusters present before filtering.

Input
A a\n😀😀 with whitespace excluded and case folding enabled
Output
4 counted graphemes: a = 2 (50%), 😀 = 2 (50%); two whitespace graphemes excluded

Segment multilingual words

Punctuation is not attached to words, and Unicode scripts are not stripped by an ASCII-only regular expression.

Input
Hello, hello! 안녕 안녕. 東京 東京 42 with Korean segmentation and numbers excluded
Output
hello = 2, 안녕 = 2, 東京 = 2; 42 is reported as one excluded numeric token

Measure a two-word target window

Target token count overrides the top n-gram selector and overlapping matches are allowed.

Input
local text tools help. Local text tools stay private. Target: local text tools
Output
2 matching three-word windows out of 5 eligible same-sentence windows = 40%

Review an English readability sample

A short-sample notice remains visible because formula stability improves with a broader representative passage.

Input
The support team wrote a short guide. Readers can follow each step and verify the final result.
Output
Five formula values plus sentences, words, letters, estimated syllables, and complex-word counts

Inspect negated sentiment evidence

The report exposes lexical evidence and avoids a confidence percentage or claim that the writer's emotion was detected.

Input
The export is useful, but the instructions are not clear.
Output
Matched terms, effective signed scores, negated-hit count, token coverage, and a bounded tendency label

Compare canonically equivalent Unicode

Normalization and case-fold notices prevent the transformed equality from being confused with byte-for-byte source identity.

Input
CAFÉ versus cafe followed by U+0301, with NFC and case folding
Output
0 grapheme edits, 100% grapheme similarity, 100% word Jaccard overlap, exact match after the selected transformations

Locale segmentation, explicit denominators, qualified formulas, and bounded exact comparison

Input is checked for unpaired UTF-16 surrogates and measured as Unicode code points and UTF-8 bytes before analysis. Each source is limited to 262,144 characters and 262,144 bytes; similarity also limits both sources together to 262,144 bytes. Work runs in a dedicated browser Worker with cancellation, a 15-second timeout, and a memory estimate.

Character frequency segments the normalized source with Intl.Segmenter granularity grapheme, so combining sequences and joined emoji remain one row. Word modes use granularity word and isWordLike, then apply the selected locale, case policy, NFKC or NFC normalization, numeric-token policy, and minimum grapheme length. Percentages divide by included units only, and no more than 100 rows are rendered.

Keyword density builds contiguous windows over the original segmented sequence and discards any window containing a filtered token or crossing sentence punctuation or a line break. This prevents exclusions and boundaries from joining words that were not a continuous phrase. A typed target may contain one through five tokens. Density is occurrences divided by eligible same-size windows, so it stays bounded and its denominator remains inspectable.

Readability is English-only. One statistic set feeds Flesch Reading Ease, Flesch-Kincaid grade, an explicitly estimated Gunning Fog value, Coleman-Liau, and Automated Readability Index. Syllables use a deterministic spelling heuristic, not pronunciation data; text under 10 words is rejected and text under 100 words receives a stability notice.

Sentiment uses the 3,382 English AFINN-165 labels and emoji labels distributed by the pinned MIT sentiment 5.0.2 package, but replaces its ASCII tokenizer with Intl.Segmenter. A bounded three-token negation window and visible modifiers alter label scores. Similarity uses grapheme arrays, two Uint32Array rows for exact Levenshtein distance, and unique-word Jaccard overlap; it rejects work above 12,000,000 comparison cells before allocation. Analytics receives only mode, safe option categories, byte counts, row counts, notices, duration, and stable error codes, never source text, target phrases, matched words, or output.

Frequently Asked Questions

Does character frequency count emoji and combining marks correctly?

It counts Intl.Segmenter grapheme clusters for the chosen locale. A joined emoji or letter plus combining mark normally occupies one row, while the report lists every underlying code point. Browser Unicode data can evolve, so record the environment for reproducible research.

What exactly does keyword density mean here?

It is the number of overlapping target or top n-gram occurrences divided by the number of eligible contiguous windows of that same token length. Active number and minimum-length filters can remove windows, and those settings must accompany any quoted percentage.

Which languages can use the readability scores?

Only predominantly English passages are accepted. The formulas and syllable estimator are not valid Korean or Japanese readability measures, and a score is not evidence that content is accurate, useful, accessible, or appropriate for a particular reader.

Is the sentiment tendency an AI confidence score?

No. It is the sign of a deterministic AFINN lexicon sum after limited negation and modifier handling. Coverage only says what percentage of segmented tokens matched labels. Sarcasm, context, intent, entities, dialect, and domain meaning require human or validated domain-specific analysis.

Why can similarity reject two valid text files?

Exact edit distance grows with the product of grapheme counts. The workbench rejects more than 12,000,000 comparison cells before running the dynamic program, even when both files fit the byte cap. Use a line diff, sampling, or specialized large-document method for larger material.

Does any source text leave my browser?

No analysis operation uploads source or result text. The Worker receives in-memory strings locally. Operational analytics can receive fixed mode and option names, timing, aggregate byte and row counts, notice counts, and stable error codes, but not text, target phrases, matched terms, filenames, or reports.

How This Tool Was Verified

Maintained and tested by Reviewed

Method: The Text Analysis Workbench check used the exact input from “Audit a repeated three-word phrase without crossing sentence boundaries”. After “Write the decision before choosing the metric” and “Record the counting contract”, we matched the resulting values or file against the documented output and inspected the risks described by “Comparing percentages from different denominators” and “Using readability as a content-quality target”.

Expected result: The report separated phrase occurrences from eligible three-token windows, honored the NFKC, case, and number rules, and located each repetition without crossing a sentence boundary.

Open the tested workflow

Related workflow guides

Use these focused guides when you need a practical workflow before opening the tool.

Related Tools

Continue with another maintained workflow

Browse All Tools