跳到主要内容

Markdown 转 JSX:粘贴 Markdown,输出干净的 React 组件

把 Markdown 变成能直接用的 React JSX:一次粘贴,从 README 到真组件,class 自动转 className、代码块完整保留。浏览器本地完成。

  • 本地处理
  • 分类 开发运维
  • 适合 格式化、校验、压缩或检查和代码相关的文本。
缩进:
Markdown
JSX

完全在浏览器里跑:Markdown 先解析为 HTML,再用原生 DOMParser 遍历(只读 —— 不执行、不上传)。你的输入会同步进 URL,分享链接可复现;含密钥的 Markdown 请手动复制输出。

这个工具能做什么

免费在线 Markdown 转 JSX 工具。粘贴任意 Markdown(README、更新日志、 文档页、想塞进应用里的 LLM 回答),立刻得到能直接放进 React(或 Preact 等)组件、不会被编译器报错的 JSX。内部跑的是两段成熟流程:先把 Markdown 解析成 HTML(标题、有序和无序列表、引用、围栏代码块、表格,以及行内的 加粗 / 斜体 / 行内代码 / 链接 / 图片),再用浏览器原生 DOMParser 遍历这段 HTML 并重建为 JSX。第二段做的是 React 专属转换:`class` 变 `className`、 `for` 变 `htmlFor`、围栏代码块的 `language-js` 类名正确改写、`img` `br` 这类 void 元素补自闭合、HTML 注释转成 JSX 注释。你可以把结果包成函数组件 (`export default function Content() { return (...) }`)、强制套一层 Fragment 让多个块成为一个合法表达式,并在 2 空格、4 空格、Tab 之间挑缩进。 因为 Markdown 几乎总会产出多个顶层块,包组件时默认套 Fragment,让你的代码 一次就能编译通过。解析是只读的,你的 Markdown 永远不会被注入当前页面, 即使输入里夹了一段行内 HTML `<script>` 也不会在这里执行。100% 浏览器本地 完成,不上传、不记录。

工具细节

输入
文本 + 结构化内容
页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
输出
即时结果 + 复制
结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
隐私
浏览器本地处理
主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
保存 / 分享
可分享链接状态
关键设置会进入 URL,复制链接后别人能复现同一组参数。
性能预算
首屏 JS ≤ 20 KB
没有声明 WASM 依赖,适合快速打开和移动端使用。
适用场景
开发运维 · 程序员
分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。

怎么用

  1. 1. 输入

    把内容粘贴或拖入工具面板。

  2. 2. 处理

    点击按钮,在浏览器内本地处理,文件不上传。

  3. 3. 复制 / 下载

    一键复制结果或下载到本地。

Markdown 转 JSX 适合怎么用

适合穿插在写代码、查问题、做 Review、上线前的小任务里。

适合开发场景

  • 格式化、校验、压缩或检查和代码相关的文本。
  • 把片段整理好再放进文档、工单、提交或交接材料。
  • 不切换工具,快速检查一个小 payload。

开发检查项

  • 压缩、混淆这类不可逆处理,先对副本操作。
  • 除非确认工具本地处理,不要粘贴密钥和敏感片段。
  • 转换后的代码上线前,仍要跑自己的测试或 lint。

下一步可以接着做

这些入口会把当前任务接到更完整的工具链里。

  1. 1 Markdown 转 HTML Markdown 转干净 HTML(标题/列表/代码/链接/图片/表格),实时双栏预览,浏览器本地 打开
  2. 2 HTML 转 JSX 粘贴 HTML,得到能直接用的 React JSX:class 改 className、内联样式转对象、标签自闭合。浏览器本地完成。 打开
  3. 3 SVG 转 JSX 粘贴 SVG,得到一个 React 组件,属性驼峰化、style 转对象、用 {...props} 透传。浏览器本地完成。 打开

真实使用场景

  • 把 README 的一段搬进 React 文档页

    你组件库的 README 有一段干净的"快速开始"(标题、一段说明、一个 安装代码块、一个要点列表),你想把同样的内容作为真正的 React 页面 放到文档站上。流程:复制那段 Markdown,粘到这里,勾上"包成组件", 选 2 空格缩进,复制结果。你得到 `export default function Content() { return (<>…</>) }`,代码块已经 带上了给高亮器用的 `className="language-bash"`。把它改名成 `GettingStarted`,塞进 `src/docs/`,你就省掉了通常吃掉前十分钟的 逐行 `class`→`className` 和"什么都套进一个 div"的收尾工作。

  • 不引入运行时 Markdown 解析器也能渲染更新日志

    你的发布说明用 Markdown 写,但不想为了展示一个静态的更新日志块就把 react-markdown 打进包里。粘进来转一下,你就有了纯 JSX,包里没有 解析器,也没有每次渲染的解析开销。加粗的版本号还是 `<strong>`, 修复项的要点列表还是 `<ul><li>`,行内的 `--watch` 参数还是 `<code>`。 只要内容是固定的而非用户产生的,构建时转换就是对的选择。

  • 把 LLM 给的 Markdown 回答塞进应用

    助手给了你一段工整的 Markdown 说明(标题、编号的步骤列表、一段 围栏代码示例),你想把它做成 React 应用里的静态帮助面板。粘进来转 一下,编号步骤变成 `<ol>`,代码示例变成 `<pre><code className="language-…">`。你拿到的是可审阅的 JSX,可以 用你的设计系统上样式,而不是把不可信的 Markdown 灌进运行时渲染器。

  • 把 Markdown 表格转成 JSX 表格组件

    你用 Markdown 写了一张功能对比表,因为写起来更快,但你需要它成为 一个有样式的 React 表格。粘进表格转一下,你得到一个真正的 `<table>`,带 `<thead>`/`<tbody>`、`<th>` 和 `<td>` 单元格,随时 能接你自己的 className 工具类。比逐行手写表格标记省心多了,而且改 起来也容易:改 Markdown、重转、重新粘。

  • 讲解 Markdown → HTML → JSX 这条流水线

    带一个刚接触 React 文档工具链的同事?粘一小段 Markdown 给他看输出: `# 标题` 怎么变成 `<h1>`、围栏块的语言标记怎么变成 `className`、 为什么包装层需要一个 Fragment。把 URL 分享给他(输入就在链接里), 他能自己重放、改 Markdown、看着 JSX 跟着更新。

常见踩坑

  • 粘了原始 HTML 还指望按 Markdown 规则处理。这个工具先把输入当 Markdown 读;输入里字面的 `<div class="x">` 会被当作行内 HTML 原样透传,不会被重新解析。如果你手上已经是 HTML,改用 HTML 转 JSX 工具。它正是这条流水线专门的后半段。

  • 以为代码块里的花括号会保持裸花括号。在 JSX 输出里,`{` 和 `}` 会被转义成 JSX 安全的实体,以免被当成表达式。要展示字面花括号这是对的,但如果你复制的代码里本该有一个真正的 JSX 表达式,就得手工把它解转义回来。

  • 忘了包成的多块组件需要单一根节点。Markdown 几乎总会产出多个顶层块,所以包组件时会自动套一层 Fragment `<>…</>`。如果你关掉包装又忘了开 Fragment 开关,把多个块直接粘进 `return (...)` 是编译不过的。把"用 Fragment 包裹"打开即可。

隐私说明

转换是纯 JavaScript,完全在你的浏览器标签页里跑。你的 Markdown 先解析为 HTML,再用原生 DOMParser 在一个惰性文档里遍历,没有网络请求、不上传、 不记录你粘了什么。唯一会"出门"的东西:你的输入会同步到页面 URL 的 query string 里,这样"分享链接"能复现同一份转换。这对协作很方便,但也意味着 输入里的任何内容都会进浏览器历史和接收方的服务器日志。如果 Markdown 里 含密钥、令牌或不想被记录的内部备注,请手动复制输出,而不是分享 URL。

常见问题

类似工具组合

做你这行的人, 还会一起用这些。

Made by Toolora · 100% client-side · Updated 2026-06-13