Meta Ads Character Limits: Facebook & Instagram Specs

Meta's limits look generous on paper but the platform truncates aggressively on mobile, where ~95% of impressions render. The number that matters isn't the maximum — it's the visible threshold before See more collapses your copy.

Use the Ad Specs Validator

Paste your copy once. See if it fits Google, Meta, LinkedIn, TikTok, and 8 more ad networks — instantly.

Open the Specs Validator →

Feed placements (Facebook + Instagram)

  • Primary text: 125 characters visible on mobile before See more truncation. Hard limit is 2,200 characters but anything past 125 is invisible to most users.
  • Headline: 27 characters visible on most placements, 40 characters hard cap. The shorter visible window is why Meta's own playbook recommends staying under 27.
  • Description (link description): 27 characters visible, 30 characters cap. Often hidden entirely on mobile feed — treat it as optional.

Stories & Reels

  • Primary text overlay on Stories ads: 125 characters visible before truncation.
  • Reels in-video overlay text: 20 characters is the practical safe zone before the CTA sticker covers it. Anything longer will be partially obscured on most devices.
  • CTA button text is fixed — you choose from Meta's predefined list, no custom copy.

Carousel

  • Headline per card: 40 characters cap, 27 characters visible.
  • Description per card: 20 characters is the safe display threshold.
  • Primary text (above the carousel): same 125 character mobile truncation rule.

Messenger and Click-to-Message ads

  • Message body: 600 characters cap.
  • Message intent buttons: 20 characters each, max 3 buttons.

Why these limits exist

The 125-character truncation isn't arbitrary. It's the number of characters that fit in roughly 3 lines of text at the standard mobile font size before the feed card would push the image too far down the screen. Meta optimizes for image-first, copy-second. The 27-character headline visible width matches the link preview card width on a 360-380px viewport (most Android phones).

Counting gotchas

  • Emoji count varies. Most basic emoji (😀, ❤️) count as one character in Meta's UI counter but transmit as 4 bytes in UTF-8. Newer emoji using zero-width joiners (👨‍👩‍👧, 🏳️‍🌈) can count as 5-7 characters depending on whether the renderer collapses the sequence. Test in Ads Manager preview, not a Word doc.
  • Curly quotes and em-dashes (', —) count as one character but render inconsistently across Android WebView versions. Use straight quotes if you're at the limit.
  • RTL languages (Arabic, Hebrew) count by character but the visible truncation point shifts because text aligns right; your value prop needs to land at the start (right side) of the line.
  • Line breaks count as characters. Two \n\n paragraph breaks = 4 characters out of your 125.
  • URLs in primary text count fully even if Meta auto-shortens the displayed version. A 60-character URL eats half your visible budget.

Rules for fitting copy

  • Front-load the offer or hook in the first 40 characters. That's what survives every truncation scenario including small screens and low-bandwidth previews.
  • Use sentence fragments. Full grammatical sentences waste characters on connective tissue.
  • Numbers beat words: 40% off (7 chars) vs forty percent off (17 chars).
  • Cut the brand name from primary text — your page name is already shown above the ad.
  • Save curiosity hooks (questions, ellipses) for after the 125 mark only if you've earned the click on the visible portion.

Rejection vs. truncation

Exceeding character caps doesn't get your ad rejected — Meta will accept up to the hard limit and silently truncate display. What gets rejected: more than 20% text in image (still enforced for some objectives despite the 2021 policy change), prohibited unicode characters, and excessive capitalization flagged by automated review.

Example

Original headline: Premium Organic Cotton T-Shirts Now 40% Off Sitewide (52 chars). Trimmed to fit the 27-char visible width: Organic Tees — 40% Off (22 chars). The brand context moves to the page name slot, the product category leads, and the offer survives truncation on a 360px viewport.

Tip — Build your primary text so the first `40 characters` could stand alone as the entire ad. If someone screenshots only the top line, the offer should still be intact. That's the test.

Questions

Does Meta count emoji as one character or more?
Single-codepoint emoji count as one character in Meta's UI counter. Compound emoji using zero-width joiners (family emoji, flag sequences, skin-tone modifiers) count as 2-7 characters because each joined codepoint is counted separately. Always verify in the Ads Manager live preview — the character counter there reflects exactly what Meta's delivery system sees.
What happens if I exceed Meta's character limits?
Below the hard cap, Meta accepts the ad and truncates display silently — you'll see your full text in Ads Manager but users see it cut at the visible threshold (125 chars primary text, 27 chars headline on most placements). Above the hard cap (2,200 primary, 40 headline, 30 description), the ad fails validation and won't save until you trim it. There's no warning email — bad copy just underperforms quietly.

AdPlus is live — free Starter tier

One login for 12 ad networks. AI plans your campaign, validates every asset automatically, and publishes across every connected account. Start on the free Starter tier.

Get started