Opal opal
web v0.1.0 cli v0.1.0
The Opal sigil: a pentagram with opalescent play-of-colour fire

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. 1
    Choose a platform

    Pick Twitter, Mastodon, Threads, or Nostr.

  2. 2
    Sign in with ATProto

    Use your Bluesky handle and an app password. Nothing is stored.

  3. 3
    Upload your export

    Drop in your archive file — everything is processed locally in your browser.

  4. 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