Schedule posts to Bluesky with LazyRelay
LazyRelay schedules Bluesky posts, images, video and reply threads using an app password, then reads each post back to confirm it is live. LazyRelay's difference is Proof-of-Publish: after a post goes out, it checks Bluesky again to confirm the post is really live.
What you can post to Bluesky
- Text: up to 300 characters. That counts graphemes, which is what a person sees as a character, and the post is also capped at 3000 bytes.
- Text-only posts are accepted.
- Images: JPEG, PNG, WEBP, GIF, up to 1.9 MB each. Bluesky limits each image to 2,000,000 bytes, which is about 1.9 MB, and LazyRelay checks the same limit before scheduling.
- Video: MP4, up to 300 MB, up to 10 minutes. Video needs the account's email address to be confirmed. The 10 minute figure comes from LazyRelay's own media settings and was not re-checked against Bluesky's documentation.
- Several files in one post: up to 4 images (no video in a multi-image post).
- Alt text: you can add a description of up to 1000 characters. It applies to the first image only.
- Thread chain: add up to 10 follow-up posts under Platform options. Each replies to the one before it and is limited to 300 characters.
LazyRelay checks file size and format before a post is scheduled and tells you which limit was hit. For the full comparison of what each platform supports, see What Works on Which Platform.
How to connect Bluesky
- Open bsky.app and go to Settings, then Privacy and security, then App passwords. Create a new app password. Do not use your main account password.
- In LazyRelay, open the Social Platforms tab and click the Bluesky tile.
- Enter your handle (for example you.bsky.social) and paste the app password.
- Click Connect. LazyRelay saves the connection and takes you back to your dashboard.
How Proof-of-Publish works on Bluesky
When a Bluesky post is created, the record is saved to your account, which is not quite the same as it being publicly visible. So LazyRelay reads that record back from Bluesky by its address and only marks the post confirmed live when Bluesky returns the same post. The link you can share is the bsky.app address of that post.
Want the general idea? Read Does Your Post Actually Publish?
Limits and things to know
- Bluesky needs an app password, not your main password. If you see Invalid App Password, that message comes from Bluesky itself: check the app password was typed in correctly.
- Self-hosted and third-party Bluesky servers (a personal data server, or PDS) are supported. Fill in the optional Server box on the connect page with the server address, for example pds.example.com. The server must be reachable on a public https address; private or local addresses are refused. A custom-domain handle works the same way on Bluesky's own servers or on yours.
- Bluesky's own posting limits are not verified, and LazyRelay does not add a cap of its own.
Schedule to Bluesky and know it actually went live.
See plans and get started freeFrequently asked questions
Why does Bluesky need an app password?
LazyRelay connects to Bluesky with an app password, so you create a separate one in bsky.app under Settings, Privacy and security, App passwords. It keeps your main password out of LazyRelay and can be revoked at any time.
Does LazyRelay work with my custom domain handle?
Yes. A custom-domain handle works whether the account is hosted on Bluesky's own servers or on a server you or someone else runs.
Does LazyRelay work with a self-hosted or third-party Bluesky server?
Yes. If your account lives on your own server or a third-party one (a personal data server, or PDS), fill in the optional Server box on the Bluesky connect page with its address, for example pds.example.com. The server must be reachable on a public https address; private or local addresses are refused. Posts are confirmed live by reading them back from that same server.
How large can a Bluesky image be?
2,000,000 bytes per image, which is about 1.9 MB. LazyRelay checks the same limit before a post is scheduled.
How do I know my Bluesky post is really live?
LazyRelay reads the post record back from Bluesky after creating it and only marks it confirmed live when Bluesky returns that same post.
Figures on this page come from LazyRelay's platform rules, checked on 2026-09-30. Sources: github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/feed/post.json, github.com/bluesky-social/atproto/blob/main/lexicons/app/bsky/embed/images.json. Anything marked not verified has no published source.
Schedule to other platforms: Facebook · Instagram · TikTok · Pinterest · YouTube · LinkedIn · Threads · Mastodon · Telegram · Discord · Tumblr · WordPress · dev.to · Hashnode · Lemmy · Slack