As I was working on remaking my website, I found Hashnode, a blogging platform for developers. It looks pretty great and has a lot of nice features so I seriously considered using it. My main concern when choosing a dev blogging platform is whether I will be able to get my data out of it if I need to change platform, and Hashnode seemed good at this.
Unfortunately, I’ve found two big problems with it that ruin any chances of me using it.
You own and can backup the content… Kinda?
One of the selling features on the frontpage is “Own your content”. I was pretty interested in this as over the years I’ve grown tired of losing articles over awkward migrations to various platforms. This is in fact why my previous blog was in Markdown + Jekyll, as the data is completely owned by me and portable.
Despite them claiming you own the content and can back it up to Github, it comes with some issues. You can indeed back-up the content of articles, but a few surprised await you if you want to rely on it.
As a test case I made a
hello world post to see how the Github export would behave (you’ll notice the code inside doesn’t make much sense, but I just wanted a code block to see how they display):
How did this export to Github? Well at first it didn’t. Turns out only published articles get exported, so any draft gets lost in this.
The content of the article is there, but all the metadata is gone. The file name is useless, and there is no frontmatter block describing the slug, title, description or any other SEO data. We technically kept the title because it is in the markdown as the first header tag, but this isn’t very useful to import the data anywhere else. Even if you wanted to write a migration tool, some of the data is just lost in this export. No tooling could help you get this data back.
That means if you wanted to export and migrate your articles to a new platform, you’d need to edit each individual article to add the date, slug, title, description and so on.
There is also a
json export which includes more data when you use the manual export button. You would need to write a tool to convert that json into an acceptable format for your new platform though, whereas markdown is a popular data format for posts.
There are some problems with this though:
- Why is the data export in a different format in the Github backup and in the manual export?
- You have to go on the platform to get this data export manually
- The data won’t work out of the box somewhere else, whereas markdwon with proper headers would work on a lot of platforms.
You can import markdown in bulk… If you get it to work
My first question when looking at a new developer blogging platform is “Can I migrate my old articles to it?“. I was glad to find that Hashnode has a bulk markdown import feature (It also supports Medium, dev.to and RSS, which I haven’t tried).
I tried it and simply couldn’t get it to work. I only have about 20-30 posts which isn’t much, but whenever I tried to put them in a zip file and upload them to Hashnode I would get “There was an error while processing your request, try again.”
I tried to zip all my files at once and also single ones to debug it. I tried to edit the frontmatter block to remove values that weren’t specified in their examples and I even tried to format my frontmatter block exactly like their example file. I also tried removing any “weird” content in my markdown and uploading simple files, but none of them worked.
With no useful error message to debug the issue and none of my attempts changing anything, I gave up.
Hashnode seems great, really. If you’re not worried about being able to import/export your data then I would suggest using it. I was hoping Hashnode would save me time so I could skip developping my new blog, but I don’t want to do this at the cost of being stuck with a single platform.
As it often turns out with those things, a homemade system is the best if you want control.