Tina CMS logo
Ghost logo

From Tina CMS to Ghost

We are the Tina CMS to Ghost migration experts

Last verified:



Challenges with Tina CMS

Key pain points

Tina's biggest limitation is that it's fundamentally tied to the React ecosystem. If you want visual editing, you need a React-based framework like Next.js. Basic content editing works with Astro, Hugo, SvelteKit, and others, but the flagship visual experience is React-only. There's been talk of Vue support for years, but nothing has materialised. This is a hard blocker for agencies like us that work across different tech stacks. The platform has also had a notable history: SSW acquired the project in May 2024, and a security breach in late 2024 involved compromised AWS keys via the CI/CD pipeline. These events, combined with the relatively small community, are worth weighing when evaluating Tina for long-term enterprise projects.

On the practical side, developers report frustrating instability in the dev environment. The admin interface can break without any changes to your codebase because it depends on externally loaded assets that update independently. Error handling is weak — forms fail to save silently, and the GraphQL layer doesn't surface errors cleanly. Self-hosting removes the TinaCloud dependency but comes with its own gaps: no search functionality, no Git LFS support, and reference fields can timeout on large collections.

The editing experience, while impressive in demos, can feel fragile in production. Multiple developers have reported losing work in the editor, and features like branch-based editing are locked behind paid tiers. For agencies managing multiple client projects, the React-only constraint and relatively small community (compared to Sanity, Strapi, or Contentful) mean fewer resources, fewer integrations, and more time spent solving problems yourself.

Help me migrate


React-only framework support in Tina CMS

Visual editing limited to React

TinaCMS supports many frameworks including Astro, Hugo, Jekyll, SvelteKit, and Nuxt for basic content editing. However, the visual/inline editing experience, which is Tina's main selling point, only works with React-based frameworks like Next.js.

Unstable development environment in Tina CMS

Unstable development environment

The dev server can break unpredictably because it loads external assets that change independently of your codebase. This makes local development feel unreliable and hard to debug.

Poor error handling in Tina CMS

Poor error handling and silent failures

Forms can fail to save without any visual indicator, and GraphQL errors aren't surfaced clearly. Losing work without warning is a real risk, especially for content editors.

Branch editing paywall in Tina CMS

Branch editing requires paid tier

Multi-branch support isn't available out of the box — it's locked behind the paid editorial workflow feature. You can't test content changes in deploy previews without paying up.

Self-hosting gaps in Tina CMS

Self-hosting gaps

The self-hosted backend lacks search functionality, Git LFS support, and pagination on reference fields. Large collections can cause network timeouts.

Small ecosystem in Tina CMS

Small ecosystem

Compared to established players like Sanity or Contentful, Tina has a smaller community and fewer plugins. Since the SSW acquisition in May 2024, the project has been actively maintained with regular releases, but the ecosystem is still catching up.



Benefits of Ghost

Key advantages

Ghost is genuinely great if all you want is a fast, clean, no-nonsense blogging machine. It keeps things beautifully simple: a slick Markdown editor, zero clutter, and performance scores so good they’ll make WordPress users cry into their PHP logs. If your plan is “just publish content,” Ghost actually gets out of your way and lets you do that.

The built-in memberships and payments system is also a win. You can slap a paywall on your content, charge people to read your mediocre hot takes, and do it all without duct-taping together 12 plugins. For solo creators, small publications, and anyone who wants a simple writing-first experience, Ghost delivers exactly what it promises and nothing you didn’t ask for.

Start my migration


Lightweight JSON API

Lightweight JSON API

Ghost’s API is fast, predictable, and doesn’t make you fight a schema just to fetch a title. It’s perfect for JAMStack setups where you want speed without ceremony. Pull content, ship pages, move on with your life.

Intuitive Markdown editor

Intuitive Markdown editor

If you enjoy writing without 19 toolbars screaming at you, Ghost’s Markdown editor is bliss. Clean, distraction-free, and actually enjoyable to use.

Built-in membership system

Built-in membership system

Memberships, paywalls, and subscriptions come built in, no plugin Frankenstein required. Hook up Stripe and you’re basically running your own mini-Substack in minutes.

SEO-friendly defaults

SEO-friendly defaults

Ghost ships with fast performance, clean URLs, structured data, and proper metadata, without needing an SEO plugin the size of a small country. Most sites hit solid scores straight out of the box.

Native subscription support

Native subscription support

You don’t need 3 SaaS tools duct-taped together to run a newsletter. Ghost handles email delivery, subscriber lists, and automated posts natively.

Easy theme customization

Easy theme customization

Themes are simple to tweak thanks to Ghost’s handlebars-based templates. If you know basic HTML/CSS, you can make it look exactly how you want without fighting a visual builder from 2011.





Common questions

Tina CMS to Ghost migration FAQs

Answers to the most common questions about Tina CMS to Ghost migration

How do we migrate content out of Tina CMS?
Tina stores content as markdown and MDX files in your Git repository, which makes extraction the easiest part of any CMS migration we do. Your content is already files on disk. The work is in transforming those markdown files into the structured format your new CMS expects. Rich text blocks, custom components embedded in MDX, and frontmatter fields all need mapping. For a blog or docs site with 100 to 500 pages, we typically complete the migration in 2 to 4 weeks.
Why are teams leaving Tina CMS?
Three issues come up repeatedly. First, the React-only constraint for visual editing blocks teams that want to use Astro, SvelteKit, or other frameworks. Second, the development environment is unstable. The admin interface loads external assets that update independently of your codebase, so it can break without you changing anything. Third, the 2024 security breach involving compromised AWS keys shook confidence in the platform's operational maturity. Teams with enterprise compliance requirements found that hard to overlook.
Is it worth self-hosting Tina instead of migrating away?
Self-hosting removes the TinaCloud dependency, but it introduces its own gaps. There's no search functionality, no Git LFS support, and reference fields timeout on large collections. If you're already frustrated with Tina's instability, self-hosting adds more operational burden rather than solving the root problems. We've found that teams considering self-hosted Tina are usually better served by migrating to a platform with proper managed hosting and a more mature editorial experience.
How much does Ghost CMS really cost beyond the "free" open source version?
Ghost is free to self-host, but "free" is misleading. You'll need a VPS ($5-$20/month minimum), someone to handle server maintenance, security updates, SSL certificates, and backups. That's either your time or a developer's hourly rate. Realistically, self-hosted Ghost costs $50-$200/month in labour and infrastructure for a small team. Ghost's managed hosting (Ghost Pro) starts at $9/month for the Starter plan (500 members), jumps to $25/month for Creator (1,000 members), and scales to $199/month for the Business tier. Once your membership list grows past a few thousand, costs climb fast. We've seen publishers hit $300+/month on Ghost Pro before questioning whether the platform still made sense for them.
Does Ghost need a developer to maintain it?
If you're self-hosting, yes. Ghost runs on Node.js and requires regular updates, database maintenance (MySQL), and server monitoring. Major version upgrades (Ghost 4 to 5, for example) can break themes and integrations, and someone technical needs to handle those. On Ghost Pro, maintenance is handled for you, but customisation still requires a developer. Custom themes use Handlebars templating, and anything beyond basic styling means editing theme files and redeploying. If your team is purely non-technical and you want to go beyond Ghost's default themes, you'll need developer support on an ongoing basis.
When should you migrate away from Ghost?
Ghost hits its ceiling when you need more than blog posts and newsletters. If you're trying to build landing pages, manage structured content across multiple page types, run an ecommerce store, or handle multi-language content, Ghost wasn't designed for any of that. We've migrated publishers off Ghost when they outgrew the "blog plus newsletter" model and needed a real content platform. The migration itself is painless. Ghost's JSON API makes content extraction simple, and posts map cleanly to markdown. The typical timeline is 4-6 weeks to move content into a headless CMS and rebuild the frontend.
Can Ghost handle a site with more than just a blog?
Barely. Ghost gives you two content types, posts and pages, and that's it. There's no custom content modelling, no relational fields, no structured data beyond tags and authors. You can hack together something with custom routes and internal tags, but it's brittle and hard to maintain. If you need case studies, service pages, team directories, or any structured content beyond articles, you're fighting the platform. Ghost is excellent at what it does. It just doesn't do very much. For sites that need a blog alongside other content types, a headless CMS gives you the flexibility Ghost intentionally leaves out.


Get in touch

Fill out the form below and we'll get back to you