diff --git a/packages/astro/src/vite-plugin-markdown/index.ts b/packages/astro/src/vite-plugin-markdown/index.ts
index 00d6b42996cd..b67a144e494f 100644
--- a/packages/astro/src/vite-plugin-markdown/index.ts
+++ b/packages/astro/src/vite-plugin-markdown/index.ts
@@ -180,11 +180,16 @@ const $$content = ${JSON.stringify(content)}
---`;
const imports = `${layout ? `import Layout from '${layout}';` : ''}
${setup}`.trim();
+
+ // Wrap with set:html fragment to skip
+ // JSX expressions and components in "plain" md mode
+ if (renderOpts.mode === 'md') {
+ astroResult = ``
+ }
+
// If the user imported "Layout", wrap the content in a Layout
if (/\bLayout\b/.test(imports)) {
- astroResult = `${prelude}\n\n\n${
- renderOpts.mode === 'md' ? `` : astroResult
- }\n\n`;
+ astroResult = `${prelude}\n\n\n${astroResult}\n\n`;
} else {
astroResult = `${prelude}\n${astroResult}`;
}