MDX vs Markdown: Which One Should Your Team Use?
Your tech lead keeps asking to migrate your documentation from Markdown to MDX. They say that MDX adds the interactivity and functionality your users are demanding, without impacting performance or adding overhead.
So, should your team transition from Markdown to MDX? And how do you do that?
We’ll break all of this down in this article.
What are the differences between Markdown vs MDX?
Before deciding whether to transition from Markdown to MDX, you need to understand the differences between the two.
Markdown is a lightweight markup language for creating simple documentation and web pages. MDX is Markdown, with the option to add more complex visual and interactive elements using React.
Markdown has been a common tool for technology teams to create and manage their software’s documentation due to readable formatting. It is a basic text document with some symbols highlighting how the text should be formatted.
As software has grown more complex, users have required more detailed and interactive examples. This is where MDX comes in. MDX supports better documentation by allowing developers and writers to include React components directly in Markdown.
Aspect | Markdown | MDX |
Syntax Differences | ||
Levels of Interactivity | ||
Learning Curve | ||
Best Suited For | ||
Performance | ||
Customization Capabilities | ||
Integration with Tools & Frameworks | ||
Collaboration Ease | ||
Tooling & Setup Required | ||
Scalability for Larger Projects |
Markdown is simple and easy to learn. In fact, some writers don’t even realize the extra Markdown syntax they add to files.
MDX has a larger learning curve as users work with React components, but with guidance, it isn’t too difficult. However, MDX allows for easier code maintenance due to its modular nature. The CSS and HTML are contained in components, which means when you edit a React component, the changes will appear in all document sections.
Markdown has more of a copy-paste approach that makes maintaining and updating documents more difficult.
But there’s a lot more to consider when weighing MDX against Markdown. We’ll review this in the next section.
MDX vs Markdown: strengths, limitations, and use cases
Markdown has been a main tool for writing api documentation for decades due to its easy learning curve and lightweight nature. However, as users’ needs for documentation and more complex products like APIs have increased, MDX has begun to take market share.
Markdown strengths
Some of the attributes that have made Markdown appealing to work with are its ease of use, minimal setup, and fast rendering. Markdown syntax reads like a sentence and is very easy for both technical and non-technical users.
There is little setup for Markdown. Many browsers and interactive development environments (IDEs) provide formatters to help build Markdown files and viewers to see the final result.
Finally, Markdown renders fast. Page load time is everything, and Markdown does rendering well. Because there is no compilation, and Markdown is simply text, Markdown files can be sent and rendered quicker than other content.
Markdown weaknesses
While Markdown holds its own on usability and speed, it lacks support for modern web experiences. First, it does not support JavaScript and related interactivity. And it can’t show interactive widgets or embed apps.
Another weakness is its lack of styling. Instead, developers and writers must include external CSS documents to add styling to their Markdown.
Markdown use cases
The most common use cases for Markdown include simple blogs and static content-driven sites. These sites do not need to support JavaScript or extensive styling and are perfect for Markdown.
MDX strengths
MDX code is Markdown with the addition of JSX, or JavaScript components.
JSX components became popular in the early 2010s with the React framework and have been a part of UI/UX development since. These JSX components are pieces of JavaScript that allow for modular, reusable code that is both styled and interactive.
MDX adds the ability to embed these components directly in Markdown files. This means you can add live examples of code in a document. You don’t just have to tell users about a feature—you can show them.
You can also embed charts and other visual features in your documentation. These can be static or even make live calls for up-to-date data.
Finally, you can share components directly between MDX documents, removing the need to copy and paste the same sections across your documentation or pages.
MDX weaknesses
The component support that makes MDX great is also one of its weaknesses. MDX components use JSX, a version of JavaScript. This is not the easiest syntax and introduces a steeper learning curve for your writers and maintainers.
MDX also requires more setup because it requires a compiler to turn your MDX file into code that the browser can understand. To write and deploy your MDX, you may need to use a framework like Gatsby or NextJS.
MDX use cases
While Markdown is appealing for lightweight, simple documentation, MDX excels at most other documents. MDX is great for items such as:
- Developer portals
- Interactive tutorials
- Advanced documentation
With MDX you can embed code editors for users to test code. You can also embed demos so developers and users can see how a feature should work.
How to transition from Markdown to MDX
The transition from Markdown to MDX file format is straightforward because MDX is a superset of Markdown, which means it’s Markdown but with extra features.
However, not all MDX is Markdown because MDX extends Markdown. (This is important to remember if you need to maintain backward compatibility for both .md and .mdx files.)
Let’s review the steps you must follow to transition to MDX.
Step 1: Install MDX extensions
If you are creating your Markdown files locally or working within a templating framework like Gatsby or NextJS, you need to install an extension library. MDX contains JSX code, which means the compiler that turns Markdown into HTML will not work for your new syntax.
To work with Markdown locally, you need a framework that supports React like Gatsby or NextJS. Once you have the framework, add a JavaScript package like `@gatsby-plugin-mdx @mdx-js/react for Gatsby` or `@next/mdx` for NextJS to support the compilation of MDX to browser-friendly HTML.
Step 2: Change file extensions from .md to .mdx
This may be the easiest step in the transition. Change all the extensions for your Markdown files `.md` to MDX `.mdx`. This will alert your framework and compilers that files contain JSX now and need to be handled differently from pure Markdown files.
Step 3: Start incorporating React components
Now that your editor or project supports MDX, and the files reflect the expected content, it’s time to add components. You can do this by referencing existing components in your project, or by building new components to add to your project.
Step 4: Verify backward compatibility (optional)
This step might be redundant unless you want to maintain Markdown files for legacy users. In this case, you may need to add logic to look at a user’s browser version or device and serve Markdown or MDX depending on their support.
If you’re using an online IDE for your API documentation, then you don’t have to worry about local setup and updates. Some documentation services offer rich text editors that can handle MDX or Markdown without extra effort.
For example, ReadMe excels at MDX by offering a seamless user experience of text editing. With our interface, you might not even realize you are writing Markdown or leveraging MDX when using embeddings to improve the interactivity of your docs.
Combining MDX and Markdown in hybrid projects
Now that you know how to transition your Markdown project to MDX, let’s look at some of the things you can do with MDX.
Depending on your project needs you are either: creating brand new documentation with your new MDX setup or expanding your existing Markdown files with MDX features. Either way, we need to see what MDX looks like in practice.
To see MDX in action, let’s look at how we might write documentation for an API service with endpoints for calculating financial products like mortgages.
Our service exposes calculator endpoints to regional banks. It references our live rates to give the best estimates for the cost of a loan. Regional banks can use this mortgage estimate endpoint to build a UI element for a calculator.
We may already have Markdown files that look like this:
// Markdown code for our webpage
# Mortgage Cost Calculation API
## Endpoint: `/calculate-mortgage`
### Description
This endpoint calculates the monthly mortgage payment based on the initial down payment, full cost of the house, and the mortgage term.
### HTTP Method
`POST`
### Request Parameters
| Parameter | Type | Description | Required |
|—————|———|—————————————————-|———-|
| `down_payment` | `number` | The initial down payment amount in currency units | Yes |
| `house_cost` | `number` | The total cost of the house in currency units | Yes |
| `term_years` | `number` | The mortgage term in years | Yes |
### Request Example
“`json
{
“down_payment”: 50000,
“house_cost”: 300000,
“term_years”: 30
}
Here we have Markdown showing the API sections of:
- The endpoint path
- A description
- An HTTP method
- Request Parameters
- A sample request body
This is most of the data users would need to be able to use our endpoint.
However, for a better user experience, we should offer an example of the calculator users can build. This can’t be accomplished with Markdown. We need MDX.
With MDX, we can include JSX components to allow fully interactive documentation. Our developers may create a UI example component called <MortgageCalculator>. This component is a JSX wrapper including the HTML and CSS for creating styled inputs and the JavaScript for making a call using our endpoint.
The output of our <MortgageCalculator /> Component may look like this:

We can add this component anywhere in our existing Markdown code and create a hybrid Markdown, MDX document.
Now, users have the technical details they need to implement the endpoint in their code base, and a helpful example of what they can build. MDX extends Markdown for a better user experience.
Building MDX can be a challenge with the added setup, but many platforms offer rich text editors for building MDX files. They streamline the documentation process by including editing and deployment all in a single platform.
For example, ReadMe’s API documentation platform supports MDX directly in our text editor and provides prebuilt JSX elements. This allows you to easily create interactive and immersive documents, whether you’re a developer or technical writer.
To get started, just sign up for an account.