Example
Input
Paste a 1,200-character cover letter
Output
Characters (with spaces) 1,200 · (without) 1,043 · words 312 · sentences 24 · paragraphs 5 · UTF-8 bytes 3,180
Note
Application forms often cap length "including spaces", so both counts are shown side by side. A legacy byte count (2 bytes per Korean character) is listed separately for older systems.
Usage / FAQ
When to use
- Meet an "N characters including/excluding spaces" limit on an application form
- Check the length of a report or assignment
- Estimate reading time for a blog post
- Trim copy that has a hard limit, like a social post or a meta description
- Verify text fits a database column using its UTF-8 byte length
FAQ
- Q.With or without spaces — which one counts?
- A.It depends on the form. Many application forms count characters including spaces, others state "excluding spaces" explicitly. Both are shown at once, so check the wording of the requirement itself.
- Q.How are words counted?
- A.By splitting on whitespace. For languages that separate words with spaces this matches intuition, but for Korean it counts spacing units (eojeol) rather than linguistic words — "학교에 간다" counts as 2 — so the numbers are not directly comparable across languages.
- Q.Why are there two byte counts?
- A.A Korean character is 3 bytes in UTF-8, but many legacy Korean systems count it as 2 bytes (EUC-KR style). Both are shown so you can match whichever limit your system uses.
- Q.What reading speed is the estimate based on?
- A.A deliberately conservative 200 words per minute. Meta-analysis puts average silent reading of English around 238 wpm, but technical or unfamiliar material reads slower, so the estimate leaves headroom.
Fun facts
Counting "words" is harder in some languages than others. Korean, Chinese and Japanese don't put spaces between words, so the boundaries aren't self-evident — Unicode handles this in a dedicated standard (UAX #29 Text Segmentation), and the browser's Intl.Segmenter is an implementation of it.
Unicode — UAX #29 Text SegmentationThe familiar "words per minute" figure was pinned down more recently than you'd think. A 2019 meta-analysis of 190 studies put average silent reading of English at 238 words per minute (183 when reading aloud) — below the 300 wpm often quoted.
Journal of Memory and Language — Brysbaert (2019)In any language, word frequency falls off almost exactly in inverse proportion to rank: the most common word appears about twice as often as the second, three times as often as the third. George Zipf described this in the 1930s, and it still underpins how tokenizer vocabularies are designed.
Wikipedia — Zipf's law
Related tools
- JSON Formatter / Validator
Format, validate, and minify JSON strings. Adjust indent and optionally sort keys. Runs entirely in your browser.
- String Case Converter
Convert strings between camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE, and Title Case — all six cases shown side-by-side.
- Regex Tester
Test JavaScript regular expressions with live match results. Supports g/i/m/s/u/y flags and capture groups.
- Markdown Preview
Render Markdown to HTML side-by-side. Supports CommonMark + GFM (tables, fenced code, task lists). Everything runs in your browser.
- HTML → Markdown
Convert HTML into Markdown. Headings, lists, links, code, tables, blockquotes. Uses the browser's DOMParser — accurate, 0 dependency.
- YAML ↔ JSON
Convert between YAML and JSON. Tolerates comments and multiline strings on the YAML side. Everything runs in your browser.
- Text Diff
Compare two texts and highlight added/removed lines, words, or characters.
- JSON Diff
Compare two JSON values, with optional key sorting and JSON-aware error messages.
- CSV ↔ JSON
Convert between CSV and JSON. Handles quoted fields, custom delimiters, and header rows.
- SQL Formatter
Format SQL queries with proper indentation and keyword casing. Supports PostgreSQL, MySQL, SQLite, and standard dialects.
- XML Formatter
Pretty-print or minify XML with attribute preservation. Handles SOAP, sitemaps, and config files.
- XML ↔ JSON
Convert between XML and JSON with attribute and element handling.
- Smart Paste
Paste any text and get tool recommendations — JSON, JWT, Base64, URL, UUID, Cron, and 9 more types auto-detected.
- Lorem Ipsum
Generate placeholder text in words, sentences, or paragraphs. Classic Lorem Ipsum or randomized.
- JSON Path
Query JSON with JSONPath expressions ($.store.book[*].author etc.) and inspect matches.
- JSON Schema Validator
Validate JSON data against a JSON Schema (Draft 2020-12). Powered by Ajv with format support.
- JSON Schema Generator
Generate a JSON Schema (Draft 2020-12) from a sample JSON. Infer types, required fields, and nested structures automatically.
- HTML Formatter
Beautify or minify HTML with proper indentation. Preserves pre/textarea whitespace.
- CSS Formatter
Beautify or minify CSS with proper indentation. Configurable selector and property style.
- JavaScript Formatter
Beautify or minify JavaScript with indent options. Powered by js-beautify.
- TOML ↔ JSON
Convert between TOML (Tom's Obvious Minimal Language) and JSON. Used in Cargo.toml, pyproject.toml, etc.
- INI ↔ JSON
Convert INI configuration to JSON and back. Supports sections, comments (; or #), and key=value.
- JSON → TypeScript
Generate TypeScript interfaces from a JSON sample. Nested objects become separate interfaces.
- JS Object → JSON
Convert a JavaScript object literal (unquoted keys, single quotes, trailing commas, comments) into standard JSON. Lenient parser, strict output.
- Slug Generator
Convert text into a URL-safe slug. Configurable separator, lowercase, and accent stripping.
- ASCII Tree
Convert indented text or path list into a box-drawing tree (├── │ └──).
- Diff Patch
Generate a unified diff (-u) patch from two text inputs. Compatible with `git apply` / `patch -p0`.
- Mock Data
Generate fake JSON records and SQL INSERT seed data — names, emails, custom fields, UUIDs, dates, and more. 0 dependency.
- MongoDB Extended JSON
Convert MongoDB Extended JSON (EJSON) between Canonical and Relaxed forms, or strip BSON wrappers to plain JSON. Recognizes 16 wrapper types ($oid/$date/$numberLong/$numberDecimal/$binary/...).
- Kubernetes YAML Visualizer
Paste Kubernetes manifests and see the resource graph — Deployments, Services, Ingresses, ConfigMaps, Secrets, PVCs, and how they connect. Everything runs in your browser.
- Docker Compose Visualizer
Paste docker-compose.yml and see services, networks, volumes, and depends_on as an interactive graph. Everything runs in your browser.
- PDF Text Extractor
Extract text from a PDF file — page by page or as a single document. Markdown-friendly output, all client-side.
- PPTX Text Extractor
Extract slide text from a .pptx file — plain / markdown / per-slide. Great for converting decks to markdown. All client-side.
- Regex Railroad Diagram
Visualize your regex as a railroad diagram — trace branches, groups, and quantifiers at a glance, in your browser.
- LLM Token Counter
Count LLM tokens and estimate cost — exact for GPT (tiktoken), estimated for Claude/Gemini. Context-limit gauge. All in your browser.