Skip to content(if available)orjump to list(if available)

Show HN: I made a tool to port tweets to Bluesky mantaining their original date

Show HN: I made a tool to port tweets to Bluesky mantaining their original date

239 comments

·March 18, 2025

Bluesky allows to backdate their posts with their API, so I made this tool to copy your twitter (X) profile to Bluesky keeping the backdated dates of your tweets, showing as if they were posted back then

Aurornis

Interesting tool, but I'm very surprised that they allow backdating posts.

Backdating posts opens up a world of social engineering scams. You can create an account that appears to have predicted a lot of past events, sports scores, or stock prices with timestamps prior to those events occurring. The scam is to create an account that appears to have great stock advice or sports betting predictions and then charge people for it.

jer0me

I believe this is possible because of how the AT Protocol works. Bluesky shows a warning[1] on these posts and displays both times, but sorts them by the backdated time.

[1]: https://bsky.app/profile/bluemigrate.com/post/3lc3r4fqen62l

mayneack

I think the reason it works that way is because they want strong guarantees for the future portability of your skeets. It's sort of a correction for Mastodon's reliance on server admins' goodwill.

BolexNOLA

>skeets

I’m cackling over here. How have I never heard this when people talk about blue sky?

dietr1ch

It'd be cool if they also verified the dates to get rid of the warning of honest backdated posts.

pimlottc

What constitutes an honest backdated post? How would they be able to verify it?

kurisufag

nope. post here from 9/11 2001, no warning [0]. it's fine if they added a check recently to flag backdated posts, but there's no telling how many incorrectly-timed things went up before they added that ([0] is from about a year ago, fwiw). the whole early history of the platform is questionable, and it's just shoddy protocol design.

[0] https://bsky.app/profile/lul4.bsky.social/post/3kgaesbxs7f25

(if you work for bsky please don't add a flag to that, it's my favorite party trick)

jer0me

Looking at the JSON data in dev tools, it looks like there are separate `createdAt` and `indexedAt` fields, the latter of which was probably a later addition. For your—likely pre-migration—post, both are set to 9/11. On more recent posts, they're separate dates.

nidnogg

Very nice.

jampa

You can still do that even without changing the timestamp. Back in the old days of the internet, people used to get famous by claiming they predicted all the results of the FIFA World Cup by posting every possible outcome and then deleting those where they were wrong. Then, they would publicize their account just before the final match, and people would go wild.

spullara

before this people used to send out stock predictions by mail to power of 2 people with each prediction and its opposite, eventually you get down to a person who you have always sent the correct prediction.

acomjean

That was a scam used for betting. Call this phone number for your free “lock”. Half got team a, half team b. They did it twice then asked those who were winning and kept calling to pay for the next prediction.

BiteCode_dev

Just realized the French lottery is only 19 068 840 combinations. You could send spam to 19 millions people, each with a number saying you can predict the lottery, and if they send you 10 000 euros in BTC, you could give them the next one.

rglullis

I am more surprised by how we got to this world where people think in terms of what software developers "allows" us to do, or not do.

Aurornis

> in terms of what software developers "allows" us to do, or not do.

You can do whatever you want with the the software. It's right here: https://github.com/bluesky-social

You cannot do whatever you want on someone else's hosted website. They don't allow you to delete other users and edit other people's posts because everyone agrees that would make it useless.

rglullis

> You cannot do whatever you want on someone else's hosted website

The whole thing with Bluesky and decentralized protocols is no server can enforce special rules.

Sure, they could come up with something that says "our PDS will not accept backdated events", but they will not be able to stop someone else to set up a server that does that without any issue.

toyg

Surprised why? A culture based around systems with privileged "root" and "admins" was always going to be fundamentally hierarchical. It was an accident of history that the network layer ended up getting developed in locations with a more horizontal culture (which partly explains why our network protocols are so loose and insecure). It took a big, conscious effort (Free Software) to force open at least some elements of it.

Without strong and deliberate efforts to maintain a culture of openness and freedom, IT is a heartless cager of men.

blitzar

I fight for the Users!

evbogue

Bluesky was developed with backdated posts as a stated goal, see Jay's original prototype: https://github.com/arcalinea/smor-serve

ezfe

If you look at the imported posts, they have a badge that says the date they were imported and says the date on the post is unverified.

evbogue

Yes, but this badge is generated at their Appview index layer and not at your PDS.

chc4

If you are syncing data from another PDS, there is no way to verify that posts have an accurate date, unless you have some central ledger which is antithetical to allowing self-hosting and being distributed.

lazzlazzlazz

One of the many flaws of AT Protocol.

aaron695

[dead]

donohoe

This is neat but I choose not to do this when it was clear the API allowed it. I was on Twitter for over 17 years and I think 99% of what I posted is useless and not noteworthy.

I welcome the blank slate that Bluesky provides.

brailsafe

Incidentally, I'm kind of surprised or maybe dissapointed that people want to move onto an alternative after being on what seems like a largely pointless platform from probably their teens well into their 30s or equivalent timespan. It's nice to have a clean break and let the past be the past when it comes to social media. When Facebook died, I was quite happy to just let my account rot, checking in occasionally to see if I got any messages from my Gen X relatives or whatever. When I first deleted my Twitter account, I used the 't' cli and their built-in export to backup my account in case I ever wanted to re-activate it, and the urge has never come up. I'm still on Instagram but barely post, it's just brainrot, I'll let it die when it dies. Proor to deleting the Twitter account nearly 10 damn years ago, I'd been convincing myself it was useful, so much so that I'd be a pariah if I weren't on there, but I realized I didn't need any of it, and tossed it away. Much like high school friends, it seems important to let life carry on without dragging all the baggage of past me along for the ride.

Rendello

I was on Twitter briefly despite knowing better. It was great to connect with fellow programmers doing creative things, and having blocked the sidebar and all political hashtags, it was a net positive for a while. Ultimately though, it incentivizes people to post every "clever" thought that pops into their brains, and after posting hundreds of your own clever thoughts and reading tens of thousands of other people's, it instills in one the urge to live alone in the mountains under a vow of silence.

Though… it occurs to me that my cursed "cleverness" may have followed me to HN.

brailsafe

Ya, I followed a similar path; it quickly became something habitual, and I realized that I couldn't avoid the preachy political crap from even people I would otherwise probably align with. It felt like I was chronically checking it, and nearly always being bombarded with messaging about what I was supposed to be mad about that day, whereas if I'd not been on the platform I probably wouldn't have regularly fluctuation intense emotions about irrelevant issues.

HN is kind of a bad habit, but it's just a forum to me, I don't follow people, people aren't following me, I don't need to be signup up in order to find out what's going on in municipal government, it's just discourse about common interests if that's what I want. I can get a weekly digest and I know that's quite enough if that's the relationship I want to have with it, and everyone sees the same content.

donohoe

I hear you. I certainly post much less and am happier for that. I like the emerging community there but I’m nowhere near as absorbed.

davely

I like the blank slate analogy. I'm in the same boat.

I have tens of thousands of tweets (why, oh why) but personally have no desire to move them over. I realize that's important for some people. For me, it's enough to just download the archive and save it somewhere, in case I ever need to reference it again.

blitzar

I have been deleting my tweets every year anyway.

sMarsIntruder

So the plan is moving from a centralised platform to another centralised platform? As a loop? :)

throwaway150

This is something I don't understand either. Why is everyone so eager to move from one centralized platform to another? Sounds counterproductive to me.

Btw do you have any good suggestions for distributed platforms? Would Mastodon be considered a distributed platform?

diggan

> Why is everyone so eager to move from one centralized platform to another?

Personally, I'm eager because it's not just another centralized platform but a sufficiently distributed one. Most of the infrastructure you need for ATProto, you can run yourself today.

Mastodon/ActivityPub is neat too, but personally I don't find it as easy to find interesting stuff there, especially if you try to run your own solo instance and need to make sure you connect to interesting parts of the ActivityPub-net.

rglullis

> Most of the infrastructure you need for ATProto, you can run yourself today.

Citation needed. Without the AppView and their relays you are left only with your identity and your data, which by itself is not a social media/messaging platform.

ibejoeb

There are couple of things going on in that question.

1. There's a contingent that does not like the management of X, so they want to move elsewhere.

2. The technology aspect of it is irrelevant in the decision making, because most people don't understand it.

3. Moreover, a truly free, federated system doesn't alleviate any of their complaints about the platform, because, in that case, they would be unable to effectively quarantine the others.

alkonaut

Because X was (initially) good, while every attempt to make something distributed has been relatively bad.

I don't really care how the platform works so long as the content is the content I want. Nor does 99% of users. And that's the precise reason the centralized platforms are the good ones: that's where people are.

If a truly distributed platform could be created that had the content/people/appearance of the centralized one, then great. I'd want that. But if it would be slightly slower or harder to use, or lack the people/content of a centralized platform then I'm not interested.

Decentralized could be fine for communicating with a _community_ of some kind. But that's not why I'm on X/Bluesky. It's to drink from the firehose of the current times. If something happens in the world I want to see the actual people who drive those events. Read the instant comments of the biggest most famous commenters of the same events.

wlonkly

> Why is everyone so eager to move from one centralized platform to another?

There's good content there. Distributed is better than centralized, but it doesn't matter if the people I'm interested in talking to and hearing from aren't there.

sMarsIntruder

Mastodon and nostr are two good alternatives with pro and cons of course. nostr is probably and imho the best implementation, but at the moment it’s a bitcoiner echo chamber.

bravoetch

The reasons I have heard are not related to it being a centralized platform. More that people like the features of bluesky over x.

skybrian

Maybe they don’t care as much as you do about whether a service is decentralized?

martin82

It's even worse... you move from a centralized platform that has reach and is highly relevant to one that has zero reach and is a closed off and completely irrelevant echo chamber.

est

the ATProto missed a lot by using websocket.

If it allows polling static pages, then everyone can host their timeline on Github Pages or something. That would be much better decentralized.

ljsprague

[flagged]

stronglikedan

this is literally the only reason. talk about cutting off the nose to spite the face, sheesh

oellegaard

What is the appeal of Bluesky? I'm surprised to see how much traction it has, when Mastodon already exists and works quite well technically - it seems that Bluesky is simply better at marketing?

lxgr

It's a much better protocol in practice, in my view.

Mastodon is server/instance centric and permanently anchors your identity to a given server. On Bluesky, you can use any domain you control DNS for as your handle, since content hosting and identity management are decoupled at the protocol layer.

On top of that, hosting is also decoupled from aggregation/discovery, which allows for things like global search that are intrinsically hard on Mastodon.

genewitch

> Mastodon is server/instance centric and permanently anchors your identity to a given server. On Bluesky, you can use any domain you control DNS for as your handle, since content hosting and identity management are decoupled at the protocol layer.

What does this mean? I can host my own fediverse instance, and have, three times.

rglullis

It means that your identity is tied to the server. If you ever got tired of running your server and decided to just use someone else's server, you can not just bring your keys and make a DNS change to point to the new place.

wikihasbsky

Can and Must are two different things. Wikipedia has a website, and owns the domain to that website. Their domain is the way they verifiy themselves on Bluesky. But they don't have a reason to run an instance, so they don't run one, and never will.

lxgr

Yes, and in fact you have to, and from the very beginning, if you want to self-custody your identity.

That’s a high bar compared to just registering a domain and updating a DNS record.

advisedwang

For me, it's pure network effect. The people I want to hear from and be heard by are on Bluesky but not Mastodon.

shawabawa3

Had enough of shitty self hosted mastodon servers getting linked, makes me wary to click any mastodon link because they are so likely to be dead

Imo that's a complete killer to adoption. The vibe people get from it is that it's always down, they don't care that "oh just switch to another shard" that's too much effort

imhoguy

Yeah, it should be content addressable and replicated by Favourite (Like) similarly how IPFS pining works, then your post would die when the last hoarder forgets about it.

KoftaBob

Bluesky/AT Protocol hits a much better balance of mostly decentralized while having an intuitive user experience.

On the other hand, ask the average social media user to try to do the below tasks on Mastodon/ActivityPub, and you'll quickly see how half-baked and disjointed of a user experience it is.

- Search for posts or a user.

- Interact with a Mastodon post that's on a different instance than the one they're registered to.

- Figure out what to do if one day, they wake up and their instance has shut down.

adamredwoods

Convenience factor. Bluesky is single site. Mastodon is multiple sites.

unshavedyak

I also find Bluesky's underlying tech interesting. The more i looked into Mastodon the less interesting it felt. I especially didn't like that as a small Mastodon instance i'd struggle to get my updates fed into the larger instances and struggle to get updates as quickly. Instances prioritized updates to/from larger instances.

This was all quite early though and i'm sure i misunderstood things. Just answering the question as i personally perceived Mastodon.

On the non-tech side, i find Bluesky's model for moderation to be really neat. I hope it continues to expand in features/implementations.

verdverm

Check out the User Intent proposal, it's kind of like robots.txt, not enforceable, but also richer in semantics

https://github.com/bluesky-social/proposals/tree/main/0008-u...

curious_cat_163

I find the AT protocol interesting.

But, now they have network effects; > 30 million users -- that's a big market to build for.

gls2ro

Here is one nice appeal:

Has a great and free API.

Now, Bluesky has this great API that allows you to do cool automated things on top of it. Twitter had it too, but they decided in the last 2, maybe 3 years, to play with the API so many times that there are no new coding tutorials that use Twitter API as an example. So except social media platforms, there are probably no more tools built on top of Twitter API as they damaged their reputation among developers. And they deserve it being so unfriendly towards developers.

RicoElectrico

Mastodon is fragmented by design, federation is mostly theoretical even if mastodon.social displays many other instances' content and lets you interact with it.

You can't search across instances nor can you (afaik) maintain identity across them.

jer0me

This is very cool. These features would be useful:

  - If it isn't possible to transfer the video, I'd rather skip them than just posting a thumbnail
  - A way to mass-delete posts after a migration if I regret it
  - The option to add text (e.g. [Migrated from X]) to each post if it fits
As far as competitors, go https://blueark.app/ seems like the most complete. I remember seeing another one, a desktop app, but I can't remember what it was called.

mentalgear

Much appreciated, but wouldn't this allow anyone to "migrate" somebody else's tweets over to bluesky, basically impersonate them with 1-click ? What's missing is some sort of verification.

Karrot_Kream

Unreliable datetimes is just part of AT and something you need to deal with. The moment you start ingesting the firehose you'll see plenty of backdated or forward dated traffic. If you build feeds you need to be careful when using posted timestamps to sort feeds because of backdating and because there's no real centralized way to verify your timestamps. For my feeds I just reject posts that are beyond a certain delta from now and sort my feed by ingestion time rather than post time.

There's probably some sort of blockchain-based time-attestation like [1] that could help but this is beyond the scope of AT and something that probably needs a lot more thought before a serious proposal comes forth.

[1]: https://opentimestamps.org/

robertlagrant

> something you need to deal with

Who is the "you" here?

ncallaway

> The moment you start ingesting the firehose

Probably someone who started ingesting the firehose

mentalgear

PS: I had a similar migration idea when bsky came out, but never thought they would allow backdating.

I came to the conclusion that it would make sense to confirm a user's identity on the platform to migrate from (egress) by giving them a random word or sentence for them to post over there, so you can verify that their original profile is really theirs.

darkwater

Well, if the source is publicly available, anyone can copy it anyway. So, you need anyway to announce on the original account where it has been migrated to.

amyames

this can be done, and it’s suspect when someone’s done it to build a following and it’s not clear if they own the tweets.

I tail the firehose sometimes , filtering for post dates that don’t contain 2025. Bottom line this has been happening since day one and backdated/imported posts were about 1/16th or so of the overall post volume in any random sampling I’ve taken. It’s a lot.

But the few I spot checked , all checked out. The people importing their posts were all mentioning their new bluesky on LinkedIn or Twitter . I haven’t caught a spammer yet. It’s something I look at when I am extremely bored.

nashashmi

Can I upload my archive of tweets that I exported from Twitter immediately after it changed ownership and subsequently deleted my Twitter profile?

lloydjones

I made a similar tool a while back, https://pleasenox.com – Mine relies on a "poster" account doing the work rather than the current user's account.

codeman001

Interesting tool but the main problem with BlueSky is that I get barely any interactions/reach compared to Twitter/X.

klausjensen

It is all about which "circles" have migrated. A lot of the people I follow have reported that while having a lot fewer followers, they have a lot more interactions - and a LOT less bot-interference.

aa-jv

Back in the early days of the Web, there was a company started that would allow anyone to annotate any web site - basically, you could go to any site, and add your own little notes to it, for others to view.

It didn't last long - there was some sort of rebellion against them as a service and it turned out they couldn't find a way to make money with it. (Akin to that push service that pushed news to everyones' screensavers, which seemed like a good idea at the time)

This feels like that.

I wonder how long it will last until the door is closed for folks to re-purpose others content in this way?

dustedcodes

Am I the only one who finds it weird that people want to migrate their tweets? Is it just sentimental feelings or what is the purpose of that? To me tweets have always just been in-the-moment brain farts. People have tens of thousands of tweets with the vast majority being just completely irrelevant now and really rather uninteresting. This reminds me of people who keep all their school notebooks in shelves from when they were 5 years old, as if you'd ever go back and look at some scribbles from 50 years ago.

hombre_fatal

Many people use Twitter for blogging, whether in the old tweet-storm style or the newly supported long-post style.

They would want to port over the content just like someone migrating from Wordpress to Jekyll.

tekno45

the worst part of bluesky is all the people asking for it to be twitter.

That and people posting screenshots of their own tweets...

MikePlacid

I see around 80% of videos on X (Twitter) to be from TikTok originally. Probably because TikTok allows you to save - and so to spread - videos you like but X doesn’t.

LaPingvino

It literally comes from the original Twitter, it's meant to be what X killed in Twitter.

pessimizer

Didn't come from Twitter, it came from Dorsey. He also said that it went badly astray early on, and abandoned it completely.

https://www.piratewires.com/p/interview-with-jack-dorsey-mik...

extraduder_ire

It was initially created as a group inside of twitter. They spun it off into a separate company pretty early though.