Skip to main content

What it checks

countGraphemes(text) <= 300. The grapheme counter uses Unicode segmentation, so 👨‍👩‍👧‍👦 is one grapheme, not seven codepoints.

Why 300

The cap matches Bluesky’s app.bsky.feed.post schema constant, which is itself defined in graphemes — not bytes, not codepoints, not UTF-16 codeunits. We use the same counter the platform uses, so what passes preflight passes upstream.

Failure response

Remediation

Trim the post. If you’re truncating programmatically, use a grapheme-aware splitter. JavaScript’s string.length counts UTF-16 codeunits and will under-count emoji; use Intl.Segmenter or graphemer.