Bluesky post counter (300 graphemes + 3,000 bytes)
Bluesky is not “300 characters” in the old Twitter sense. The official cap is 300 graphemes and 3,000 UTF-8 bytes. Both must fit.
How to use the Bluesky post counter (300 graphemes + 3,000 bytes)
What does the Bluesky post counter (300 graphemes + 3,000 bytes) do?
Count a Bluesky post against the 300 grapheme limit and the 3,000 UTF-8 byte limit; It applies this page-specific rule: a grapheme is what a person thinks of as one character: a letter, an emoji, or a letter plus its combining marks.
Which inputs does this counter use?
To count a bluesky post against the 300 grapheme limit and the 3,000 utf-8 byte limit, enter Draft; keep every value in the same example; the page then updates the result from the current values; Start with a familiar case covered by this rule - The byte cap is UTF-8 length - so the expected result can confirm the settings.
How should the counter result be read?
For a result intended to count a bluesky post against the 300 grapheme limit and the 3,000 utf-8 byte limit, the byte cap is UTF-8 length; read draft together with the original draft rather than as an isolated answer, and confirm that its units or structure match the intended use.
Is it 300 characters?
When the goal is to count a bluesky post against the 300 grapheme limit and the 3,000 utf-8 byte limit, it is 300 graphemes plus a 3,000-byte UTF-8 ceiling.
Do links count?
When using the page to count a bluesky post against the 300 grapheme limit and the 3,000 utf-8 byte limit, yes, as text, unless a future client shortens them.
Limits and accuracy
When using this counter to count a bluesky post against the 300 grapheme limit and the 3,000 utf-8 byte limit, this is a draft meter, not the Bluesky app; check the result in its intended destination before relying on it for important work; keep draft until the output has been checked in its intended destination.
How this works
A grapheme is what a person thinks of as one character: a letter, an emoji, or a letter plus its combining marks. Family emoji and flag sequences are one grapheme even though they are several code points. This page uses Intl.Segmenter when the browser has it.
The byte cap is UTF-8 length. ASCII is one byte per grapheme. Accented letters are often two. Many emoji are four or more. A post of 300 emoji can blow the 3,000-byte cap long before it hits 300 graphemes.
This is a draft meter, not the Bluesky app. Client versions can differ slightly on edge-case ZWJ sequences. If you are one grapheme from the line, check in the app before posting.
Frequently asked questions
Is it 300 characters?
It is 300 graphemes plus a 3,000-byte UTF-8 ceiling.
Do links count?
Yes, as text, unless a future client shortens them. Paste the URL you will actually post.
Why two bars?
You can fail either limit independently.
Does text leave the browser?
No.