Bring existing Markdown and MDX files into Marble as draft posts using the queued import workflow, with a syntax compatibility reference.
You can bring your existing .md and .mdx files into Marble as draft posts. Marble imports happen asynchronously: you upload a file, Marble queues a job, a worker parses the content in the background, and the created drafts show up in your posts list when the job completes.
Upload a single Markdown file or a ZIP archive (see Supported uploads).
Marble queues the import and starts processing it in the background. You can leave the page while it runs — the status updates automatically when you return.
Imports are capped at 4 MB per upload. Each ZIP archive may contain up to 100 Markdown files and 20 MB of extracted content. Entries that are not .md or .mdx are skipped.
Marble reads standard YAML frontmatter keys from each file. When a key is missing, the post falls back to a sensible default:
Field
Frontmatter keys
When missing
Title
title
The first # heading, then the filename
Description
description, excerpt, summary
The first ~160 characters of the post’s text, then the title
Published date
date, publishedAt, published_at, pubDate
The time of the import
Category
category, or the first entry in categories
Uncategorized
Tags
tags, as a list or a comma-separated string
No tags
Slug
slug
Generated from the title
Categories and tags are matched to existing ones by slug, so category: Coding lands in your Coding category. Any that don’t exist yet are created for you.
---title: Connect a Docker containerdate: 2024-01-15description: Run Tailscale as a sidecar container.category: Codingtags: [docker, networking]---
URL-based imports are not supported. You must upload a file or ZIP archive.
If your content uses MDX, Marble will keep JSX-style components and custom MDX syntax in the source:
MDX elements like <MyComponent prop="value" />
Shortcodes or layout wrappers used in .mdx files
However:
❌ Custom components will not render inside the Marble editor preview.
❌ Marble does not execute or parse your components for you. You need to parse the imported MDX inside your own codebase (for example, using your framework’s MDX pipeline) for those components to work at runtime.
You can safely import your existing Markdown (.md) and MDX (.mdx) files into Marble. Each file becomes a draft post you can review before publishing, and any MDX components remain in the source so they continue to work when parsed in your own application.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"maple","$schema":"https://mintlify.com/docs.json","name":"Marble Documentation","description":"Documentation for Marble, the simple headless CMS for writers and developers.","colors":{"primary":"#584dff","light":"#7b73ff","dark":"#5b4ffc"},"logo":{"light":"https://mintcdn.com/marblecms/tz5RF6uEpnK3dZfR/logo/light.svg?fit=max\u0026auto=format\u0026n=tz5RF6uEpnK3dZfR\u0026q=85\u0026s=7531eadb6f8c6b2e211769689c54f124","dark":"https://mintcdn.com/marblecms/tz5RF6uEpnK3dZfR/logo/dark.svg?fit=max\u0026auto=format\u0026n=tz5RF6uEpnK3dZfR\u0026q=85\u0026s=1fff9fb1184fb23fa39c1cca49b78ada"},"favicon":"https://mintcdn.com/marblecms/tz5RF6uEpnK3dZfR/favicon.svg?fit=max\u0026auto=format\u0026n=tz5RF6uEpnK3dZfR\u0026q=85\u0026s=697d565bf501b5cda10413fdc3ee501f","background":{"decoration":"windows"},"footer":{"socials":{"x":"https://x.com/usemarblecms","github":"https://github.com/usemarble"}},"styling":{"eyebrows":"breadcrumbs","codeblocks":{"theme":{"light":"github-light","dark":"github-dark"}},"latex":false},"contextual":{"options":["copy","chatgpt","claude",{"title":"Open in T3 Chat","description":"Ask questions about this page","icon":"https://t3.chat/favicon.ico","href":{"base":"https://t3.chat/new","query":[{"key":"q","value":"Read from https://docs.marblecms.com/$path so I can ask questions about it."}]}},"mcp"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://marblecms.com/blog"},{"anchor":"Community","icon":"discord","href":"https://discord.marblecms.com/"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"marblecms","hasAudioNarration":false,"actualSubdomain":"marblecms","customDomains":["docs.marblecms.com"],"gitSource":{"type":"github","owner":"usemarble","repo":"marble","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad8a3cab45e1999f701ddbf","collectionId":"8a6ee0b7-3552-4708-af2c-c9719d451b5e","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad8a3cab45e1999f701ddbf"},"feedback":{"thumbs":true,"issues":false,"edits":false},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ad8a3cab45e1999f701ddbf","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API Reference","count":32},{"language":"default","tag":"Documentation","count":19},{"language":"default","tag":"Getting Started","count":9},{"language":"default","tag":"Features","count":6},{"language":"default","tag":"Authors","count":5},{"language":"default","tag":"Categories","count":5},{"language":"default","tag":"Media","count":5},{"language":"default","tag":"Posts","count":5},{"language":"default","tag":"Tags","count":5},{"language":"default","tag":"Integrations","count":4}]},"assistantConfig":{},"hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"features/import","slug":"/features/import","pageMetadata":{"title":"Importing Content","sidebarTitle":"Import","description":"Bring existing Markdown and MDX files into Marble as draft posts using the queued import workflow, with a syntax compatibility reference.","href":"/features/import"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Bring existing Markdown and MDX files into Marble as draft posts using the queued import workflow, with a syntax compatibility reference.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Check,CodeBlock,Heading,Note,Table,Warning}=_components;if(!Check)_missingMdxReference(`Check`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`You can bring your existing `,_jsx(_components.code,{children:`.md`}),` and `,_jsx(_components.code,{children:`.mdx`}),` files into Marble as draft posts. Marble imports happen asynchronously: you upload a file, Marble queues a job, a worker parses the content in the background, and the created drafts show up in your posts list when the job completes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`starting-an-import`,children:`Starting an import`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Open `,_jsx(_components.strong,{children:`Settings → Data`}),` in your workspace.`]}),`\n`,_jsxs(_components.li,{children:[`Find the `,_jsx(_components.strong,{children:`Import Content`}),` section.`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Import`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Upload a single Markdown file or a ZIP archive (see `,_jsx(_components.a,{href:`#supported-uploads`,children:`Supported uploads`}),`).`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Marble queues the import and starts processing it in the background. You can leave the page while it runs — the status updates automatically when you return.`}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Imports are capped at `,_jsx(_components.strong,{children:`4 MB per upload`}),`. Each ZIP archive may contain up to `,_jsx(_components.strong,{children:`100`}),` Markdown files and `,_jsx(_components.strong,{children:`20 MB`}),` of extracted content. Entries that are not `,_jsx(_components.code,{children:`.md`}),` or `,_jsx(_components.code,{children:`.mdx`}),` are skipped.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`supported-uploads`,children:`Supported uploads`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Upload type`}),_jsx(_components.th,{children:`Behavior`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`.md`}),` / `,_jsx(_components.code,{children:`.mdx`})]}),_jsx(_components.td,{children:`Creates a single draft post from the file.`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`.zip`}),` archive`]}),_jsxs(_components.td,{children:[`Creates one draft post per `,_jsx(_components.code,{children:`.md`}),` or `,_jsx(_components.code,{children:`.mdx`}),` file in the archive. Other entries are skipped.`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Imported posts are always created as `,_jsx(_components.strong,{children:`drafts`}),` so you can review them before publishing.`]}),`\n`,_jsx(Heading,{level:`2`,id:`frontmatter`,children:`Frontmatter`}),`\n`,_jsx(_components.p,{children:`Marble reads standard YAML frontmatter keys from each file. When a key is missing, the post falls back to a sensible default:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Frontmatter keys`}),_jsx(_components.th,{children:`When missing`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Title`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`title`})}),_jsxs(_components.td,{children:[`The first `,_jsx(_components.code,{children:`#`}),` heading, then the filename`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Description`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`description`}),`, `,_jsx(_components.code,{children:`excerpt`}),`, `,_jsx(_components.code,{children:`summary`})]}),_jsx(_components.td,{children:`The first ~160 characters of the post’s text, then the title`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Published date`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`date`}),`, `,_jsx(_components.code,{children:`publishedAt`}),`, `,_jsx(_components.code,{children:`published_at`}),`, `,_jsx(_components.code,{children:`pubDate`})]}),_jsx(_components.td,{children:`The time of the import`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Category`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`category`}),`, or the first entry in `,_jsx(_components.code,{children:`categories`})]}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`Uncategorized`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Tags`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`tags`}),`, as a list or a comma-separated string`]}),_jsx(_components.td,{children:`No tags`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Slug`}),_jsx(_components.td,{children:_jsx(_components.code,{children:`slug`})}),_jsx(_components.td,{children:`Generated from the title`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`Categories and tags are matched to existing ones by slug, so `,_jsx(_components.code,{children:`category: Coding`}),` lands in your `,_jsx(_components.strong,{children:`Coding`}),` category. Any that don’t exist yet are created for you.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`markdown`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light github-dark`,style:{backgroundColor:`#fff`,\"--shiki-dark-bg\":`#24292e`,color:`#24292e`,\"--shiki-dark\":`#e1e4e8`},language:`markdown`,children:_jsxs(_components.code,{language:`markdown`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`---`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#22863A`,\"--shiki-dark\":`#85E89D`},children:`title`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`Connect a Docker container`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#22863A`,\"--shiki-dark\":`#85E89D`},children:`date`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#005CC5`,\"--shiki-dark\":`#79B8FF`},children:`2024-01-15`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#22863A`,\"--shiki-dark\":`#85E89D`},children:`description`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`Run Tailscale as a sidecar container.`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#22863A`,\"--shiki-dark\":`#85E89D`},children:`category`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`Coding`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#22863A`,\"--shiki-dark\":`#85E89D`},children:`tags`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`: [`}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`docker`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`, `}),_jsx(_components.span,{style:{color:`#032F62`,\"--shiki-dark\":`#9ECBFF`},children:`networking`}),_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#24292E`,\"--shiki-dark\":`#E1E4E8`},children:`---`})}),`\n`]})})}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`URL-based imports are `,_jsx(_components.strong,{children:`not supported`}),`. You must upload a file or ZIP archive.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`job-lifecycle`,children:`Job lifecycle`}),`\n`,_jsx(_components.p,{children:`Each import moves through these states:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Status`}),_jsx(_components.th,{children:`Meaning`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`queued`})}),_jsx(_components.td,{children:`The import has been requested and is waiting to be picked up.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`discovering`})}),_jsx(_components.td,{children:`A worker is reading the upload and listing the files inside.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`processing`})}),_jsx(_components.td,{children:`The worker is parsing each file and preparing draft records.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`importing`})}),_jsx(_components.td,{children:`Drafts are being written to your workspace.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`completed`})}),_jsx(_components.td,{children:`All drafts are created. The number of imported posts is shown next to the job.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`failed`})}),_jsx(_components.td,{children:`Something went wrong. The error reason is shown next to the job.`})]})]})]}),`\n`,_jsxs(_components.p,{children:[`The most recent imports are listed under `,_jsx(_components.strong,{children:`Import Content`}),`, with a `,_jsx(_components.strong,{children:`View posts`}),` link once a job completes.`]}),`\n`,_jsx(Heading,{level:`2`,id:`supported-markdown-syntax`,children:`Supported Markdown syntax`}),`\n`,_jsxs(_components.p,{children:[`The following core Markdown features are `,_jsx(_components.strong,{children:`preserved on import`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Syntax`}),_jsx(_components.th,{children:`Import`}),_jsx(_components.th,{children:`Editor`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Headings`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Paragraphs \u0026 line breaks`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Emphasis`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Unordered lists`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Ordered lists`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Links`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Images`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Blockquotes`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Code blocks`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Inline code`}),_jsx(_components.td,{children:`✅`}),_jsx(_components.td,{children:`✅`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Tables`}),_jsx(_components.td,{children:`❌`}),_jsx(_components.td,{children:`❌`})]})]})]}),`\n`,_jsx(_components.p,{children:`Importing unsupported syntax might not display properly.`}),`\n`,_jsx(Heading,{level:`2`,id:`mdx-and-components`,children:`MDX and components`}),`\n`,_jsxs(_components.p,{children:[`If your content uses MDX, Marble will keep JSX-style components and custom MDX syntax `,_jsx(_components.strong,{children:`in the source`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`MDX elements like `,_jsx(_components.code,{children:`\u003cMyComponent prop=\"value\" />`})]}),`\n`,_jsxs(_components.li,{children:[`Shortcodes or layout wrappers used in `,_jsx(_components.code,{children:`.mdx`}),` files`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`However:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`❌ `,_jsx(_components.strong,{children:`Custom components will not render inside the Marble editor preview.`})]}),`\n`,_jsxs(_components.li,{children:[`❌ `,_jsx(_components.strong,{children:`Marble does not execute or parse your components for you.`}),` You need to parse the imported MDX inside your own codebase (for example, using your framework’s MDX pipeline) for those components to work at runtime.`]}),`\n`]}),`\n`,_jsx(Check,{children:_jsxs(_components.p,{children:[`You can safely import your existing Markdown (`,_jsx(_components.code,{children:`.md`}),`) and MDX (`,_jsx(_components.code,{children:`.mdx`}),`) files into Marble. Each file becomes a draft post you can review before publishing, and any MDX components remain in the source so they continue to work when parsed in your own application.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":{"light":"github-light","dark":"github-dark"}},"config":{},"pageMetadata":{"title":"Importing Content","sidebarTitle":"Import","description":"Bring existing Markdown and MDX files into Marble as draft posts using the queued import workflow, with a syntax compatibility reference.","href":"/features/import"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Starting an import","slug":"starting-an-import","depth":2,"children":[]},{"title":"Supported uploads","slug":"supported-uploads","depth":2,"children":[]},{"title":"Frontmatter","slug":"frontmatter","depth":2,"children":[]},{"title":"Job lifecycle","slug":"job-lifecycle","depth":2,"children":[]},{"title":"Supported Markdown syntax","slug":"supported-markdown-syntax","depth":2,"children":[]},{"title":"MDX and components","slug":"mdx-and-components","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"marblecms","siteName":"Marble Documentation","title":"Importing Content - Marble Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-06T20:56:47.806Z","originalFileLocation":"features/import.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Bring existing Markdown and MDX files into Marble as draft posts using the queued import workflow, with a syntax compatibility reference.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Marble Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Importing Content - Marble Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Bring existing Markdown and MDX files into Marble as draft posts using the queued import workflow, with a syntax compatibility reference.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Marble Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.marblecms.com/features/import\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://marblecms.mintlify.app/_mintlify/api/og/v2?division=Features\u0026amp;title=Importing+Content\u0026amp;description=Bring+existing+Markdown+and+MDX+files+into+Marble+as+draft+posts+using+the+queued+import+workflow%2C+with+a+syntax+compatibility+reference.\u0026amp;theme=69128c601f5a70e134653c59\u0026amp;signature=d892e1783f8b0b253317ab943dcccd0ebe799aef5042a51dc20289d1fb187d09\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Importing Content - Marble Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Bring existing Markdown and MDX files into Marble as draft posts using the queued import workflow, with a syntax compatibility reference.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://marblecms.mintlify.app/_mintlify/api/og/v2?division=Features\u0026amp;title=Importing+Content\u0026amp;description=Bring+existing+Markdown+and+MDX+files+into+Marble+as+draft+posts+using+the+queued+import+workflow%2C+with+a+syntax+compatibility+reference.\u0026amp;theme=69128c601f5a70e134653c59\u0026amp;signature=d892e1783f8b0b253317ab943dcccd0ebe799aef5042a51dc20289d1fb187d09\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/marblecms/pFFi95KPqs4H6Ncd/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Marble Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#584dff\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.marblecms.com/features/import\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/features/import.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.marblecms.com/#organization\",\"name\":\"Marble Documentation\",\"url\":\"https://docs.marblecms.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/marblecms/tz5RF6uEpnK3dZfR/logo/light.svg?fit=max\u0026auto=format\u0026n=tz5RF6uEpnK3dZfR\u0026q=85\u0026s=7531eadb6f8c6b2e211769689c54f124\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.marblecms.com#website\",\"name\":\"Marble Documentation\",\"url\":\"https://docs.marblecms.com\",\"publisher\":{\"@id\":\"https://docs.marblecms.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.marblecms.com/features/import#webpage\",\"url\":\"https://docs.marblecms.com/features/import\",\"name\":\"Importing Content\",\"description\":\"Bring existing Markdown and MDX files into Marble as draft posts using the queued import workflow, with a syntax compatibility reference.\",\"dateModified\":\"2026-10-06T20:56:47.806Z\",\"isPartOf\":{\"@id\":\"https://docs.marblecms.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.marblecms.com/features/import#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.marblecms.com/features/import#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://docs.marblecms.com/features/editor\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Importing Content\",\"item\":\"https://docs.marblecms.com/features/import\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.marblecms.com/features/import#article\",\"headline\":\"Importing Content\",\"name\":\"Importing Content\",\"description\":\"Bring existing Markdown and MDX files into Marble as draft posts using the queued import workflow, with a syntax compatibility reference.\",\"url\":\"https://docs.marblecms.com/features/import\",\"mainEntityOfPage\":{\"@id\":\"https://docs.marblecms.com/features/import#webpage\"},\"dateModified\":\"2026-10-06T20:56:47.806Z\",\"publisher\":{\"@id\":\"https://docs.marblecms.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.marblecms.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Marble Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Marble Documentation","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://marblecms.com/blog"},{"anchor":"Community","icon":"discord","href":"https://discord.marblecms.com/"}]},"tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Documentation","sidebarTitle":"Introduction","href":"/introduction"},{"title":"Set Up Your Workspace","sidebarTitle":"Quickstart","href":"/quickstart"}]},{"group":"Concepts","pages":[{"title":"What Is a Headless CMS?","sidebarTitle":"Headless CMS","href":"/concepts/headless-cms"},{"title":"Workspaces \u0026 Teams","sidebarTitle":"Workspaces \u0026 Teams","href":"/concepts/workspaces"},{"title":"Content Model","href":"/concepts/content-model"}]},{"group":"Features","pages":[{"title":"Marble's Editor","sidebarTitle":"Editor","href":"/features/editor"},{"title":"Custom Fields","href":"/features/custom-fields"},{"title":"Media \u0026 Image Hosting","sidebarTitle":"Media","href":"/features/media"},{"title":"Webhooks","description":"Configure Marble webhooks to revalidate static sites, automate workflows, verify signatures, and inspect deliveries when content changes.","href":"/features/webhooks"},{"title":"Importing Content","sidebarTitle":"Import","href":"/features/import"},{"title":"Exporting Content","sidebarTitle":"Export","description":"Export your workspace as a downloadable JSON archive containing posts, categories, tags, authors, media metadata, custom fields, and a manifest.","href":"/features/export"}]},{"group":"Integrations","pages":[{"title":"Next.js Integration","sidebarTitle":"Next.js","href":"/integrations/nextjs"},{"title":"Astro Integration","sidebarTitle":"Astro","href":"/integrations/astro"},{"title":"TanStack Start Integration","sidebarTitle":"TanStack Start","href":"/integrations/tanstack"},{"title":"Framer Integration","sidebarTitle":"Framer","href":"/integrations/framer"}]},{"group":"Tools","pages":[{"title":"Marble TypeScript SDK","sidebarTitle":"TypeScript SDK","href":"/tools/sdk"},{"title":"Marble MCP Server","sidebarTitle":"MCP Server","href":"/tools/mcp"}]},{"group":"Recipes","pages":[{"title":"Reading Time","href":"/recipes/reading-time"},{"title":"Syntax Highlighting","href":"/recipes/code-highlighting"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api/introduction"}]}]},"title":"Importing Content - Marble Documentation","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":[],"chunks":[]}