Each network sets its own rules, which is why the same post can publish to LinkedIn and be refused by Instagram. Ocoya checks a post against these before publishing and tells you which limit it breaks.
Caption limits
| Network | Caption | Hashtags |
|---|---|---|
| 5,000 | No limit | |
| 2,200 | 30 | |
| X (Twitter) | 280 per post, 5,000 total | No limit |
| 3,000 | No limit | |
| TikTok | 2,200 | No limit |
| 500 | No limit | |
| Threads | 500 per post, 5,000 total | No limit |
| Bluesky | 300 per post, 5,000 total | No limit |
| Mastodon | 500 per post, 5,000 total | No limit |
| YouTube Shorts | 5,000 | No limit |
| Google Business | 1,500 | No limit |
| Telegram | 4,096 (1,024 on media) | No limit |
| Discord | 2,000 | No limit |
| Slack | 40,000 | No limit |
| Dribbble | 3,000 | 12, lifted into tags |
| Tumblr | 100,000 | 20, lifted into tags |
| WordPress | 100,000 | No limit |
| DEV.to | 100,000 | No limit |
| Whop | 50,000 | No limit |
| Notion | 100,000 | No limit |
| Webflow | 100,000 | No limit |
| Framer | 100,000 | No limit |
| Wix | 100,000 | No limit |
| Twitch | 500 per message, 5,000 total | No limit |
| Kick | 500 per message, 5,000 total | No limit |
| Snapchat | 160 (Spotlight only) | No limit |
| Custom | 200,000 | No limit |
Where a network shows two numbers, the first is what fits in one post and the second is the point at which Ocoya refuses the post. Between the two, Ocoya splits your text into a thread — see Long posts and threads.
Image limits
| Network | Images per post | Max size each |
|---|---|---|
| 10 | 8 MB | |
| 10 | 8 MB | |
| X (Twitter) | 4 | 5 MB |
| 9 | 10 MB | |
| TikTok | 35 | 20 MB |
| 5 | — | |
| Threads | 10 | 8 MB |
| Bluesky | 4 | 2 MB |
| Mastodon | 4 | 16 MB |
| Telegram | 10 | 10 MB |
| Discord | 10 | 10 MB |
| Slack | 10 | 100 MB |
| Google Business | 1 | 5 MB |
| Dribbble | 1 | 8 MB |
| Tumblr | 10 | 20 MB (GIFs 10 MB) |
| WordPress | 10 | Your site’s upload limit |
| DEV.to | 10 | — |
| Whop | 10 | 100 MB |
| Notion | 10 | — |
| Webflow | 10 | — |
| Framer | 1 used | — |
| Wix | 10 | — |
| Snapchat | 0 | — |
| Custom | 20 | — |
Video limits
| Network | Videos per post | Max size |
|---|---|---|
| 1 | 100 MB | |
| 1 | 100 MB | |
| X (Twitter) | 1 | 100 MB |
| 1 | 100 MB | |
| TikTok | 1 | 100 MB |
| Threads | 1 | 100 MB |
| 1 | — | |
| Mastodon | 1 | 99 MB |
| YouTube Shorts | 1 | 256 MB |
| Telegram | 10 | 50 MB |
| Discord | 10 | 10 MB |
| Slack | 10 | 100 MB |
| Whop | 10 | 100 MB |
| Notion | 10 | — |
| Snapchat | 1 | 300 MB |
| Custom | 20 | — |
Bluesky, Google Business, Dribbble, Tumblr, WordPress, DEV.to, Webflow, Framer, Wix, Twitch and Kick take no video at all — attach one and the post is refused. YouTube Shorts is the mirror image: it takes a video or a GIF and no still images.
Instagram Reels are a separate case: up to 1,000 MB, between 3 seconds and 15 minutes.
Other rules worth knowing
| Network | Rule |
|---|---|
| Business or Creator account only, linked to a Facebook Page | |
| Pages only, never personal profiles | |
| Every Pin needs a board | |
| PDF carousels need at least 2 images and a 5–50 character title | |
| Dribbble | A shot is one image, required. Dribbble accepts only 400×300 or 800×600, so anything else is resized for you. Needs a title |
| Tumblr | Every blog on the account connects as its own channel. A title is optional and publishes as a heading. Your caption’s hashtags become Tumblr tags |
| WordPress | Needs an application password over https, and a user with the Author, Editor or Administrator role. A title is taken from your first caption line if you don’t set one |
| DEV.to | Articles are Markdown and need a title, up to 128 characters. Ocoya takes it from your caption’s first line if you don’t set one |
| Whop | One channel per forum, chosen when you connect. Body is Markdown and is required |
| Notion | A post becomes a sub-page of a page, or a row in a database. The first caption line is the title. Up to 10 images, videos and GIFs in any mix |
| Webflow | A post becomes an item in a CMS collection: the title is its Name and slug, the text its rich text body, the first image its main image. Required fields with no value block the post — see Webflow |
| Framer | A post becomes an item in a CMS collection. Publishing live publishes the whole project, including other unpublished changes — see Framer |
| Wix | A post becomes a blog post on the site: the title is its title, the text its body, the first image its cover. Every post is written by the site member chosen when connecting — see Wix |
| Twitch | Chat messages only — no attachments |
| Kick | Chat messages only — no attachments. Capped at 2,048 bytes as well as 500 characters |
| Snapchat | Vertical .mp4 only, 5-60 seconds, 540x960 or larger. No images. Connects to a Public Profile, which needs a Snapchat business organization |
| Custom | Sends JSON to your own endpoint. Add headers under Advanced options so it can authenticate the request |
| Telegram | Up to 10 photos and videos in one album. A GIF goes on its own. A caption over 1,024 characters on media follows as a reply |
| Discord | Maximum 10 attachments per post |
| Slack | Up to 10 files in any mix of images, video and GIFs, shared in one message. A private channel needs Ocoya added to it, which happens when you connect |
| Google Business | Events and offers need a title, start time and end time |
| TikTok | Custom video thumbnails are not supported |
| Custom thumbnails work for Reels, not standard video |
Image shapes
Instagram accepts a limited range of shapes and Ocoya crops to fit:
- Landscape — 1.91:1
- Portrait — 4:5
If an image is cropped differently than you expected, it was outside that range. Crop it yourself first to control what’s kept.