How-to guide

How to cross-postfrom X to LinkedIn

Connect LinkedIn, choose where a post goes, make cross-posting the default if you want it, and understand what LinkedIn does with threads and what it skips. About five minutes, and the connection step repeats only every 60 days.

Last updated: September 2026

7-day free trial. Cancel anytime.

Before you start

You need an X account connected, which you already have, and a personal LinkedIn profile. You do not need a LinkedIn developer app, an API key, or a partner application. Company Pages are not supported, so posts appear on the profile of whoever signs in.

The six steps

  1. Connect LinkedIn in Settings > Accounts

    Open Settings, go to Accounts, and click Connect LinkedIn. You sign in on LinkedIn itself and approve OpenTweet, so your password never reaches OpenTweet. There is no developer app to create, no API key, and no partner application. The connection is your personal profile, which is where the posts will appear.

  2. Pick the networks on a post

    With two or more networks connected, the composer shows a chip for each one. Tick LinkedIn alongside X, or on its own, then schedule or publish as usual. A post needs at least one network, so the last chip cannot be turned off.

  3. Optionally turn on Auto cross-post

    The Auto cross-post switch on the Cross-posting page sends a post that names no networks of its own to every connected, working network, LinkedIn included. The chips on a post always win over it. It applies to new posts only, so your existing queue keeps the targets it was saved with.

  4. Know what happens to threads

    LinkedIn has no threads. A thread that targets LinkedIn goes out there as one post, with the parts joined by a blank line and the images from every part collected. On X the same draft still posts as a reply chain.

  5. Read the per-network result

    Each published post carries one result per network: published, failed, or skipped, and a skip carries the reason. Check it after your first cross-post, because X and LinkedIn disagree about length and media.

  6. Reconnect every 60 days

    LinkedIn sign-ins last 60 days and LinkedIn gives self-serve apps no refresh token, so no tool on that access can renew them quietly. When one expires, scheduled LinkedIn posts are held and OpenTweet emails you. Reconnecting is one click.

Network chips or Auto cross-post, and which wins

These are two different controls and mixing them up is the one thing that surprises people. The chips on a post always win.

The chips on a post

  • Decide where that one post goes
  • Set them and Auto cross-post is ignored for that post
  • Use them for a post that belongs on X only, or LinkedIn only
  • Shown once two or more networks are connected

Auto cross-post

  • Decides where a post goes when it names no networks
  • On means every connected, working network, LinkedIn included
  • Applies to new posts, not to ones already scheduled
  • The API and MCP server follow it too, which matters if an agent writes your posts

What LinkedIn does with a thread

LinkedIn has no threads, only a post. A thread that targets LinkedIn is combined into one post, joined by blank lines, with every image from every part collected.

thread to LinkedIn
Draft, three parts:
  1. Two things I got wrong about queues.
  2. One: I retried every error, including permanent ones.
  3. Two: I never capped how big the queue could get.

On LinkedIn, one post:

Two things I got wrong about queues.

One: I retried every error, including permanent ones.

Two: I never capped how big the queue could get.

The combined text has to fit in 3,000 characters. A short thread clears that easily. A long one does not, and then it is skipped on LinkedIn with the reason stated while the thread still posts on X.

Why a post gets skipped, and what to do

A skip is not a failure. The post still went out everywhere it fit, and the reason is recorded so you can fix the draft rather than hunt for it.

What you seeWhyWhat to do
Skipped on LinkedIn, published on X
The text is over 3,000 characters, counted strictly so an emoji counts as 2. For a thread, the combined length is what counts. A long X Premium post can run far past it.
Shorten it under 3,000, or leave LinkedIn off that post. Nothing is truncated for you.
Skipped on LinkedIn, video attached
LinkedIn video is not supported yet.
Publish the video post to X only, and write a separate text or image post for LinkedIn.
Held on LinkedIn, sign-in expired
LinkedIn sign-ins last 60 days, with no refresh token.
Reconnect in Settings > Accounts, in one click. OpenTweet emails you when this happens.
Published on LinkedIn, failed on X
Something on the X side refused the post. Networks are delivered separately, so one failing does not stop the other.
Read the error recorded against the post. The LinkedIn copy is already live and does not need republishing.

Images are not a skip reason on their own: up to 4 per post, JPEG, PNG and GIF, and other formats are converted to JPEG.

Writing one draft that lands on both

LinkedIn allows far more text than X, so length rarely bites unless the X post is a long Premium one.

Lands on both

  • Under 280 characters, which clears both limits
  • Up to 4 images
  • A thread, which becomes one post on LinkedIn
  • Plain text and links

X only

  • Anything over 3,000 characters, including long Premium posts
  • Video
  • X Articles, X Communities, evergreen recycling, and DM campaigns
  • Anything you want analytics on, which stay X-only

Adding Bluesky as a third network? Bluesky stops at 300 characters, so a post that fits LinkedIn can still be skipped there. The Bluesky guide covers it.

Doing it from the API

The same choice is one field on POST /api/v1/posts. Any non-empty subset of x, bluesky and linkedin works.

publish to X and LinkedIn
curl -X POST https://opentweet.io/api/v1/posts \
  -H "Authorization: Bearer ot_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Release 2.4 is out. Notes in the changelog.",
    "platforms": ["x", "linkedin"],
    "publish_now": true
  }'
per-network outcome
"results": [
  {
    "platform": "x",
    "status": "published",
    "post_id": "1967000000000000000",
    "url": "https://x.com/you/status/1967000000000000000"
  },
  {
    "platform": "linkedin",
    "status": "published",
    "post_id": "urn:li:share:7300000000000000000",
    "url": "https://www.linkedin.com/feed/update/urn:li:share:7300000000000000000/"
  }
]

Omitting platforms is not the same as pinning to X

A request that leaves platforms out follows the account Auto cross-post setting, which may send it to LinkedIn too. Pin the list explicitly when code or an agent writes your posts. GET /api/v1/cross-posting reports each network and its limits.

Read the cross-posting docs before you ship it.

Frequently asked questions

Where do I turn cross-posting to LinkedIn on?

In two places, and they do different jobs. The network chips on a post decide where that one post goes. The Auto cross-post switch decides where a post goes when it names no networks of its own. Turning the switch on does not change posts you already scheduled.

Why was my post skipped on LinkedIn?

Usually length or video. LinkedIn allows 3,000 characters and OpenTweet counts strictly, so an emoji counts as 2, and a thread is measured after its parts are combined. A post with a video is skipped on LinkedIn because LinkedIn video is not supported yet. The skip reason is recorded on the post, so you do not have to guess.

Does a skip on LinkedIn stop the post anywhere else?

No. Each network is delivered separately. A post that is too long for LinkedIn still publishes on X, and a post that fails on X can still publish on LinkedIn. Nothing is truncated to make it fit.

What happens to a thread on LinkedIn?

LinkedIn has no threads, so a thread that targets LinkedIn goes out there as one post. The parts are joined by a blank line, and the images from every part are collected into that post. On X the same draft still posts as a reply chain.

Why are my hashtags not clickable on LinkedIn?

OpenTweet publishes hashtags and @mentions on LinkedIn as plain text, not links, so the post reads exactly as you wrote it. URLs in the text work as normal links.

Can I cross-post to a LinkedIn Company Page?

No. Posts go to the personal profile feed of the member who connected. Company Page posting needs the LinkedIn Community Management API, which requires LinkedIn review, and OpenTweet does not support Company Pages.

My scheduled LinkedIn post did not go out. Why?

Most likely the LinkedIn sign-in expired. LinkedIn sign-ins last 60 days and LinkedIn gives self-serve apps no refresh token. When one has expired, scheduled LinkedIn posts are held and OpenTweet emails you to reconnect. Reconnect in Settings > Accounts, one click.

Does cross-posting to LinkedIn cost extra?

No. LinkedIn is on every paid plan with no extra fee and no per-post charge. Pro connects 1 LinkedIn account, Advanced 3, and Agency 10, the same counts as X and Bluesky. Plans start at $11.99 a month.

Will I see how the LinkedIn copy performed?

No. Nothing is read back from LinkedIn, so there are no impressions, reactions, or comments in OpenTweet for LinkedIn posts. Analytics cover X only.

Cross-post your next thread to LinkedIn

Sign in with LinkedIn in under a minute, then tick it next to X on your next post. Included on every plan from $11.99 a month.