Typographic punctuation
RIGHT SINGLE QUOTATION MARK (U+2019)
The curly closing single quote — and, in English, the correct apostrophe: don’t, it’s, ’90s.
- Codepoint
U+2019- Category
- Typographic punctuation
- Removed by default
- No
- Governing option
- Punctuation
--punct - Can be load-bearing
- No
Where it comes from
Smart quotes in every word processor and CMS, Markdown "smartypants" processing, and any text that has been through a publishing pipeline.
Why it matters
It is a different codepoint from the ASCII apostrophe, so "don’t" and "don't" are different strings. That breaks search, deduplication and diffing — and it is the basis of a published steganography scheme that encodes bits as straight-versus-curly apostrophes.
Before and after
Two apostrophes that no reader distinguishes and no computer confuses.
The character is shown as a labelled chip so you can see where it sits. In your text it draws nothing at all.
When it is legitimate
In typeset English prose, where it is the correct apostrophe. The ASCII apostrophe is a typewriter compromise.
How to remove it
Turn on Punctuation (`--punct`) and every curly quote — single, double, opening, closing, and the low quotes used in German — becomes its straight ASCII equivalent.
Is it an AI watermark?
Appears in some AI output — not a watermark
Model output is usually typographically correct, so it contains curly apostrophes. So does every book, every newspaper and every word-processed document since 1995. It is a property of the pipeline, not a mark of authorship — and its one genuinely suspicious use is as a stego carrier, where an unusual MIXTURE of straight and curly apostrophes in one document is the thing to look at.
It genuinely turns up in model output, as ordinary typography learned from the training data. It is not deliberate, not detectable by design, and not evidence about any single document.
Questions
Why does searching for "don't" miss it?
Because the text contains U+2019 and your query contains U+0027. Normalising with `--punct` makes both sides match.
How can apostrophes hide data?
Straight for 0, curly for 1, one bit per apostrophe. The text reads normally; the inconsistency is the signal. `--punct` flattens all of them and destroys the channel.
Check your own text
Paste anything into the cleaner to see every hidden character it contains, with position, codepoint and what happens to each one. Nothing is uploaded.