opal
Open source · Runs in your browser
Bring your microblog posts
to the open web.
Opal converts your posts from Twitter, Mastodon, Threads, and Nostr into Bluesky posts — so your words stay with you, not the platforms.
Twitter/X
Import your tweet archive from Twitter's data export file.
Mastodon
Convert your ActivityPub outbox or CSV export from any Mastodon instance.
Threads
Bring over your Threads posts from Meta's data export.
Nostr
Convert your Nostr text notes (kind 1 events) to Bluesky posts.
Facets
Links, mentions, and hashtags are converted to ATProto facets where possible.
Private
Everything runs in your browser. No data is sent anywhere except your own PDS.
How it works
- 1 Choose a platform
Pick Twitter, Mastodon, Threads, or Nostr.
- 2 Sign in with ATProto
Use your Bluesky handle and an app password. Nothing is stored.
- 3 Upload your export
Drop in your archive file — everything is processed locally in your browser.
- 4 Import
Opal publishes your posts to your PDS with automatic rate-limit handling.
Ready?
No account needed. No data leaves your browser except to your own PDS.
Start converting