Forestry.io Shut Down
Forestry.io shut down permanently on April 22, 2023. The team pivoted to TinaCMS, a React-component-based editor that works differently from Forestry. If you are moving your workflow off Forestry, here is how md0 compares.
md0 VS
FORESTRY
A REAL COMPARISON
Forestry shut down on April 22, 2023. The team pivoted to TinaCMS, a React-based editor that works differently. If you are moving your workflow off Forestry, here is how md0 compares on every dimension that matters for a Git-based editorial workflow.
TRY md0 FREEBackground
What Happened to Forestry
The Original Product
Forestry.io launched around 2016 and became one of the first Git-based CMS tools to gain real traction. It worked well for Hugo and Jekyll sites. You connected your GitHub or GitLab repository, defined your content types through a config file at.forestry/settings.yml, and your editors got a clean web interface without needing to learn Git. For static site developers, it solved a real problem: giving non-technical editors access to content in a Git repository without forcing them into the terminal.
April 22, 2023: Permanent Shutdown
Forestry.io shut down permanently on April 22, 2023. This was not a deprecation or a handoff to a community maintainer. The service went offline. Existing sites that relied on Forestry for content editing lost access to their editorial interface that day. The team behind Forestry had already been building TinaCMS as a successor product, and the shutdown was the endpoint of that transition. There is no path back to Forestry. The service is gone.
TinaCMS: The Official Successor
TinaCMS is the product the Forestry team built after Forestry. It is a fundamentally different approach. Where Forestry was a standalone web app that you connected to any static site, TinaCMS is a React-based framework component you install inside your application. It requires you to wrap your content in React components, which works well for Next.js and Remix sites but is not a good fit for Hugo, Jekyll, Eleventy, or other non-React frameworks. Many Forestry users found TinaCMS too heavy, too opinionated about their stack, or too different from the workflow they had built around Forestry. For a direct comparison with TinaCMS, see the md0 vs TinaCMS page.
Why Teams Are Looking for a Forestry Alternative Now
Most teams that were on Forestry have been operating without a dedicated CMS since April 2023. Some switched to TinaCMS. Some moved to Netlify CMS or Decap CMS. Some went back to raw Git commits. Many are still looking for a tool that works the same way Forestry did: connect a repository, define collections, give editors a visual interface, commit changes back to Git. That is exactly what md0 does, without requiring a framework change, without requiring a self-hosted backend, and without requiring your editors to touch the terminal.
Side by Side
Feature Comparison
| Feature | md0 CMS | Forestry (at EOL) |
|---|---|---|
| Active development | Yes | Shut down Apr 2023 |
| GitHub integration | Native OAuth | Had it |
| Visual markdown editor | Modern WYSIWYG (Lexical) | Had it |
| Config file format | md0 schema (visual UI) | .forestry/settings.yml |
| Free tier | Free for public repos | Paid plans only |
| Setup complexity | Under 5 minutes | 5-10 minutes + config file |
| Backend required | None needed | None (SaaS) |
| Framework support | Any static site | Hugo, Jekyll, Next.js, others |
Where md0 Wins
What md0 Does Better
1. It is still running
The most important difference is that md0 exists. Forestry does not. If you are evaluating CMS options for a project that will be maintained over the next two to five years, you need a tool with active development, a working product, and a team behind it. md0 is under active development. Bugs get fixed. GitHub API changes get handled. Features ship.
2. Free tier for public repositories
Forestry required a paid plan for teams. md0 is free for public GitHub repositories. If your static site or documentation lives in a public repo, which is common for open source projects, personal blogs, and agency work. You pay nothing. The editing interface, GitHub sync, collection management, and schema builder are all included at no cost for public repos.
3. Visual schema builder, no YAML file required
Forestry used a .forestry/settings.yml file to define front matter templates. Writing and maintaining that file required knowing the right field type names and YAML syntax. A mistake in indentation broke the whole schema silently. md0 provides a visual schema builder in the UI. You add fields by clicking, set field types from a dropdown, mark fields as required, and add validation, without touching a config file. The schema is stored as a file in your repo, but you never write it by hand.
4. Modern editor with clean markdown output
md0 uses a Lexical-powered visual editor that outputs standard GitHub-flavored markdown. What you type in the editor is exactly what lands in the .md file. No hidden HTML attributes, no non-standard shortcodes, no renderer lock-in. Forestry's editor was functional but showed its age by 2022. The md0 editor supports slash commands, block-level elements, and inline formatting with a modern feel that non-technical editors find easier to use.
5. Framework-agnostic, same as Forestry was
One of Forestry's strengths was that it worked with any static site generator. Hugo, Jekyll, Eleventy, Gatsby, Next.js. It did not care about your framework because it just read and wrote files in your repository. md0 takes the same approach. There is no React component to install, no framework adapter to configure. Connect your repo, define your collections, and start editing. Your build process stays exactly as it is today.
Honest Assessment
Where Forestry Had an Edge
1. More mature widget library
By 2022, Forestry had accumulated a rich set of field widget types: color pickers, blocks (repeatable component groups), lists with nested object schemas, and select fields with dynamic options. Some of these more specialized field types are still being added to md0. If your Forestry configuration depended heavily on blocks or deeply nested field schemas, check the md0 field type list before migrating to confirm coverage for your specific case.
2. Better media management at the time
Forestry had a dedicated media library with image upload, asset management, and Cloudinary integration. It was one of the more polished parts of the product. md0 supports media uploads and a media library, but if you built complex media workflows around Forestry's media management features specifically, including third-party integrations, verify those workflows before switching.
3. Larger ecosystem of tutorials and community answers
Forestry had years of blog posts, YouTube tutorials, and community-contributed starter templates. If you hit an edge case with Forestry, there was a reasonable chance someone had documented the solution. md0 is newer. The community-generated documentation is still growing. The official docs cover the main workflows, but niche edge cases may not yet have a community-written tutorial to reference.
Step by Step
Migrating from Forestry to md0
Migration takes less than an hour for most sites. Your markdown content files do not move. Only the editorial configuration changes. Follow these steps in order.
Find your Forestry config
Your Forestry configuration lived in .forestry/settings.yml in your repository. Open that file and list every content section defined there. These map to collections in md0. Also note the front matter template files in.forestry/front_matter/templates/. Each template corresponds to a schema you will recreate in md0. If you no longer have access to those files, work from memory or from the frontmatter fields present in your existing markdown files.
Map Forestry front matter templates to md0 schemas
Each field in your Forestry front matter template maps to a field in an md0 schema. Common mappings: text fields become string fields,textarea fields become text fields,datetime fields become date fields,boolean fields stay boolean, and list fields become array fields. For most Hugo and Jekyll sites, all field types map directly. More complex types like blocks or nested objects may need a substitute. Check the md0 field type list to confirm.
Connect your GitHub repo to md0
Go to cms.md0.io and sign in with your GitHub account. Connect the same repository that Forestry was connected to. That is the repository that holds your content files. md0 reads your repo structure directly. You do not need to add any files to the repo or change your build configuration. Select your default branch (usually main ormaster).
Recreate your collections in md0
In md0, create a collection for each content section from your Forestry config. Set the folder path to match the directory where that content lives in your repo. For example, if Forestry pointed to content/posts, set the md0 collection path to content/posts/**/*.md. Use the schema builder to add fields matching the front matter template you mapped in step 2. md0 reads existing frontmatter from your markdown files and displays it immediately once the collection is set up.
Test one file before migrating all content
Open a single existing content file in the md0 editor. Verify that all frontmatter fields parse correctly and appear in the right schema fields. Make a small edit, change one word in the body, and save it. Check that a commit appears on GitHub with the correct content, and that your site build still passes. Once one file works correctly, the rest of your content will work the same way. Your content format does not need to change.
You can safely delete the .forestry/ directory from your repository after migration. md0 does not use it. Your markdown files are unchanged. The only thing that changed is which UI your editors use to write content.
Also See
- Using Hugo with Forestry? md0 CMS for Hugo
- Using Jekyll with Forestry? md0 CMS for Jekyll
- Ready to migrate? Forestry migration guide | Compare all CMS alternatives
READY TO MIGRATE?
Connect your GitHub repo and start editing markdown in under five minutes. Free for public repositories. Same Git-based approach Forestry used.
GET STARTED FREE