CaptionSnap

About CaptionSnap

CaptionSnap is built for performance marketers, paid-social managers, and small agencies who keep shipping ads with copy that gets clipped at “See more” — or worse, hidden behind a CTA button or a profile avatar. Paste your ad copy. See the truncation in real time. Fix it before launch. No account, no upload, no waiting.

Free to use forever. Pro at $49/mo unlocks bulk paste of 10 headlines × every placement, PNG export for creative handoff, and an ad-free experience.

Why this exists

Every ad platform truncates copy differently. Meta clips primary text at roughly 125 characters on Feed but at 55 on Reels. TikTok hides everything past ~100 characters behind a tap. LinkedIn collapses at 150 on desktop and 140 on mobile. None of these limits are documented in one place, and most change quietly. Teams ship copy that looks fine in the ad-builder preview, then dies in the wild because the live placement covers the bottom 22% of the canvas with a username block.

CaptionSnap solves both halves of the problem at once: character limits (where the platform stops rendering) and safe zones(where the platform's own UI chrome — progress bars, avatars, captions, CTA pills — covers your creative). The simulator renders an authentic per-placement layout so what you see is what your audience sees.

How the data stays current

Every limit, truncation point, warn threshold, and safe-zone rectangle lives in a single source-of-truth file (lib/platform-specs.ts). The verification pipeline:

  1. Run paid impressions on each live placement with copy calibrated to the boundary (e.g., a string ending exactly at the suspected clamp).
  2. Capture the rendered creativefrom a real device on first-party network conditions — not the platform's preview tool, which lies.
  3. Measure the safe-zone rectangles in pixels, normalize to percentages, and update the spec with a fresh lastVerifieddate.
  4. Regression-test (tests/unit/truncate.test.ts) every placement × field combo before shipping.

The most recent global re-verification was 2026-04-15. Spec drift between runs is reported publicly in the changelog below.

Who built it

CaptionSnap is run as a small, focused operation. The architecture is intentionally minimal: Next.js on Vercel, no database, no authentication, no server-side state. The URL is the database — share-link state is encoded into the query string with lz-string, so links work without an account and nothing about your copy is stored on our servers. Embeds are sandboxed iframes; the simulator runs entirely in your browser.

That minimalism is a feature, not a constraint. It's why the simulator loads in under a second, why share links never expire, and why there's no login wall in front of a tool you should be able to use in 30 seconds.

What we don't do

Pro — for teams that ship paid ads weekly

The free simulator is a single-placement check — paste copy, see one platform, fix one creative. That's right for solo marketers and one-off audits.

Pro ($49/mo or $499/yr) is built for the team running 10+ creatives a week across multiple platforms. It adds:

Coverage

8 platforms · 42 placements. 99 platform-specific guides covering character limits, safe zones, comparisons, and glossary terms — see the sitemap for the full list.

Chrome extension

Same simulator, in your toolbar. CaptionSnap for Chrome reads the same platform-spec data as the website — when we re-verify a placement, the next extension build picks it up automatically. Popup-only, no host permissions, fully offline.

Get in touch

Spec error? Missing placement? Ideas? Contact us or email hello@captionsnap.io.

Changelog