The prompt that started this was simple enough: I asked my AI assistant which static site generator it would recommend for a personal blog in 2025. It said Astro. That was the beginning of a longer conversation, but the recommendation stuck.
I did the obvious thing and looked at what else was out there. Jekyll has been around forever and has the GitHub Pages integration going for it, but it runs on Ruby, and I had no interest in managing a Ruby environment. Hugo is fast, genuinely fast, but its template syntax always felt like it was designed by someone who really liked Go and assumed everyone else did too. Eleventy is flexible and stays out of your way, but it felt like it required more configuration than I wanted to think about before writing a single post.
Astro, by contrast, had picked up serious momentum. Not hype-cycle momentum, but the kind that shows up in conference talks, tooling integrations, and people migrating to it from other frameworks and writing about why. The Astro ecosystem felt alive.
The technical case is straightforward. Astro generates static HTML by default, with JavaScript only where you explicitly add it. For a blog that is mostly text, that is exactly the right starting point. No JavaScript bundle shipping to the reader because the framework needed it. No hydration overhead. Just HTML and CSS.
It also supports Markdown and MDX natively, which matters to me. I have been writing in Markdown for years, first in documentation workflows, then everywhere else. A framework that treats Markdown as a first-class citizen rather than an afterthought is one less thing to fight.
The component model is clean. You can write components in Astro’s own .astro format, or bring in React, Vue, Svelte, or others if you need them. For a blog, I mostly do not need them, but the option is there without having to restructure the whole project.
One thing the installer does not make obvious: when it asks where to create your project, it suggests the full command as the folder name. If you are already inside the directory where you want to install, just type .. That one cost me a minute of confusion.
The traction was a signal. Astro 5 shipped with content collections as a stable feature, and by the time I was building this, version 6 was already out. A project that ships meaningful releases and has an active community is one you can build on without worrying it will be abandoned in eighteen months.
For a blog that is primarily about text, technical writing, and the occasional deep dive into tooling, Astro was the right call. The recommendation turned out to be a good one.