Twitter

Ship the whole thread while you sleep.

Write the chain once, set reply visibility on each step, and OctoSpark publishes it in order at the minute you picked. X's own composer will not put a thread on a timer at all, and the schedule control never shipped in the mobile app.

  • Threads of up to 25 chained posts, queued as one item
  • Reply visibility and quote target stored per post
  • Every handle on one calendar, no account switching
octospark.ai / composer
The OctoSpark composer view

The honest answer

Does Twitter have a built-in scheduler?

Yes. Twitter/X has a free scheduler inside the web composer at x.com: pick a date and time, and the post waits in Unsent posts. It handles single posts on desktop web only. Threads, bulk queues, polls, and approvals are out of scope, and X Pro now needs Premium+.

the small calendar icon in the x.com post composer on desktop web, with everything queued sitting under Unsent posts in the left sidebar

Desktop web only

The schedule control never shipped in the iOS or Android app. From a phone you have to force x.com into desktop mode, and a draft written in the app does not show up on web anyway.

One post at a time, never a chain

Add a second post to the chain in the composer and the schedule control drops out, so a thread has to be typed live or pasted reply by reply from a notes doc.

X Pro moved to the $40 tier

In March 2026 X put X Pro, the old TweetDeck and the only native surface with a column view of the queue, behind Premium+. Below that tier the free composer scheduler is all there is.

Polls cannot be put on a timer

Attach a poll and the composer refuses to schedule the post, so any vote you want running has to be fired by hand at the moment you want it live.

No bulk queue and no reusable slots

Every scheduled post is created one at a time in the composer. There is no import, no set of posting times to drop drafts into, and no way to reorder what is already queued.

Scoped to the signed-in handle

Unsent posts belongs to whichever account the browser session is on, so a personal handle and a brand handle mean two separate queues and a lot of account switching.

X composer scheduling, plus X Pro vs OctoSpark.

CapabilityX composer scheduling, plus X ProOctoSpark
Putting a whole thread on a timerThe x.com composer removes the schedule icon the moment you add a second post to the chain.The chain is queued as one item and published in order, each step sent as a reply to the id X returned for the step before it, up to 25 posts.
Seeing the week of tweets aheadUnsent posts is a flat time-ordered list in the sidebar, with drafts and scheduled items in separate tabs.A calendar and a queue view covering every connected handle, where a scheduled item can be dragged to a new slot without retyping it.
Queuing a tweet from a phoneNo schedule control exists in the X app, so the workaround is forcing desktop mode in a mobile browser.Queue from any browser, from the terminal, or by asking an agent in Claude Code while you are away from a laptop.
Running two X handlesEach handle keeps its own Unsent posts list, reachable only by switching the account the browser is signed into.Connect the personal handle and the brand handle to one workspace and pick both in the composer, with one queue across them.
Reply visibility on a scheduled postThe composer only applies reply visibility to the post you are writing at that moment; a scheduled post carries the default.Reply visibility is stored against each post, including individual steps of a chain, and passed to X at publish time.
Re-running a tweet that workedNothing native. You copy the old text and post it again, which X routinely filters as duplicate automated content.Schedule a reshare or a quote of the original post instead of near-identical copy, so the recycled post is not competing with itself.
Getting a large video through uploadMedia uploads in the browser tab, so a long video means keeping x.com open until it finishes before you can set a time.Video is uploaded in segments server-side and polled until X reports processing finished, so a scheduled post never fires against a half-ingested file.
Scheduling tweets from a scriptBoth the composer and X Pro are browser surfaces. There is no native button you can call from a build step or a cron job.One typed call queues the post, from the CLI, the REST API, or an MCP client, and returns structured output an agent can chain.

What you can schedule on Twitter.

Thread (chained replies)

Supported

A run of posts where each one replies to the last, read top to bottom as a single argument.

Composed as one item and published as up to 25 chained posts, with the reply target of every step taken from the response to the step before it.

Timeline images

Supported

Up to four stills, or a single GIF, shown inline rather than as a link preview.

Attach up to four images from the media library. Mixing stills and video in one post is blocked before scheduling, because X will not accept it.

In-timeline video

Supported

A native upload that plays in the feed instead of sending the reader to another site.

Uploaded in segments and confirmed processed by X before the scheduled time arrives, so the queue does not publish a video that is still ingesting.

Quote post with commentary

Supported

A new post that wraps an existing one so your take sits above the original.

Set the quoted post id on the first post of the item and the quote is assembled at publish time, including when that item is the head of a chain.

Poll attachment

Planned

A multiple-choice vote with a fixed run time, attached to a post.

Not in the composer yet. X will not schedule a poll either, so today a vote is still something you post at the moment you want it counting.

Long post for X Premium handles

Planned

The extended-length single post a subscribed handle can publish in place of a standard one.

Not yet. Long copy is served better by a chain, so extended single posts stay on the list while thread scheduling covers the same job.

Which Twitter accounts work.

  • Personal X handle

    Any handle can authorize OctoSpark through X OAuth 2.0. No X Premium subscription and no developer app of your own.

  • Brand handle on X

    Connects exactly like a personal handle. Add it as a second account in the same workspace and target both from one composer.

  • X Premium or verified organization handle

    Connects the same way. The subscription changes what the handle can publish natively, not whether OctoSpark can publish for it.

  • A handle several people post from

    One connected handle, many workspace members. X has no seat model of its own, so roles and approval gates live in OctoSpark instead.

Before you connect

  • An X account you can sign into in a browser long enough to complete the OAuth 2.0 authorization.
  • Consent to the tweet.read, users.read, tweet.write, media.write, and offline.access scopes, all granted on one screen.
  • No X Premium subscription, no X developer account, and no API keys of your own to paste anywhere.
  • offline.access in particular, because the refresh token it returns is what keeps the queue publishing after you close the tab.

Twitter publishing rules, in one table.

Read straight from the same capability matrix the product runs on, so this table cannot drift from what actually happens at publish time.

Character limit280The composer counts down against this as you type, and warns you before a post can be scheduled over the limit.
Delete a published postSupportedRemove a live post from OctoSpark and it is deleted on the platform too, not just hidden in your queue.
Edit a published postNot supportedNo platform supports editing through the API here, so we surface delete and repost rather than pretending an edit worked.
Scheduled first commentSupportedQueue the first comment with the post and it lands automatically once the post is live, which is where links usually belong.
Repost / reshareSupportedReshare an existing post on a schedule without duplicating the original.
Engagement analyticsSupportedWe poll the platform after publish and pull real engagement back onto the post, so reporting is measured rather than estimated.
Tracked short linksSupported, off by defaultInline links are rewritten for click tracking, and you can turn this off per post.
Native publish settings2 availableSet them per post before it goes out, including Reply visibility, Quote post ID. These are the platform's own options, passed straight through at publish time.

How to schedule a Twitter post.

  1. 1

    Connect your Twitter handle

    Authorize OctoSpark once through X OAuth 2.0. The handle lands in your workspace with a refresh token attached, so nothing stops publishing because a session expired.

  2. 2

    Write the post, or the chain

    Type a single post or add steps to build a thread. Reply visibility and any quoted post are set here, per step, rather than being decided when it fires.

  3. 3

    Drop it on the calendar

    Pick a slot or type a timestamp. Everything queued to that handle sits in one view you can drag around until the ordering reads the way you want.

  4. 4

    Let it go out and check back

    The item publishes at the scheduled minute, media is confirmed processed first, and the resulting post ids are stored so the numbers come back to the same object.

Agent native

Schedule Twitter from your terminal, an MCP client, or any agent.

Every Twitter action is a typed endpoint before it is a button, so the same schedule call runs from your terminal, from a CI step, or from Claude Code over MCP. Drop --dry-run and the thread joins the queue for that handle.

octospark posts schedule pst_7c31 --account-id acct_x_brand --at 2026-09-02T13:30:00Z --dry-run

Twitter scheduling, answered.

It does, in the x.com composer on desktop web. Click the calendar icon, set a date and time, and the post waits under Unsent posts until it fires. It takes one post at a time and nothing more elaborate than that.

No. The composer scheduler is free for any handle. What Premium+ buys is X Pro, the old TweetDeck, which moved behind the $40 tier in March 2026. OctoSpark asks for no X subscription at all.

Not natively: adding a second post to the chain removes the schedule control from the composer. OctoSpark queues the entire chain as one item and publishes each step as a reply to the previous one, up to 25 posts.

There is no documented penalty for scheduling itself. What does get filtered is duplicate copy, so re-posting the exact text of something that worked is the real risk. Resharing or quoting the original sidesteps it.

On X they sit under Unsent posts in the left sidebar, split into drafts and scheduled. In OctoSpark they sit on a calendar beside everything else queued for that handle, and moving one is a drag rather than a retype.

Not from the X app, which has no schedule control. Natively you would force x.com into desktop mode in a mobile browser. OctoSpark queues from any browser, and from the CLI or an MCP client if you prefer typing.

Yes. Connect each handle to the same workspace and choose which ones a post targets in the composer. Natively, Unsent posts belongs to the signed-in account, so a second handle means signing in as that handle.

X's own composer is free and will schedule single posts on desktop web. OctoSpark is paid, and what the money buys is chains, several handles, media verified as processed before publish, and an API in front of all of it.

Not in either tool today. X declines to schedule a post with a poll attached, and OctoSpark does not compose polls yet, so a vote remains something you fire manually when you want the clock to start.

Yes. Reply visibility is held against the post and applied when it publishes, including on individual steps of a chain. The native composer only lets you set it on whatever you are writing right now.

Stop typing threads at midnight.

Start scheduling free