How to Migrate From Mintlify Without Rewriting Your MDX

Abdullah Enes Gules10 min read

To move off Mintlify without rewriting your MDX, use a host that reads Mintlify's project format as it is. Docs7 does: connect the same GitHub repository and it builds your docs.json (or older mint.json), MDX pages, snippets, OpenAPI files, and redirects, then gives you a preview before you change DNS. If cost is the only reason to leave, Mintlify's own free Starter plan is worth a look. Moving to GitBook, Fern, or an open-source framework like Docusaurus means converting to that tool's format.

The move takes four steps: check the repository, connect it, compare the preview with your live site, and switch the domain. Most of the work is the checking, because component coverage is not guaranteed and some things live in Mintlify's dashboard, not your repository.

Step 1: Check That Your Repository Is Ready

Docs7 builds from a GitHub repository. Confirm four things before you connect it.

Find the config file. Mintlify replaced mint.json with docs.json, and Docs7 reads either one. It looks for docs.json first, then mint.json, in the folder you point it at. Note that folder: usually the repository root, or a folder like docs in a monorepo.

Make sure the repository is yours. If you skipped connecting your own Git repository when you set up Mintlify, your docs live in a private repository owned by the Mintlify organization. Clone it into your GitHub account from Mintlify's Git Settings page first.

Publish or discard pending changes in Mintlify's web editor. Edits there only reach your repository when you publish them, and only what is in Git moves.

Check whether the repository is public or private. Docs7 Free hosts up to three sites from public repositories; private repositories need Pro. Docs7 connects GitHub repositories only. Its CLI can deploy a folder without GitHub, but a CLI site stays on its docs7.io address, with no custom domain or pull request previews, so a migration needs the GitHub connection.

To see how Docs7 renders your pages before you connect anything, run the Docs7 CLI from the docs folder. It needs Node.js 20.19 or newer.

$ npx @upstash/docs7 dev

Step 2: Connect the Repository and Get a Preview Build

Open context7.com/docs7/add and sign in. Keep Host on Docs7 selected. Click Connect GitHub if asked, and give the Context7 GitHub App access to the repository. Pick the repository, then set the branch (usually the one Mintlify deploys from) and the docs path from step 1. Leave Add to Context7 ticked if you want the docs indexed on Context7, then click Add.

Docs7 checks the folder for docs.json or mint.json. If it finds one, hosting turns on and the first build starts. If the folder has neither, the repository connects for agent features only and no site is built, which usually means the docs path is wrong.

When the build finishes, the new site is live at its docs7.io address. That is your preview. Your readers see no change: Mintlify still serves your custom domain.

Step 3: Compare the Preview With Your Live Mintlify Site

Open the build on the Builds tab and read its health report first. A component Docs7 does not recognize is reported as a warning, not a failure, so a build can succeed while a page renders differently. Treat each warning as a page to look at.

Then put the preview and your live Mintlify site side by side. Start with the home page, the quickstart, your most visited guides, and the API reference. Check navigation, tabs, code blocks, callouts, cards, and images. Docs7 implements nine Mintlify themes (mint, maple, palm, willow, linden, almond, aspen, sequoia, and luma) and reads the theme field in docs.json. If your docs.json sets a theme outside that list, Docs7 renders the site with mint and the layout will look different.

Redirects get their own pass. Mintlify keeps them in the redirects field of docs.json, and Docs7 reads that list. Try a handful of old URLs on the preview.

If your API reference is generated from an OpenAPI file, open several endpoints and check parameters, examples, and the API playground.

Snippets and custom components are the most likely to differ. Mintlify keeps custom React components as .jsx files in the snippets folder. Check every page that uses one.

Fix what you find in the repository. Each push to the production branch builds again. Mintlify builds from the same repository, so keep fixes compatible with both until you switch.

Step 4: Move the Custom Domain Last, Then Turn On the Extras

Switch the domain only when the preview looks right. Until then, Mintlify keeps serving your readers.

Add the domain in the Domain card on the site's Settings tab. Docs7 supports two setups. Its own domain, such as docs.example.com, uses DNS records that Docs7 lists for you: add the TXT records first, then change the CNAME when you are ready to switch. Keep that CNAME unproxied (sometimes called DNS only), or the certificate may not be issued. A path on an existing site, such as example.com/docs, uses a reverse proxy rule, and Docs7 shows the configuration for Cloudflare, Vercel, AWS, and other proxies.

If your Mintlify plan includes analytics, export the data you want to keep before you cancel. Mintlify exports traffic, referrals, assistant conversations, searches, and feedback to CSV.

Then change the CNAME or turn on the proxy rule. Docs7 issues the HTTPS certificate a few minutes after the CNAME points at it, so switch at a quiet time. Spot-check the same pages and redirects on the real domain. Keeping the same domain and paths reduces SEO risk. Once you are confident, cancel Mintlify and remove its GitHub App from the repository, so a push no longer deploys to both.

With the site live, three features are worth a look.

Add to Context7

Best for: Coding agents that read your docs

The site becomes a Context7 library, refreshed on every successful production deploy, so coding agents using the Context7 MCP server get your current docs. Disconnecting stops the refreshes.

Pull request previews

Best for: Reviewing docs changes before they ship

On by default, on both plans. Opening or updating a pull request that changes the docs builds a preview, and closing it removes the preview. Each build is reported as a GitHub Check Run.

PR Review Agent

Best for: Catching broken links and build issues in pull requests

It checks preview builds for broken links, spelling and grammar, and build health issues. It is off by default, starts by commenting, and can also open fix pull requests.

AI agents that keep docs up to date →

What Should You Check Before Switching DNS?

Use this checklist for the whole migration. Each row has a clear finish line.

StepWhat to checkDone when
Repositorydocs.json or mint.json in the docs folder, repo in your GitHub account, editor changes publishedThe config file is on the branch you will deploy
PlanPublic repo works on Free; a private repo needs ProYou know which plan the site needs
ConnectBranch and docs path in the Add formThe first build finishes
Build healthWarnings in the build's health report, especially unknown componentsEvery warning is fixed or accepted
Page parityNavigation, top pages, and custom components side by side with MintlifyNo page looks broken or missing
RedirectsA sample of old URLs on the previewEach one lands on the right page
API referencePages generated from OpenAPI files and the API playgroundEndpoints, parameters, and examples match
SnippetsShared snippets and .jsx components in the snippets folderContent appears wherever it is imported
AnalyticsMintlify data you want to keepCSV exports are saved somewhere outside Mintlify
DomainDomain added in Docs7 Settings, TXT records or proxy config readyOnly the CNAME change or proxy rule is left
CutoverMintlify stays live until this pointThe domain shows Active in Docs7 and spot checks pass
ExtrasAdd to Context7, pull request previews, PR Review AgentThe ones you want are set up

What Does Not Carry Over From Mintlify?

Your content moves because it lives in Git. Anything that lives only in Mintlify's dashboard, such as settings and team seats, does not. Check these by hand.

Component coverage. There is no guarantee every component renders exactly as on Mintlify. The preview and its warnings are the test that counts.

The web editor. Docs7 has no web editor. Editing happens in Git and MDX, so anyone who wrote in Mintlify's editor needs a Git workflow.

Analytics history. Mintlify's traffic, search, feedback, and assistant data stays with Mintlify, so export it before you cancel. Docs7 analytics starts the day you switch, with 7 days of history on Free and 90 on Pro.

Mintlify's hosted MCP server. Mintlify generates a search MCP server at the /mcp path of your site. If people connected agents to that URL, tell them about the change. On Docs7, agents read your docs through llms.txt and markdown pages, and, with Add to Context7, through the Context7 MCP server.

Why Some Teams Stay on Mintlify

Moving is not always the right call. These are fair reasons to stay.

Non-developers write the docs

Best for: Teams that edit in the browser

Mintlify's web editor is on every plan, including the free Starter plan. Docs7 is Git and MDX only, with no web editor.

Your docs require login

Best for: Private customer or partner docs

Mintlify can put docs behind a login: password protection on Pro, and OAuth or JWT on Enterprise. Docs7 does not offer login-protected docs.

Your repository is not on GitHub

Best for: Teams on GitLab or Bitbucket

Mintlify deploys from GitLab as well as GitHub, and from Bitbucket Cloud on Enterprise. Docs7 connects GitHub repositories only. Its CLI can deploy a folder from anywhere, but that site stays on a docs7.io address, without a custom domain or pull request previews.

You rely on Mintlify-only features

Best for: Teams deep in the Mintlify dashboard

AI translations, Mintlify's own agent and automations, and its hosted MCP server do not move with the repository. If you depend on them, compare carefully first.

Nothing is wrong

Best for: Teams happy with the site and the bill

A migration still means a round of checking and a DNS change. Without a concrete reason to leave, staying is fine.

Frequently asked questions

I want to move off Mintlify without rewriting my MDX. What can I use?

Use a host that reads Mintlify's docs.json format directly. Docs7 builds an existing Mintlify repository as it is, including MDX, snippets, OpenAPI files, and redirects, and gives you a preview before you switch your domain. GitBook, Fern, and Docusaurus use their own formats, so moving there means converting content and replacing components.

Is there a free alternative to Mintlify?

Docs7 has a free plan that hosts up to three sites from public GitHub repositories, with a custom domain, pull request previews, agent and human analytics, Context7 integration, WebMCP search, the API playground, and limited use of the AI assistant, the Context7 Agent, and PR reviews. Free sites show a footer attribution, and private repositories need Pro. Mintlify's own Starter plan is also free and includes a custom domain, the web editor, and an MCP server, but not analytics, the assistant, or preview deployments.

Does Docs7 work with mint.json or only docs.json?

Both. Docs7 looks for docs.json first and falls back to mint.json in the docs folder you choose. Mintlify has deprecated mint.json in favor of docs.json, so upgrading is worth doing eventually, but you do not need to upgrade to move.

Will my Mintlify components work on Docs7?

Docs7 is built to be Mintlify-compatible, but there is no guarantee every component renders identically. It implements nine Mintlify themes and renders any other theme with mint. Components Docs7 does not recognize show up as build warnings instead of failing the build. Read your first build's health report and compare those pages with your live site, starting with custom React components.

Will I lose SEO if I migrate from Mintlify?

Keeping the same domain and URL paths reduces the risk. Docs7 generates canonical metadata, sitemap.xml, robots.txt, and the permanent redirects defined in your docs.json. Test a sample of old URLs on the preview before you switch DNS, and again on the real domain after.

Can I go back to Mintlify if the migration goes wrong?

Yes, as long as your Mintlify project is still active with your custom domain set up. Docs7 builds the same repository Mintlify does, so rolling back means pointing your DNS at Mintlify again. That is why you keep Mintlify running until the Docs7 site has served real traffic for a while.

Get a Preview Before You Touch DNS

Connect the GitHub repository Mintlify builds from today, review the Docs7 preview and its warnings, and switch your domain only when the pages match.

More guides

View all guides