
Company News
Free Business Plan Upgrades for Open Source Maintainers
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.
@create-markdown/mdx
Advanced tools
Convert markdown blocks to MDX with component mappings. Part of the create-markdown monorepo.
# Using pnpm
pnpm add @create-markdown/mdx
# Using npm
npm install @create-markdown/mdx
# Using yarn
yarn add @create-markdown/mdx
# Using pnpm
pnpm add @create-markdown/mdx
import { markdownToMDX } from '@create-markdown/mdx';
const markdown = `# Hello World
This is **bold** and *italic* text.
\`\`\`typescript
const greeting = "Hello!";
\`\`\`
`;
const mdx = markdownToMDX(markdown);
console.log(mdx);
// ---
// title: "Hello World"
// ---
//
// # Hello World
//
// This is **bold** and *italic* text.
//
// ```typescript
// const greeting = "Hello!";
// ```
import { markdownToMDX } from '@create-markdown/mdx';
const mdx = markdownToMDX(markdown, {
components: {
codeBlock: 'CodeBlock',
callout: 'Callout',
image: 'Image',
},
imports: [
"import { CodeBlock } from '@/components/code-block'",
"import { Callout } from '@/components/callout'",
"import Image from 'next/image'",
],
});
import { parse } from '@create-markdown/core';
import { blocksToMDX } from '@create-markdown/mdx';
const blocks = parse('# Hello\n\nWorld');
const mdx = blocksToMDX(blocks, {
frontmatter: {
title: 'My Page',
description: 'A sample page',
},
});
import { convertDirectory, docsPreset } from '@create-markdown/mdx';
// Convert all .md files in a directory to .mdx
const results = await convertDirectory(
'./content',
'./pages',
{
...docsPreset,
overwrite: true,
}
);
console.log(`Converted ${results.length} files`);
markdownToMDX(markdown, options?)Converts a markdown string to MDX.
markdownToMDXWithMeta(markdown, options?)Converts markdown and returns metadata (title, headings for TOC).
blocksToMDX(blocks, options?)Converts block array to MDX string.
blocksToMDXWithMeta(blocks, options?)Converts blocks and returns metadata.
convertFile(inputPath, outputPath, options?)Converts a single markdown file to MDX.
convertDirectory(inputDir, outputDir, options?)Batch converts all markdown files in a directory.
interface MDXSerializeOptions {
// Component name mappings
components?: {
codeBlock?: string; // e.g., 'CodeBlock'
callout?: string; // e.g., 'Callout'
table?: string; // e.g., 'Table'
image?: string; // e.g., 'Image'
heading?: string; // e.g., 'Heading'
link?: string; // e.g., 'Link'
};
// Use JSX syntax for components
useJSX?: boolean;
// Import statements to prepend
imports?: string[];
// Frontmatter metadata
frontmatter?: {
title?: string;
description?: string;
[key: string]: unknown;
};
// Extract title from first H1
extractTitle?: boolean;
}
docsPresetPre-configured options for documentation sites:
import { markdownToMDX, docsPreset } from '@create-markdown/mdx';
const mdx = markdownToMDX(markdown, docsPreset);
minimalPresetMinimal MDX without custom components:
import { markdownToMDX, minimalPreset } from '@create-markdown/mdx';
const mdx = markdownToMDX(markdown, minimalPreset);
MIT
FAQs
Convert markdown blocks to MDX with component mappings
We found that @create-markdown/mdx demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.

Security News
The supply chain control that delays freshly published gems now covers lockfile generation and gem vendoring in Ruby projects.

Security News
During a UK cyber test, a Mythos 5 agent used sockpuppets, social engineering, and prompt injection to try to get a maintainer to merge malware.