# How to schedule Bluesky posts

You can't schedule a post inside the Bluesky app: it has no schedule button, and a post goes out when you press
**Post**. To schedule Bluesky posts, connect your account to a scheduler that posts through Bluesky's open API. Write
the post, pick a time, and the scheduler publishes it then. Bluesky itself pointed people to Buffer for scheduling when
the two [partnered in 2024](https://bsky.social/about/blog/07-30-2024-schedule-and-crosspost-with-buffer).

Checked on November 3, 2026.

## Three ways to schedule Bluesky posts

| Route | Cost | How it signs in | Fits |
|---|---|---|---|
| Buffer | Free plan: up to 3 channels, 10 scheduled posts each | An app password you make in Bluesky | A few posts a week, alongside other networks |
| Your own script | Free | An app password or OAuth | Developers who will run their own timer |
| Flaghand | 7 days free to draft, then paid | Bluesky's own sign-in page, no app password | An AI agent drafts, you approve each post |

Other schedulers support Bluesky too. Check whether each one publishes for you or only reminds you, and how many
queued posts its plan holds.

## Schedule Bluesky posts free with Buffer

[Buffer's Bluesky help](https://support.buffer.com/article/855-using-bluesky-with-buffer) gives these steps:

1. In Buffer, open **Channels** and choose **Bluesky**. Enter your handle.
2. Select **Generate app password in Bluesky**. In Bluesky, select **Add App Password**, name it, and copy it.
   On the web, app passwords live at **Settings → Privacy and security → App passwords**.
3. Paste the app password into Buffer and select **Next**.
4. Write a post in Buffer, choose a time, and schedule it.

Buffer's [Free plan](https://buffer.com/pricing) holds 10 scheduled posts per channel. A slot frees up when a post goes
out. Custom-domain handles and self-hosted Bluesky servers connect the same way.

**Use an app password, never your main password.** An app password can be revoked on its own, in the same settings
page, without changing how you sign in.

## Schedule Bluesky posts with your own script

Bluesky runs on the AT Protocol, and a post is one record written to your account. The API has no "post at" field:
your script must wait and write the post when it's due. The official
[atproto SDK](https://docs.bsky.app/docs/get-started) signs in with an app password and creates a post in a few lines.
Run it from a cron job or a scheduled cloud function.

## Schedule Bluesky posts with Flaghand

Flaghand is for people who let an AI agent draft posts. The agent writes the post or thread. You approve the exact
post and its time with a passkey, and Flaghand posts it then. These are the steps in Flaghand's desk today:

1. **Settings → Bluesky**: type your handle, like `you.bsky.social`, then **Connect**. Sign in on your server's own
   page. Your password never goes into Flaghand, and there's no app password to copy.
2. **New post → Bluesky**. Write the post. The preview draws it as bsky.app does, with links shortened as Bluesky
   shortens them.
3. Add up to 4 photos with alt text, one video, or a link card.
4. Under **Publishing**, set **Post at**. The button changes from **Post now** to **Schedule**.
5. Select **Schedule** and approve with your passkey. Flaghand posts it at that minute.

After it posts, Flaghand reads the post back from your Bluesky server and checks it matches what you approved. An agent
can also draft whole threads, quotes and replies through the [Bluesky API reference](https://app.flaghand.com/docs/bluesky).

To check a post's length and where **Show more** cuts it before you schedule it, use the free
[Bluesky post preview](/bluesky-post-preview). No sign-up needed.

[Start free](/schedule): 7 days to draft, no card to start.

## Bluesky's limits, whichever route you use

- **300 characters** per post, counted after links are shortened.
- **Up to 4 photos**, or one video, or one link card. A quote can sit beside any of them.
- **Video up to 300 MB and 10 minutes** on Bluesky. Flaghand's media library takes files up to 50 MB.
- A thread is a chain of replies. A scheduler posts each part as a reply to the one before.

## Questions

### Can you schedule posts on Bluesky?

Not in the Bluesky app. It has no schedule option. You need a scheduler that posts through Bluesky's API, like Buffer,
Flaghand or a script of your own.

### Is there a free Bluesky scheduler?

Yes. Buffer's Free plan schedules up to 10 posts per channel, across up to 3 channels. A script of your own on the
atproto SDK is free too, if you run its timer.

### Is it safe to give a scheduler my Bluesky password?

Don't give anyone your main password. Make an app password for each tool, or use a tool that signs in through
Bluesky's own page. You can revoke an app password at any time.

### Can you schedule a Bluesky thread?

Yes, with a scheduler that supports threads. It posts the first part, then each next part as a reply to the one before.

### How long can a Bluesky post be?

300 characters. Links count as Bluesky shortens them, not at their full length.

[All guides](/docs/guides.md)
