How to schedule Bluesky posts (3 ways, including free)

Postfree team · 26 Oct 2026 · 8 min read

How to schedule Bluesky posts (3 ways, including free)

Bluesky still has no built-in scheduler in 2026. You write a post and it goes out now, or it does not go out at all. If you want posts to publish while you sleep, or at the hour your followers are actually online, you need something outside the app.

The good news is that this is a solved problem. There are three practical routes: a scheduler with a free plan or free trial, a paid scheduler if you run several accounts, or a small script if you like doing things yourself. This guide walks through all three, plus the Bluesky-specific details (app passwords, 300 characters, 1 MB images) that trip people up.

What you need to know about Bluesky before scheduling

A few platform facts shape every method below.

  • 300 characters per post. Not 280 like X, not 500 like Threads. If you cross-post, your Bluesky version usually needs a trim.
  • Up to 4 images, each under 1 MB. This is the limit that catches most people. A phone photo is often several megabytes. Resize or compress before uploading, or your scheduler will reject it.
  • App passwords, not your main password. Any third-party tool connects through an app password you create under Settings → Privacy and security → App passwords. You can revoke it at any time without changing your real login.
  • Links need "facets". On Bluesky, a URL is plain text unless it is marked up as a link facet. Every proper scheduling tool handles this automatically. If you write your own script, you have to do it yourself.
  • Alt text is supported and widely expected in the community. Add it.

Keep these in mind and most "my post failed" problems disappear before they start.

Method 1: Use a scheduler's free plan or trial (cost: $0)

This is the right starting point for one person with one or two accounts. Several schedulers added Bluesky support in the last two years, and most have a free tier or a free trial that covers a light posting schedule while you decide.

What to look for on a free plan or trial:

  • Does it list Bluesky as a supported network? Not all do yet.
  • How many channels and posts per month are included?
  • Does it support image uploads and alt text for Bluesky?
  • Can it post a multi-post thread, or only single posts?

Two examples as of October 2026 (check the vendor pages, plans change):

  • Buffer is free for up to 3 channels, then roughly $5 to $6 per channel per month.
  • Postfree has a free plan (3 channels, 15 posts a month, no credit card), with threads and alt text included; paid plans can start with a 7-day trial.

Steps (using Postfree as the example; other tools are similar)

  1. Create an account at the scheduler (free plan or free trial) and open "Connect a channel".
  2. Pick Bluesky. You will be asked for your service URL (usually https://bsky.social), your handle, and an app password.
  3. In the Bluesky app or on the web, go to Settings → Privacy and security → App passwords → Add app password. Name it after the tool so you recognize it later. Copy the generated password.
  4. Paste the app password into the scheduler. Never paste your main password.
  5. Write your post. Watch the counter: 300 characters. Attach up to 4 images under 1 MB each and fill in alt text.
  6. Pick a date and time, then schedule it.

Postfree checks the queue every minute, retries transient network errors 3 times, and shows the actual error returned by Bluesky if a post fails for good (an oversized image, for example). Other tools behave differently, so send one test post before you trust a week of content to any of them.

Who this fits: solo creators, side projects, anyone testing whether scheduled posting is worth the habit.

Where it breaks: the moment you add a third account, start posting daily, or the trial clock runs out.

Method 2: Use a paid scheduler (cost: roughly $4 to $30 per month)

If Bluesky is one of several networks you post to, or you run accounts for clients, a paid plan removes the caps and adds the boring but important things: a shared calendar, a per-network preview, a media library, and a team seat or two.

Price points as of October 2026 (always confirm on the vendor's site):

  • Publer: around $4 to $5 per social account.
  • Postfree Starter: $19 per month, or $15 per month paid yearly, for 5 channels and unlimited posts (7-day trial available, card required).
  • Later: from $18.75 per month.
  • Postfree Growth: $29 per month ($24 yearly) for 15 channels, 3 team members, 3 workspaces and an approval step.
  • Postiz: from $29 per month.
  • Hootsuite: from $99 per user per month.

How to choose

Ask yourself three questions:

  1. How many channels, really? Count every account on every network. A personal X, a brand Bluesky, a LinkedIn page and an Instagram is already four.
  2. Do you need threads? If you post multi-part threads on Bluesky (or X, Mastodon or Threads), confirm the tool composes them as linked replies, not as four disconnected posts.
  3. Who else touches the content? If a client or manager needs to sign off, you want an approval flow. If you post alone, do not pay for one.

Setup is identical to Method 1: app password, service URL, handle. The difference is everything that happens after you connect.

Who this fits: people managing 3 or more accounts, agencies, teams that need a review step.

Where it breaks: if you post twice a week to one account, this is money for features you will never open.

Method 3: Write your own scheduler (cost: $0 and an afternoon)

Bluesky runs on the AT Protocol, which has a public, documented API and official client libraries. If you are comfortable with a terminal, you can schedule posts with a short script and a cron job.

Steps

  1. Create an app password as in Method 1.
  2. Install the official @atproto/api package (JavaScript) or the atproto package (Python).
  3. Log in with your handle and app password to get a session.
  4. Create a post record with your text. If the text contains a URL or an @mention, compute the facets (byte offsets for the link or mention) so it renders as a link. The official libraries include rich-text helpers for this.
  5. For images, resize to under 1 MB, upload each one as a blob, then attach the blob references and alt text to the post.
  6. Store your queue in a CSV or a small database and have a cron job run the script every few minutes, posting anything whose time has passed.

Things you now have to handle yourself that a tool would normally cover:

  • Retrying when Bluesky returns a temporary error.
  • Counting 300 characters in graphemes, not bytes, so emoji do not break your counter.
  • Rotating the app password if your server is ever compromised.
  • Not posting the same thing twice when your cron job and your laptop both run.

Who this fits: developers, people with unusual needs (posting from a CMS, auto-sharing new blog posts), anyone who enjoys this kind of thing.

Where it breaks: the first time it silently fails at 3 a.m. and nobody notices for a week.

When should you post on Bluesky?

Nobody can hand you a universal "best time" for Bluesky. The network is smaller than X and skews towards particular communities, so the right hour depends on who follows you.

A practical approach:

  1. Schedule the same type of post at three different times across two weeks.
  2. Note likes, reposts and replies in the first hour.
  3. Keep the winner, then test a new slot against it.

Published best-time tables, including the ones in Postfree's free tools, are a starting hypothesis, not an answer. Test it on your own account.

Common problems and fixes

"Invalid identifier or password." You pasted your main password, or the app password has a typo. Create a fresh app password and try again.

Image upload fails. The file is over 1 MB. Export at a smaller size or compress it. A JPEG at around 80 percent quality usually fits.

Link shows as plain text. The tool (or your script) did not create a facet. Any serious scheduler does this automatically. If you wrote your own, check your byte offsets.

Post was cut off or rejected. You went over 300 characters. Some tools split long text into a thread automatically; others refuse it. A thread splitter lets you break up a long draft in advance and see the count for each part.

Everything posted twice. Two schedulers are connected to the same account, or a script is running in two places. Revoke the extra app password.

FAQ

Can I schedule Bluesky posts for free?

Yes. Bluesky itself does not offer scheduling, but several third-party tools have free plans that include Bluesky. Buffer's free plan covers 3 channels; Postfree's free plan also covers 3 channels, with 15 posts a month and no credit card. A DIY script is also free if you are comfortable with code.

Is it safe to give a scheduler my Bluesky password?

Never give a tool your main password. Create an app password instead (Settings → Privacy and security → App passwords). It can be revoked in one click. Reputable tools also encrypt stored credentials; Postfree, for example, encrypts tokens at rest.

Can I schedule a thread on Bluesky?

Yes, with a tool that supports multi-post threads. Each post still has its own 300-character limit. Postfree, among others, lets you compose a thread and publishes the parts as replies to each other at the scheduled time.

Can I schedule video on Bluesky?

Bluesky supports video in the app, but third-party video posting varies by tool. Check the vendor's current feature list. As of October 2026, Postfree publishes text and up to 4 images to Bluesky, not video.

Try it

The quickest path: open an account at a scheduler that lists Bluesky, create an app password, and schedule one test post for ten minutes from now. If you would like to try Postfree, sign up for the free plan at https://postfree.app/signup (no credit card).

Schedule everything from one calendar

Postfree publishes to YouTube, TikTok, Instagram, X, LinkedIn, Threads, Bluesky, Mastodon and more, or let your AI assistant post for you through the included API and MCP server. Free plan, no credit card.

Start free

Related