How to schedule Bluesky posts, with images and alt text
Connect a Bluesky account (self-hosted ones too), write within the 300-grapheme limit, add images with alt text, and schedule posts ahead.
Bluesky has two kinds of feed. The Following feed is chronological: a post you schedule for 9 a.m. appears near the top of your followers' Following feed at 9 a.m. Discover, which the app pins by default, is ranked by an algorithm. Timing and regularity matter most for the Following feed, and the custom feeds described below are how posts reach people who do not follow you yet.
What Bluesky accepts
| Limit | |
|---|---|
| Text per post | 300 graphemes |
| Images per post | Up to 4 |
| Image alt text | Yes |
| Video | Not supported through Publedia yet |
| Threads of several posts | Not supported through Publedia yet |
| Replies in the inbox | Not supported yet |
What "300 graphemes" means
Bluesky's limit is written into the AT Protocol's definition of a post: at most 300 graphemes. A grapheme is one character as you see it on screen. An emoji built from several parts, like a family or a flag, is one grapheme on Bluesky, even though a plain character counter might count it as four, seven or eleven. Links count at their full length, unlike on X, where every link counts as 23.
The practical result is that emoji cost less than you might expect and long URLs cost more. Publedia's composer counts Bluesky versions in graphemes, and so does the free character counter, so the number you see is the number Bluesky checks.
Connect your Bluesky account
- In Publedia, open Channels and select Connect channel.
- Choose Bluesky and enter your handle.
- Your account's sign-in screen opens. Approve access there.
Bluesky connects through AT Protocol OAuth, so there is no app password to create or paste, and Publedia never sees your password.
Self-hosted and custom-domain accounts
Bluesky is federated: an account can live on bsky.social or on a server someone else runs. When you enter your handle, Publedia looks up which server your account is on and sends you to that server's sign-in, so a self-hosted account connects the same way as any other. A custom-domain handle, such as @yourname.com, works the same way.
Schedule a post
- Select Create post and choose your Bluesky channel, plus any other channels for the same idea.
- Write the post. With several channels selected, select the channel's avatar and choose Write a version for this channel on Bluesky, and keep that version within 300 graphemes.
- Add up to four images. For each one, add alt text: it describes the image to people using screen readers and to anyone whose images do not load.
- Check the preview, then select Pick a time, choose when it should go out, and select Schedule.
The post goes on the calendar under Posts, next to everything else you have scheduled.
Writing for Bluesky
- Write for people who follow you. With a chronological Following feed, the audience that sees a post is mostly the one you already have. Posts that invite a reply tend to travel further, because replies and reposts carry them to new people.
- Keep one idea per post. Three hundred graphemes is enough for a claim and a reason. If you need more, write a longer version for another network and link to it.
- Add alt text every time. It is a strong norm on Bluesky, and many readers notice when it is missing.
- Mind your links. A link costs its full length; put it at the end and keep it short where you can.
Getting found beyond your followers
Beyond the Following feed and Discover, people read custom feeds built around topics, and those feeds pick up posts by their words, their hashtags or the accounts that post them. A few habits help a scheduled post reach them:
- Use the words your topic's readers use, in the post itself. A feed about photography or about small business finds posts by what they say.
- Add one or two hashtags where a topic has an established one. Bluesky supports hashtags, and some feeds follow them; more than a couple reads as spam.
- Reply to people in your field between scheduled posts. Replies are how new readers find an account on Bluesky, and a schedule cannot do that part for you.
When to post on Bluesky
Neither of the two large 2026 timing studies (from Sprout Social and Buffer) covers Bluesky, so there is no dataset to lean on. Because the Following feed is chronological, the time your followers open the app matters. Start with weekday mornings and early evenings in your audience's time zone, compare the two over a few weeks, and keep what works. The best time to post guide explains how to run that comparison.
Cross-posting from X and Threads
Bluesky, X and Threads are often used for the same kind of post. The main differences are length and media:
- Length: 300 graphemes on Bluesky, 280 weighted characters on X, 500 characters on Threads.
- Media: four images on Bluesky and X; up to 10 images or videos on Threads. Bluesky takes no video through Publedia.
- Threads of posts: you can schedule a thread on X and a reply chain on Threads; on Bluesky, publish the single most important post.
In Publedia, select all three channels in one post and write a version for each from its avatar. See the Threads guide and the character limits guide.
Troubleshooting
- The post is flagged as too long. The counter counts Bluesky in graphemes; shorten the Bluesky version. A long link is the usual cause.
- The channel needs reconnecting. Open Channels and select Reconnect beside the account. You sign in on your server's screen again.
- A video is missing. Video to Bluesky is not supported through Publedia yet. Use images, or publish the video on another network and link to it.
Sources
Topics
- Bluesky
- Scheduling
- Alt text

