Skip to content
Ghostchars

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
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

BeforedonU+2019t
Afterdon't

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

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.

Check your own textAll characters