Word & Character Counter — instant text stats
Respecting a character limit — a social post, an ad, an essay abstract — means knowing exactly how long a text is, not just guessing. Paste your text here and the app counts words, characters and sentences instantly, without sending anything to a server: the text stays in your browser.
What it records
- Paste or write your text here
How it works
This is a Reactive app: a plain text document that your browser turns into a working app — forms, live data, tables, statistics and even charts, with nothing to install or configure.
- Use it right away. Hit “Use this app”: it opens right in your browser, ready to go, with data saved only on your device.
- Your data stays yours. Everything is stored locally on your device, kept separate for each app: no account, no server, nothing to set up.
- Make it your own. The text below is the entire app: copy it, tweak fields, views and words, and your changes become interactive instantly.
- Share it as a file. An app is a simple file: save it, export it or share it with a link; and with encrypted collaboration several people edit the same data in real time.
The app’s source
# 🔤 Word & Character Counter
Respecting a character limit — a social post, an ad, an essay abstract —
means knowing exactly how long a text is, not just guessing. Paste your text
here and the app counts words, characters and sentences instantly, without
sending anything to a server: the text stays in your browser.
::::form{path="texts" id="fte"}
::input{form="fte" field="text" type="text" placeholder="Paste or write your text here" required="true"}
::add-form{form="fte" path="texts" label="Count"}
::::
## Result
:::python{data="texts"}
```
rows = data["texts"]
if rows:
text = rows[-1]["text"]
words = len(text.split())
chars_with_spaces = len(text)
chars_no_spaces = len(text.replace(" ", ""))
sentences = sum(text.count(p) for p in (".", "!", "?"))
if sentences == 0 and text.strip():
sentences = 1
print(f"Words: {words}")
print(f"Characters (with spaces): {chars_with_spaces}")
print(f"Characters (without spaces): {chars_no_spaces}")
print(f"Sentences (approx.): {sentences}")
else:
print("Write or paste a text and press Count to see the stats.")
```
:::
The count updates only when you press Count: no history of pasted texts
stays visible on the page, just the result of the last count.