Stale Card Data on Bluesky

Why your link card shows outdated information and how to fix it

Why the data is stale

Card data on Bluesky is permanently embedded in the AT Protocol post record at creation time. The title, description, and image live in the post data itself and are never re-fetched. Updating your OG tags after someone posts your link has zero effect on their post.

Not a cache, a record

On Twitter or Facebook, stale card data is a caching problem with caching solutions (wait for expiry, hit the debugger, bust the cache). On Bluesky, the card data is part of the post. It’s as permanent as the post text. There’s nothing to expire.

Delete and re-post

If a post shows incorrect card data:

  1. Update your OG tags on the source page
  2. Verify with the CardyB API:
curl "https://cardyb.bsky.app/v1/extract?url=https://yoursite.com/page"
  1. Delete the original post
  2. Create a new post. The client fetches fresh data from CardyB.

Prevention

Since you can’t update cards after posting, get it right the first time:

  • Double-check title, description, and image before sharing
  • Call the CardyB extraction endpoint to see exactly what will display
  • Test your URL in our Bluesky preview tool

Query parameter tricks don’t help

On platforms with server-side caches, appending ?v=2 busts the cache. On Bluesky, existing posts are unaffected because the data is already baked into the record. A query parameter only helps if you want a new post to fetch fresh data while leaving the old post as-is (since ?v=2 is treated as a different URL on the AT Protocol).

Multiple posts, different cards

Two people posting the same URL at different times will have different card snapshots if the page’s OG tags changed in between. Each post contains an independent copy of the data as it existed at creation time.