Not a direct copy

Cross-posting X to Instagram: what actually breaks

Not directly. Instagram will not accept a text-only post, so a straight copy is impossible — the post has to be rebuilt for Instagram, not forwarded to it.

Side by side

XInstagram
Characters2802,200
Mediaoptionala photo or video (required)
Hashtags1-2 hashtags, zero is finemax 5 hashtags at the END of the caption
Links in bodysuppress reachfine
Needs platform approvalyesyes

What changes, one by one

Instagram will not accept a text-only post

X posts are frequently text-only. Instagram requires a photo or video on every post, so there is no direct equivalent — you have to attach media before this cross-post is even possible.

You have 1,920 characters you are not using

X caps at 280 characters, Instagram allows 2,200. Posting the short version verbatim wastes the room Instagram gives you to actually explain the thing.

The hashtag rules are not the same

X: 1-2 hashtags, zero is fine. Instagram: max 5 hashtags at the END of the caption. Carrying the tag block across is the single most obvious sign of an automated cross-post.

Instagram lets you put the link back in

X penalises links in the body, so posts written for it park the URL elsewhere. On Instagram links in the body are fine — putting it back is free reach.

Why copy-paste cross-posting underperforms

X is one hook and nothing else — opinionated, conversational, over in a breath. Instagram is built for short captions — under 100 characters is rewarded. Those are different jobs, so the same words cannot do both well — and every algorithm here demotes text that obviously was not written for it. The fix is not to skip cross-posting; it is to send a native version to each network.

Publish to both in one call

curl -X POST https://postwire.io/api/post \
  -H "Authorization: Bearer $POSTWIRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "platforms": ["x", "instagram"],
    "text": "Your post",
    "per_platform": {
      "x": { "text": "The X version" },
      "instagram": { "text": "The Instagram version" }
    }
  }'

PostWire's /api/generate writes those per-platform versions for you from a single prompt, respecting every limit in the table above. From an AI agent it is one MCP tool call.

Get an API key free →

Questions people actually ask

Can I cross-post from X to Instagram?
Not directly. Instagram will not accept a text-only post, so a straight copy is impossible — the post has to be rebuilt for Instagram, not forwarded to it.
What is the character limit difference between X and Instagram?
X allows 280 characters and Instagram allows 2,200.
How do I post to X and Instagram at the same time?
With PostWire, one API call publishes to both: POST /api/post with platforms set to ["x","instagram"]. Or one MCP tool call from an AI agent.

Other pairs: Instagram to X · all combinations · which APIs need approval