Glossary

How the Threads API Link Limit Counts URLs in a Post

Taras Shynkarenko
Taras Shynkarenko
•Updated: •6 min read
How the Threads API link limit counts URLs in a postHow the Threads API link limit counts URLs in a post

TL;DR, Quick Answer

6 min read

Meta restricts Threads posts to 5 links or fewer. Starting December 22, 2025, a post with more than 5 fails at the media creation step, POST /{threads-user-id}/threads, with the error code THREADS_API__LINK_LIMIT_EXCEEDED. Meta counts unique URLs: a URL repeated in text counts once, and a link_attachment that matches a URL in text is "only counted once, rather than twice." Meta does not say whether URLs inside a text attachment's plaintext count, or how it treats http and https versions of the same address.

Meta's Threads API link limit allows 5 unique URLs per post, and since December 22, 2025 a media container with a sixth fails at creation with the error code THREADS_API__LINK_LIMIT_EXCEEDED. The rule sits under Links in Meta's Threads posts guide as a one-line bullet, "The number of links is restricted to 5 or less," followed by a warning box:

Starting December 22, 2025, Threads posts containing more than 5 links will fail to post during the media creation step (POST /{threads-user-id}/threads) with the error code: THREADS_API__LINK_LIMIT_EXCEEDED.

The Threads changelog announced the change on December 8, 2025 and logged it again on December 22, 2025 with the same sentence: "Threads posts with more than 5 links will fail to post with the error THREADS_API__LINK_LIMIT_EXCEEDED."

This is the only post limit in the Threads documentation with its own error string. The 500 character cap on text has none, as covered in how the Threads API 500 character limit treats topic tags.

How does Meta count links in a Threads post?

Meta counts unique URLs across the text field and the link_attachment parameter together. The posts guide gives three rules:

  1. "All unique URLs found in the text field are counted as links."
  2. "If the link_attachment field contains a URL that is different from all URLs in the text field, it is counted as an additional link."
  3. "If the link_attachment URL is the same as any URL in the text field, it is only counted once, rather than twice."

Meta then works three examples, reproduced here as written:

In textIn link_attachmentMeta's count
www.facebook.comwww.facebook.com1 link
www.instagram.com, www.threads.comwww.facebook.com3 links
www.example.com, www.example.com, www.test.comwww.test.com2 links

The third row is the useful one. Four URL mentions produce a count of 2, because repeats collapse and the attachment matches a URL already in the text. The inverse is what catches people: six different URLs in a list of "resources" fail even when the post reads as short.

What does Meta treat as a URL?

Meta's examples use bare domains such as www.facebook.com, with no https:// in front. So the counter does not wait for a scheme before it counts something as a link, and a domain typed in plain prose adds to the total.

Beyond that, Meta is silent. The posts guide does not say whether http://example.com and https://example.com are one URL or two, whether a trailing slash or a query string makes a new URL, or whether a domain without www matches one with it. The examples only ever repeat a URL character for character. Until Meta documents normalisation, count any two strings that differ as two links, and write the same URL identically everywhere it appears in a post.

What Meta documents and what it leaves open
Documented
  • Bare domains such as www.facebook.com count as links
  • A URL repeated character for character counts once
  • A link_attachment matching a URL in text counts once
Not documented
  • http versus https versions of one address
  • A trailing slash or a query string
  • A domain with www versus without
Until Meta says more, write each URL identically everywhere it appears.

A phone displaying an error screen on a desk, representing an app rejecting a post before it can publish.

Where in the publishing flow does the error appear?

At container creation, which is step one. Threads publishing takes two calls: POST /{threads-user-id}/threads creates a media container, and POST /{threads-user-id}/threads_publish turns it into a live post. Meta names the first call as the point of failure.

That placement has two consequences. The post never reaches the publish step, so it never touches the 250-post publishing quota, which Meta enforces on threads_publish. The mechanics of that quota are in the Threads API 250 posts per day limit. And no container ID comes back, so there is nothing to poll. The troubleshooting page's container status values, such as EXPIRED and ERROR, apply only to containers that exist, and its list of error messages covers video and audio processing only.

Meta documents the error as a code string. It does not document the HTTP status or a numeric error code that accompanies it, so match on THREADS_API__LINK_LIMIT_EXCEEDED in the response rather than on a number.

Where a sixth link stops a post
Post with 6 unique URLs
POST /{threads-user-id}/threads
THREADS_API__LINK_LIMIT_EXCEEDED
No container ID, threads_publish never called
The failure comes before publishing, so the 250-post quota is untouched.

Meta's wording leaves this open. The Limitations list under Links opens with "This feature is only available for text-only posts. It will not work with image, video, or carousel posts," and the 5-link bullet is the next line in the same list. The first bullet describes link_attachment, which the parameter table also restricts: "Can only be used for media_type=TEXT posts."

The warning box itself says "Threads posts containing more than 5 links," with no media type attached, and an image or video post can still carry URLs in its text. Meta gives no example for that case. The safe reading is that 5 unique URLs is the ceiling for any post type, since nothing in the docs says a caption on an image post is exempt.

AdaptlyPost
AdaptlyPost

Start Your 7-Day Free Trial

All-platform analytics

Social Inbox

AI-powered assistant

How do text attachments change the count?

Text attachments bring their own copy of the rule. The Text Attachments page, which covers long-form writing "with up to 10,000 characters and a link," repeats the 5-link bullet, the December 22, 2025 warning and the same three examples, with link_attachment_url inside the text_attachment object taking the place of link_attachment.

It adds one restriction: "If there is already a link attachment in the main post, a link attachment cannot be added in the text attachment." So a post has one attachment link at most, in one place or the other.

The gap is the plaintext field. It can hold up to 10,000 characters, and Meta's counting rules name only URLs "found in the text field" and the attachment URL. They never mention URLs written inside plaintext. Meta does not say those are exempt, and it does not say they count. Keep the unique total across text, plaintext and the attachment at 5 or fewer and the question never comes up.

A person typing at a laptop next to a handwritten checklist, representing the step of counting links before publishing a post.

Meta's own instruction is one line: "If you receive this error, reduce the number of unique links in your post to 5 or less." In practice that means counting before you call the API:

  1. Extract every URL and bare domain from text, plus link_attachment or text_attachment.link_attachment_url.
  2. Collapse exact duplicates.
  3. If more than 5 remain, drop links or move them into a reply, which is created as a separate post through the same endpoint with reply_to_id and so carries its own count.

A scheduler should run that check when a post is written, not when it fires, because a failure at 03:00 is a missed slot. The same goes for the character count and the daily quota. For keeping a queue clean, see how to schedule Threads posts. The limit belongs to Threads, so every Threads scheduling tool works inside the same 5.

Frequently asked questions

It means the post contained more than 5 unique links. Since December 22, 2025, Meta rejects such posts during the media creation step, POST /{threads-user-id}/threads, and returns this error code instead of a container ID.

No. Meta counts "All unique URLs found in the text field," so a URL repeated in text counts once. A link_attachment that matches a URL already in text "is only counted once, rather than twice."

Only when it adds a new URL. Meta states that a link_attachment different from every URL in text "is counted as an additional link," while one that matches a URL in text adds nothing to the count.

On December 22, 2025. Meta announced it in the Threads changelog on December 8, 2025, and the warning in the posts guide begins "Starting December 22, 2025."

Does a failed link-limit post use up the 250-post daily quota?

Meta enforces the 250-post limit on POST /{threads-user-id}/threads_publish, and the link-limit error arrives earlier, at container creation. A post rejected for too many links never reaches the publish call.

Meta counts links per post. A reply is a separate post, created through the same container endpoint with reply_to_id, so spreading links across a post and its replies keeps each one under the limit. Meta documents no combined cap across a thread.

How many links can a Threads post have?

A Threads post can have 5 unique URLs. Meta's posts guide says "The number of links is restricted to 5 or less," and a sixth link fails at container creation with THREADS_API__LINK_LIMIT_EXCEEDED. A URL repeated in the post counts once.

Meta's examples use bare domains such as www.facebook.com and count them as links. So the counter does not wait for a scheme. A domain typed in plain prose adds to the total.

Meta does not say. The posts guide only repeats URLs character for character, so treat two strings that differ as two links. Write the same URL identically everywhere it appears.

AdaptlyPost
AdaptlyPost

Start Your 7-Day Free Trial

All-platform analytics

Social Inbox

AI-powered assistant

Do URLs in a text attachment's plaintext count toward the limit?

Meta does not say. Its counting rules name URLs in the text field and the attachment URL, and never mention plaintext. Keep the unique total across text, plaintext and the attachment at 5 or fewer.

Was This Article Helpful?

Let us know what you think!

See us more often in Google

One click marks AdaptlyPost as a preferred source, so our articles sit higher in your Top Stories, AI Mode, and AI Overviews.

Before you go...

AdaptlyPost

AdaptlyPost

Schedule your content across all platforms

Manage all your social media accounts in one place with AdaptlyPost.

All-platform analytics

Social Inbox

AI-powered assistant

Related Glossary Terms

Related Articles