Which number governs which object

Threads character limit: 500 for the post, 10,000 for an attachment

The Threads character limit is 500 characters for the text of a post — that is the figure Meta documents on the publishing endpoint, and the one Postdom checks against. The 10,000 figure you have probably also seen is real and is not a bigger post: it is a long-form text attachment, a separate object. Both are first-party. Neither is wrong. They answer different questions.

What is the Threads character limit?

Two figures circulate and both are first-party. The disagreement is not between sources — it is between objects.

Each figure, the object it bounds, and where it is published
FigureGovernsWhere it is stated
500The text of a postMeta states it under Limitations on its posting reference, in these words: “Text posts are limited to 500 characters.” It is the ceiling on the text field of the publishing endpoint. Meta's Threads posting reference.
10,000a long-form text attachmentAnnounced by the official Threads account, which describes it as “a long-form text attachment”. It is a separate object attached to a post, not a larger post. The @threads announcement.

Neither source is being careless. Meta scopes its sentence to a text post; the Threads account calls its figure an attachment in the same breath as announcing it. The confusion is produced entirely downstream, by pages that repeat one number without the object it belongs to — which is why the highest-placed answers on this question contradict each other while every one of them is quoting something true.

What Meta’s API documents, and what it does not

Postdom publishes to Threads through Meta’s documented publishing endpoint, and the text of the post travels in a single field. The ceiling on that field is the figure in the first row above. That is the number that governs anything published programmatically.

The long-form attachment has no documented API surface at all. Meta’s posting reference gives the endpoint and its text field, states the text-post limit under Limitations, and mentions no long-form attachment and no larger figure anywhere on the page. So 10,000 is not a higher ceiling you are failing to reach through the API — nothing published describes a way to reach it. Checked .

Stated as an absence rather than an impossibility, deliberately. “Meta documents no way to do this” is a claim about the documentation, which can be checked. “You cannot do this” would be a claim about the API, which we have not tested. If Meta documents a surface for it, this page changes.

What Postdom checks, and where it is deliberately stricter

Postdom checks your text against 500 and flags it on the approval card, so a reviewer sees the overrun before approving the post. Meta documents the unit as “characters”. Official source; checked .

It is a check a person sees, not a rejection. Nothing stops an over-length caption being submitted: the only hard ceiling in the request itself is Postdom’s own general one, which is far above this. If you submit without a review step, this figure will not stop you.

Meta scopes its sentence to a text post. Postdom applies the same check to media posts too. Meta publishes no figure for the text of a post carrying an image or a video, and it is the same field on the same endpoint either way, so splitting the check would mean inventing the number for one branch.

That choice errs in one direction only, and it is the survivable one. If Meta does allow more text alongside media, the card flags a caption Meta would have accepted — which costs you a second look. The other way round would leave you believing a post went out when it had not. Narrowing this is a change to make the day Meta states a figure for media posts, not before.

Threads is a destination Postdom publishes to; its performance metrics are a separate question and are carried as unverified rather than as zero. See how availability states are recorded.

A second published figure sitting beside the one that binds is not unique to this destination. The Bluesky character limit has the same shape with a sharper edge: both of its caps are declared on the same field of the same file, and they are measured in different units.

Count your text against the checked figure

0 UTF-16 code units · 500 remaining

This counts UTF-16 code units, the same rule Postdom’s own check applies, so a single emoji can cost more than one. Meta documents its figure as “characters” without stating an encoding. Passing here is not Meta accepting the post.

Questions about the Threads character limit

What is the Threads character limit?

For the text of a post published through Meta's API, 500 characters. The 10,000 figure that also circulates is a long-form text attachment — a separate object attached to a post. A page that reports one number without saying which object it governs has answered a question you did not ask.

Can I publish a 10,000-character long-form attachment through the API?

Meta's posting reference documents no way to create one. It gives the publishing endpoint and its text field, states the text-post limit under Limitations, and mentions no long-form attachment or larger figure anywhere. So this is not a higher ceiling you are failing to reach through the API — nothing published describes an API surface for it. If Meta documents one, this page changes.

Does the limit apply to a post with an image or video?

Meta scopes its sentence to a text post and publishes no separate figure for a post carrying media. Postdom applies the same check to both, because it is the same text field on the same endpoint and nothing published justifies splitting it. Note what that check is: an overrun is flagged on the approval card for a reviewer, not rejected at submission. If Meta in fact allows more text on a media post, the card flags a caption Meta would have taken, which costs you a second look rather than a failed publish.

How are the characters counted?

Meta says “characters” without stating an encoding. Postdom counts UTF-16 code units, which is what a JavaScript length check counts, so an emoji can cost more than one. The counter on this page uses Postdom's rule and labels it as such; it is not a Meta validator, and Meta can still reject text that passes it.

Can Postdom report how the post performed?

Not yet. Threads is a destination Postdom publishes to, and every one of its performance metrics is carried as unverified with that reason attached rather than rendered as a zero. An absent measurement and a measured zero are different facts.