Count characters in your Threads text attachment live — 10,000 for the attachment, 500 for the post that carries it, two separate budgets. A unique-link tally against the 5-link cap, a gray-block feed preview, and a live advisor that answers thread or attachment. Free for every account.
Every Threads field in one table — the two long-form budgets, the link rule that spans them, and the fields around them. All limits verified September 2026 against Meta’s official API documentation and Meta Newsroom announcements.
| Field | Character limit | Notes |
|---|---|---|
| Text attachment You are counting this | 10,000 |
The body: a free plaintext field since September 4, 2025, completely separate from the post budget. Formatting is stored separately and costs zero characters. |
| Main post body | 500 |
The hook: text-only when it carries an attachment. URLs count at full length and the feed folds at roughly 175 characters. |
| Total effective writing space | 10,500 |
Both fields are completely independent — a maxed-out post can still carry a maxed-out attachment. |
| Links across entire post unit | 5 unique URLs |
Shared across post text, attachment text, and the link_attachment_url field. Duplicates count once. Enforced since December 22, 2025 via THREADS_API__LINK_LIMIT_EXCEEDED. |
| Thread chain (alternative) | 25 posts × 500 |
The other shape for long content: 12,500 characters across a chain versus 10,000 in one attachment, before numbering overhead. |
| Reply | 500 |
Replies can also carry their own 10,000-character text attachment — posts and replies both qualify. |
| Bio / Description | 150 |
Imported once from Instagram at signup, then edited separately — the two never live-sync. |
| Display name / Username | 30 |
The display name is Threads-only; the @handle is the one truly shared field — same handle on both platforms. |
| Topic tag | 50 |
One clickable topic tag per post; it counts toward the 500-character post limit. |
Dedicated counters for every Threads field
Use this free counter to check your Threads text attachment against the 10,000-character limit. Paste your draft in the tool above and get a live character count, a word count, a reading-time estimate, a unique-link tally against the 5-link cap, and a format advisor that tells you whether your content fits the attachment, the post, or a thread chain. No login required, no subscription, works on every device.
The Threads text attachment is the platform’s long-form writing field. It gives every account 10,000 characters of formatted text that attaches to a post or a reply, free of charge, no subscription needed. Meta launched it on September 4, 2025, with an unusually clear explanation of the problem it solves.
Why did it exist at all? Before September 2025, Threads users who wanted to share anything longer than 500 characters had two options: take a screenshot of their document or split the content across a chain of connected posts. Screenshots are inaccessible, unsearchable, and impossible to copy. Thread chains are fragmented and hard to read as a single piece. The text attachment replaces both workarounds with a native, readable format that expands directly inside the Threads feed.
The best way to understand the feature is as a two-field writing system. You get 500 characters for the post that carries the hook — the sentence or two that appears in the feed and earns a tap — and 10,000 characters for the attachment that carries the substance — the essay, guide, excerpt, or analysis that rewards the tap. Those two budgets are completely independent. A post can use all 500 of its characters while its attachment uses all 10,000 of its own. This counter is built around that two-field workflow.
When a post carries a text attachment, the attachment appears as a gray block below the main post text. The opening lines of the attachment are visible in the feed as a preview. A reader who wants the full text taps “Read more” and the block expands in place — no redirect, no new tab, no leaving Threads. The full formatted text is readable inside the thread.
One detail most guides miss: if you include a link in your main post, that link also appears inside the expanded attachment. The attachment effectively doubles as a link-preview surface. Meta’s own announcement leans into this explicitly — if you are sharing content hosted elsewhere, the recommended pattern is to put the link in the body of the main post and let it echo inside the attachment automatically.
The Verge called the attachment “a Threads-y take on X’s Articles feature” at launch, and PCMag’s headline captured the key nuance: Threads now lets you post 10,000 characters, but not in a way you would expect. It is not a longer post. It is a separate, formatted document that attaches to a post. LinkedIn Articles works similarly in structure — a separate long-form field — but LinkedIn’s article limit runs to about 110,000 characters with full heading tags and embedded images. The Threads attachment is plaintext with styling, no embedded media. For writers choosing where long-form content lives, that distinction matters.
Meta’s API documentation defines the text attachment as a single plaintext field with a maximum of 10,000 characters. Everything visible in the text counts toward that number. Here is the complete picture.
At a standard English word length of roughly 5 characters including spaces, 10,000 characters is approximately 1,500 to 2,000 words — a short newsletter section or a feature-length blog post. At a 238-words-per-minute silent reading pace, that is six to seven minutes of reading. At a comfortable speaking pace of 130 words per minute, it is about eleven to twelve minutes of audio.
Most attachments should not aim for the ceiling. A focused 1,500 to 3,000 characters that ends with a clear call to action usually out-performs a near-10,000-character wall of text, because the tap-to-expand is a commitment you are asking the reader to make. The format advisor in the tool above runs this arithmetic live as you type.
Ask ten character counters how an emoji is counted and you will get two answers. The answer that matters comes from Meta itself: the Threads API documentation states, in its specification of the post text field, that "for the post character limit, emojis are counted as the number of UTF-8 bytes." A standard emoji is 4 bytes, so it costs 4 characters — not 2, and certainly not 1. A flag or a skin-tone modifier costs 8, a three-person family sequence costs 18, and a four-person family costs 25.
Almost every counter on the web still misses this. Most one-page counters simply use JavaScript's .length, which counts a standard emoji as 2 (UTF-16 code units), and community guides repeat the 2-character figure — a few even report 1. Some scheduling platforms validate Threads text in UTF-16 as well. Against the documented rule, all of those under-count emoji-heavy drafts, which is the dangerous direction: a draft that clears a UTF-16 counter can still be rejected at publish.
Meta does not publish a separate counting rule for the attachment's own plaintext field. This counter closes that gap the safe way: it applies the documented UTF-8 rule to every field, attachment included. The result is the strictest documented counting on the platform — if your draft fits here, it fits everywhere. On an emoji-light draft the difference is invisible; on an emoji-heavy one, this is the counter that will not let you down.
The text attachment editor supports formatting by text selection, not by markdown syntax. There is no asterisk to type, no underscore to place. You select text in the editor and apply the style. Here are the five styles available:
| Style | Available in | Best use |
|---|---|---|
| Bold | In-app editor + API | Section headings, key terms, callout lines |
| Italic | In-app editor + API | Emphasis, asides, titles of works |
| Underline | In-app editor + API | Secondary emphasis, links you are calling attention to |
| Strikethrough | In-app editor + API | Visible corrections, updates, irony |
| Highlight | API only — not in the app editor | Callout sentences for API publishers |
This is the most useful technical fact about text attachments and the one most guides fail to explain. Meta models a text attachment as two separate objects: a plaintext field (what the 10,000-character limit measures) and a styling payload — text_with_styling_info, an array of offset, length, and style flags. The styling payload records where each formatted range starts, how long it is, and which styles apply. It is completely separate from the counted text.
The practical consequence: bold an entire paragraph, italicize every third word, highlight the opening sentence in an API post — the character count does not move by a single character. What this counter reports is what the app will count, whether you format afterward or not.
One API constraint to note: styling ranges within the text_with_styling_info array must not overlap. Two styles can apply to the same range by including both in a single range’s styling_info array (for example "styling_info": ["bold","italic"]), but two separate range objects that cover the same character positions will be rejected.
Formatting is the attachment’s structural toolkit, since the attachment has no heading tags:
Links are where the text attachment has documented mechanics that almost no creator-facing guide explains. Here is the complete rule from Meta’s official API documentation:
Meta’s own documentation gives three examples that make the dedup logic concrete:
| Scenario | Link count |
|---|---|
| Post text contains example.com. link_attachment_url is also example.com. | 1 link (same URL counted once) |
| Post text contains instagram.com and threads.com. link_attachment_url is facebook.com. | 3 links (three distinct URLs) |
| Post text contains example.com, example.com again, and test.com. link_attachment_url is test.com. | 2 links (example.com once, test.com once) |
Since December 22, 2025, posts with more than 5 unique links fail to publish at the media container creation step. The API returns the error code THREADS_API__LINK_LIMIT_EXCEEDED. The post is not published. No partial publish happens. The fix is to reduce the total unique URL count across the post text and attachment text to 5 or fewer before retrying.
For most writers, the practical rule is simple: one link in the main post, keep the attachment link-light. The link in the main post also renders inside the expanded attachment automatically — you get the preview card in the post and the echo in the attachment without spending two of your five links.
In the main post API, the field for attaching a link preview is called link_attachment. Inside the text_attachment object, the equivalent field is called link_attachment_url. These are different parameters in different objects. Confusing them produces silent failures or the wrong link displaying. If you are building an integration that publishes text attachments, the correct structure is the text_attachment JSON object with plaintext (required), link_attachment_url (optional), and text_with_styling_info (optional).
Meta’s API documentation lists five hard constraints for text attachments. Most creator-facing guides never mention them. A post that violates any of these fails silently in the app or returns an API error — with no clear message about why. Know them before you publish:
Yes. Meta’s developer documentation explicitly confirms that text attachments work “in a post or a reply” with up to 10,000 characters. A reply has the same attachment capabilities as a standalone post — the same character limit, the same formatting options, the same link rules, the same carrier restrictions (text-only, no poll).
This opens a use case that most guides ignore completely: long-form Q&A threads. If someone asks a detailed question in a Threads post, your reply can carry a full 10,000-character answer as an attachment — a structured guide, a step-by-step tutorial, a detailed analysis — all expanding directly inside the original thread. Each reply with an attachment collects its own likes and further replies, making the discussion self-contained and deep.
Use the Reply mode in the counter above when drafting a long reply. The counting rules are identical to the Attachment mode, with the feed-fold marker active for the 500-character reply field above it.
Every long piece of content on Threads ships in one of two shapes: a text attachment on a single post, or a chain of 500-character posts threaded together. The format advisor in the counter above does this arithmetic live. Here is the framework:
| Factor | Use text attachment | Use thread chain |
|---|---|---|
| Character ceiling | 10,000 characters in one unit | 25 posts × 500 = 12,500 characters (minus numbering space) |
| Content type | One continuous document: essay, guide, chapter, transcript | Serialized parts where each earns its own engagement |
| Engagement mechanics | All likes and replies collect on the single carrier post | Each post in the chain collects its own likes and reposts |
| Formatting | Bold, italic, underline, strikethrough available | Plain text only (no formatting in standard posts) |
| Feed presence | One clean post with an expand block | Each post appears independently in followers’ feeds |
| Reading experience | Single tap-to-expand, continuous reading | Scroll through multiple consecutive posts |
| Best for | Essays, guides, book excerpts, journalism, documentation | Live updates, numbered arguments, step-by-step where each step benefits from independent sharing |
In May 2026, the Threads mobile app formalized a behavior that catches many writers off guard: pasting more than 500 characters into the main post composer automatically splits the content into a multi-post thread. The app chooses the break points. For carefully structured long-form content, those break points are almost always wrong.
The correct workflow is to draft your attachment content in this counter first, in Attachment mode, with the 10,000-character budget visible. When the count is confirmed, paste it into the attachment editor inside the app — not into the main post field. If you accidentally paste into the main post field, the auto-split fires and your formatting structure is gone. That is exactly the failure this tool’s format advisor is designed to prevent.
The text attachment is the sharpest free-versus-paid contrast between any two major social platforms. Here is the complete picture:
| Platform | Long-form feature | Character limit | Cost | Formatting |
|---|---|---|---|---|
| Threads (text attachment) | Text attachment (tap-to-expand block) | 10,000 | Free for every account | Bold, italic, underline, strikethrough (highlight via API) |
| X (standard post) | Standard post | 280 | Free | Plain text only |
| X Premium (longer posts) | Extended posts | 25,000 | Paid subscription | Rich text |
| X Articles | Dedicated article format | ~100,000 | Top Premium tier | Headlines, images, rich text |
| LinkedIn Articles | Article editor | ~110,000 | Free | Full heading tags, images, embeds |
| Medium | Full article platform | No set limit | Free (partner paywall optional) | Full rich text, images, embeds |
| Substack | Newsletter / post | No set limit | Free (paid subscriptions optional) | Full rich text, images, embeds |
The key comparison: X locks long-form posts of up to 25,000 characters behind its paid tiers and reserves its Articles feature for the top tier. Threads gives 10,000 formatted characters to every free account. For a writer, journalist, or creator who would consider paying for X primarily for the long-form posting capability, the Threads text attachment delivers equivalent utility at zero cost.
Where X Premium wins is raw length — 25,000 characters versus 10,000 — and the fact that each long post appears as a full post in the feed rather than a tap-to-expand block. Where Threads wins is access: no payment required, no tier to unlock, no credit card needed. For the majority of long-form use cases — an essay, a newsletter tease, a chapter excerpt, a think piece — 10,000 characters is more than enough.
Threads posts can be edited for 15 minutes after publishing. Within that window, you can change the text of the post. What you cannot do: add an attachment that was not there at publish, or swap an attachment for a different one. Additional attachments cannot be added during an edit.
For a 3,000-character text attachment, a typo found at minute 16 presents an unpleasant choice: delete the post and repost it (losing all engagement it has already received) or live with the error. Neither option is good. The professional habit is to treat publishing as final. Draft the attachment in this counter, verify the count and link tally, read it once more, and only paste it into the app when it is actually ready.
Threads is integrating with the fediverse — the decentralized network of servers running on the ActivityPub protocol (the same system that powers Mastodon). Users who opt in to fediverse sharing have their posts visible on Mastodon and other ActivityPub-compatible platforms. There is a timing detail that matters for writers with cross-platform audiences: posts are shared to the fediverse only after the 15-minute edit window closes. The delay exists specifically so your edits can land before the post leaves Threads.
That means an edit inside the window is not free of consequences: the fediverse copy — the edited version — still waits until the window closes. For writers whose Threads audience overlaps with Mastodon, timing matters: publish once, publish final, and let the edit window close before expecting the post to appear in the fediverse feed.
Text attachments are fully supported by the Threads API — support was added on October 3, 2025, a month after the feature launched, and the documentation was last updated July 2, 2026. This matters even if you never write code, because it is how scheduling tools and publishing pipelines create attachments. Understanding the API structure also tells you exactly what data the attachment carries and retrieves.
Step 1 — create a media container:
POST /{threads-user-id}/threads
Include the text_attachment JSON object with these fields:
plaintext (required) — the attachment text, maximum 10,000 characterslink_attachment_url (optional) — a URL to attach to the attachmenttext_with_styling_info (optional) — array of offset, length, and styling_info objects defining formatted ranges; ranges must not overlapStep 2 — publish the container:
POST /{threads-user-id}/threads_publish
Pass the media container ID returned in Step 1. The post with its attachment publishes as one unit.
plaintextlink_attachment_urltext_with_styling_infoTo retrieve a post with its attachment, request the text_attachment field from the GET endpoint. The response returns the plaintext, the link_attachment_url, and the text_with_styling_info ranges — the complete reconstruction of the formatted document. This is how archival tools, analytics platforms, and scheduling tools read back content they have published.
API publishing inherits the platform’s standard rate limits: 250 posts and 1,000 replies per rolling 24-hour window per profile. A heavy attachment publishing schedule fits comfortably inside the daily quota. The five-link rule, the text-only restriction, and the 10,000-character limit all apply identically through the API and the in-app editor.
Not all third-party scheduling tools pass the text_attachment object through their Threads integration. Some tools support the 500-character main post field only and silently strip the attachment when publishing. Before building a workflow around scheduled text attachments, verify in your scheduling tool’s documentation that it explicitly supports the text_attachment API parameter — not just Threads scheduling in general. A scheduler that “supports Threads” is not the same thing as a scheduler that supports Threads text attachments.
An attachment is a promise of depth. The 500-character post above it is the pitch that sells the promise. Every element of the writing strategy flows from one fact: the feed shows your post text, not the attachment’s opening line. The post carries the entire burden of earning the tap.
The 500-character main post is not an opportunity to cram in as many words as possible before the tap. It is an opportunity to write the single best question, provocation, or teaser that makes a reader want to see what is behind the “Read more.” A 70-character hook with a genuine curiosity gap will out-earn a 480-character summary almost every time.
A practical engagement guide for the main post field:
The feed-fold marker in this tool’s Post mode shows approximately where the feed truncates the main post behind a “more” tap — around the 175-character mark. Front-load your most compelling element before that line. Everything after it is asking the reader to perform two taps: one to expand the post, one to open the attachment.
Meta’s launch materials describe two canonical use cases for text attachments: an author teasing a portion of a forthcoming novel, and a journalist promoting a think piece. Both are the same structural pattern: give enough substance to be worth the tap, hold enough back to justify the click to the full piece.
Opening lines of a novel tease using 10,000 characters:
“Chapter One The lighthouse had been dark for eleven years when Marguerite finally returned to relight it.” — that is 106 characters of 10,000. Most of a novel excerpt is atmosphere, not budget.
A reader who opens an attachment has made a commitment, but not an unlimited one. Write for someone who is deciding every paragraph whether to continue:
Google now indexes public Threads posts. Within that reality, a public text attachment is the largest long-form writing surface Threads has, and its first paragraph does double duty: the same opening lines that serve as the feed preview also represent the post in search. Write the first paragraph as if it were a meta description — concrete language, the actual topic, the specific thing you are analyzing. The rest of the attachment can have whatever rhythm serves the reader. The opening lines serve two masters: the Threads feed preview and Google’s index.
Text attachments are built for book promotion. Share a chapter excerpt — 3,000 to 5,000 characters covers the opening hook of most chapters — with the pre-order or purchase link in the main post. The excerpt proves the writing is worth buying. The link closes the loop. No separate page needed, no leaving Threads.
An attachment works as a native think piece or op-ed. Publish the argument fully in the attachment, put the sharpest line as the main post hook, and link to the full published piece for readers who want sources and context. The attachment builds credibility with the writing; the link sends committed readers to the full version.
The tease-and-subscribe pattern is the natural fit. Share one strong section of the current issue in the attachment — enough to demonstrate value, not enough to replace the newsletter. Put the subscribe link in the main post. Readers who find the content on Threads convert to subscribers; subscribers get the full version. The attachment is a sample, not a substitute.
A 10,000-character attachment is enough space for a complete lesson unit: concept introduction, worked examples, common mistakes, and a summary. Format it with bold section headings and short paragraphs for mobile readability. For researchers, the attachment is a place to share findings and methodology in a format that is searchable and citable — more durable than a thread chain, more accessible than a paywalled paper.
The episode summary use case is underutilized. A complete transcript of the key ten minutes of an episode, formatted with speaker labels in bold, gives listeners a searchable reference and gives non-listeners a reason to engage with the episode’s content on Threads before deciding to listen. The episode link goes in the main post.
The tool above has three modes that match the Threads two-field writing system:
Five features do the work the in-app editor does not provide:
Four quieter signals run alongside them: a hashtag line that counts how many characters your hashtags consume (with the one-topic-tag-per-post rule and its no-periods, no-ampersands restriction), an amber warning when complex emoji — flags, skin tones, ZWJ families — are detected in your draft, a paragraph-length flag when a single block runs long enough to become a wall of text on a phone, and a fediverse note that appears after you have been drafting for ten minutes or more, reminding you that posts only syndicate after the edit window closes. Copy, Clear, and Share buttons are available in every mode. The Share button encodes your draft into a URL parameter that you can send to a collaborator or save for later — the draft opens in the counter exactly as you left it — and your text also autosaves to this device as you type, so an accidental refresh mid-draft is recoverable from the banner above the editor.
Fourteen common questions about the 10,000-character attachment, formatting, link rules, carriers, edits, and the API