String Tools — Stats, Random, Find & Reverse
Analyze character composition (Chinese, English, digits, punctuation, words), generate random strings from custom character sets, find and delete occurrences with highlighting, or reverse any text. Everything runs locally.
Character composition
Breakdown
Random string generator
Find occurrences
Highlighted matches
After deleting all matches
Reverse string
String length & composition stats
Paste any text and get an instant breakdown: total characters, Chinese (CJK) characters, English letters, digits, whitespace, ASCII punctuation, full-width / CJK punctuation, and everything else. Word counting handles mixed text the way editors do — Latin word runs plus each CJK character counted as one word.
Random string generator with custom character sets
Pick any combination of built-in sets — decimal digits (0–9), hexadecimal (0–9 A–F), base-36 (0–9 A–Z) or base-62 (0–9 A–Z a–z) — and optionally add your own special characters from an editable box. The special-character set is pre-filled with common symbols but only takes effect when you check it; leave the box empty and no specials are ever generated, even if checked. Randomness comes from crypto.getRandomValues, so output is cryptographically uniform.
Find, count, highlight and delete
Type a substring and see how many times it occurs, at which positions (0-based indices), with every match highlighted in place. The “after deleting” box shows the text with all matches removed — handy for stripping tokens, markers or boilerplate from logs and code.
Reverse characters or words
Flip a string character-by-character (surrogate-pair safe, so emoji survive intact) or reverse the order of its words while keeping each word readable.
Frequently asked questions
How are “words” counted in mixed Chinese/English text?
Consecutive Latin letter/digit runs count as one word each, and every CJK character counts as one word — the same convention most word processors use for bilingual documents.
What exactly is a “special character” here?
Whatever you put in the special-character box. It ships pre-filled with common symbols (!@#$%^&*() and friends) but stays inactive until you tick its checkbox — and if you clear the box, checking it changes nothing.
Are positions 0-based or 1-based?
0-based, matching what most programming languages report for string indices.
Is my text uploaded anywhere?
No. All analysis happens in your browser; the page works offline once loaded.