Not a direct copy

How to 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.

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.

Do this without writing the post twice

PostWire takes one idea and publishes a version written for each network — the right length, hashtags and format per platform. It also refuses posts that would fail, like a video network with no video, before they are queued.

Free for one brand — 30 posts a month, no card. Starter is $9/month for three brands and 300 posts. There is a REST API and an MCP server if you would rather automate it.

Start free — no card →

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

Most tools that do this bill per connected profile. What that actually costs once you add a second brand is worth reading first.