How do I move my Hashnode developer blog?
Export Hashnode's GitHub backup, preserve embedded code blocks, set up your custom domain, and continue your developer audience on VeloCMS.
Hashnode is popular with developers precisely because it's developer-friendly — Markdown support, GitHub backup, clean code blocks, and a built-in tech audience. If you're migrating to VeloCMS it's likely because you want more control: your own design, your own domain without Hashnode branding, or your own member/subscriber list. The good news: Hashnode's GitHub backup makes this one of the cleanest migrations available.
Step 1 — Enable and pull your Hashnode GitHub backup
In Hashnode, go to your blog dashboard → Integrations → GitHub. Connect your GitHub account and enable automatic backups to a repository. If you've already done this, your repository will have a folder structure like articles/your-post-slug.md for each post. If you're enabling it now, trigger a manual backup from the integration page — it creates an initial commit with all existing articles.
# Clone your Hashnode backup repo
git clone https://github.com/yourusername/your-hashnode-backup.git
# Structure:
# articles/
# first-post.md
# tutorial-on-react-hooks.md
# ...
# static/
# img/
# cover-image.pngStep 2 — Review the Markdown front matter
Each Hashnode article exports with YAML front matter that looks like this: title, slug, tags, dateAdded, and sometimes cover image path. VeloCMS's Markdown importer reads these fields and maps them to the VeloCMS post model. The fields that need attention: dateAdded becomes published_at, tags become VeloCMS post tags, and cover image paths reference the static/ folder (upload these separately to VeloCMS R2 first).
---
title: "Building a REST API with Node.js"
slug: building-rest-api-nodejs
tags:
- Node.js
- REST API
- Backend
dateAdded: 2025-11-14T09:00:00.000Z
coverImage: ./static/img/nodejs-rest.png
---
# Building a REST API with Node.js
Your article content here...Step 3 — Import Markdown files into VeloCMS
Go to Admin → Tools → Import → Markdown Batch. Upload a ZIP of your articles/ folder (you can zip it directly from the cloned repository). VeloCMS parses each .md file, reads the front matter, and creates draft posts. Code blocks in triple-backtick fences are preserved with language syntax highlighting. Hashnode's supported languages (JavaScript, TypeScript, Python, Go, Rust, etc.) all carry over — VeloCMS uses the same Prism/Shiki highlighting system.
VeloCMS's TipTap editor natively supports fenced code blocks with syntax highlighting and a copy button. Your developer readers will get the same experience they had on Hashnode — or better, since you can now customise the theme's code block styling.
Step 4 — Handle Hashnode embeds
Hashnode supports embeds for CodePen, GitHub Gists, and other widgets. In the exported Markdown these appear as bare URLs on their own line or as Hashnode-specific embed syntax. VeloCMS renders bare URLs as clickable links, not as interactive embeds. To restore an embed, paste the iframe code from the original service (e.g. the GitHub Gist embed tag) directly into the VeloCMS editor's HTML embed block. It's a one-time fix per embedded item.
Step 5 — Move your custom domain
If your Hashnode blog was running on your own domain (yourdomain.com) via Hashnode's custom domain feature, the migration is: add your domain to VeloCMS at Admin → Custom Domains → Add Domain, then update the CNAME record in your DNS provider from Hashnode's target to your VeloCMS subdomain. Hashnode's CNAME was something like yourusername.hashnode.dev — replace it with yourname.velocms.org. DNS propagation typically takes 5–30 minutes on Cloudflare, up to 24 hours on other providers.
Step 6 — Preserve the developer audience
Hashnode has a built-in follower system tied to the Hashnode platform — you can't export followers. What you can do: post a final article on Hashnode linking to your new VeloCMS blog and RSS feed, use Hashnode's newsletter feature to send a migration announcement email to your newsletter subscribers (Settings → Newsletter → Subscribers → Export to get the email list), and set canonical URLs on remaining Hashnode articles to point at VeloCMS.
Frequently asked questions
- Does VeloCMS support Hashnode-style developer-first SEO? Yes — VeloCMS generates Article JSON-LD, open graph tags, canonical URLs, and an /llms.txt for AI indexers on every post.
- Can I keep syncing to GitHub after migrating to VeloCMS? VeloCMS has a Git export feature (Beta) that can push posts to a GitHub repo in Markdown format — similar to Hashnode's backup feature.
- Will my Hashnode series migrate? Series aren't part of Hashnode's GitHub export — recreate them as VeloCMS tag pages or a custom series page in the editor.
- What about Hashnode Headless? If you were using Hashnode Headless (their GraphQL API), VeloCMS has a REST API for the same use case at /api/v1/posts.
- How do I handle Hashnode's 'reactions'? Reactions are platform-specific — they're not exported and don't have a VeloCMS equivalent (comments are).