Mark It Down
Any file to Markdown, no API key required
- markdown
This is the flagship node of ComfyUI-MarkItDown, and the name is the whole pitch: you give it a file path, it gives you Markdown text. One input, one output, no model downloads, no API key, no GPU. It's a thin ComfyUI wrapper around Microsoft's open-source markitdown library, and it's the node you reach for when your workflow needs to read a document instead of generate an image.
Why you'd bother
ComfyUI is an image-and-video machine, but the text side shows up more than you'd think. Maybe you're building a workflow that feeds a report, a spec, or a slide deck into an LLM node for summarization. Maybe you're pulling text out of a PDF you don't want to open in a reader. Markdown is the lingua franca for that - clean, LLM-friendly, no formatting cruft. Drop this node in, paste an absolute path, and the markdown string it outputs is ready to wire into any text-LLM or save-text node you already use.
How it works
The node is embarrassingly thin, and that's a compliment. It calls MarkItDown().convert(source_file) and returns the result's text_content as a STRING. What makes the generic node special is what it doesn't do: unlike its sibling nodes in this pack, it has no extension whitelist, so anything markitdown understands goes through. That means PDFs, PPTX, XLSX, DOCX, HTML, CSV/JSON, IPYNB notebooks, WAV/MP3 audio, and ZIP files of all of the above. It can even take an http:// URL as the "file" and fetch it - markitdown handles URLs natively, and this node passes the string straight through.
The inputs and outputs that matter
There's exactly one input, source_file - a plain STRING field. No file browser, no drag-and-drop; you type or paste a filesystem path. Absolute paths are your friend here, because relative ones resolve against wherever ComfyUI was launched from, which is rarely where your file actually lives.
The single output is markdown (STRING). That's it. This pack ships no text viewer, so wire the string into a "Show Text" node, a save-to-file node, or an LLM context node from whichever utility pack you already run.
Installing it
ComfyUI Manager, search "ComfyUI MarkItDown", install, restart. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/ciga2011/ComfyUI-MarkItDown
Then restart ComfyUI. The requirements.txt pins markitdown==0.0.1a3 plus openai and python-dotenv, and the old markitdown alpha drags along its converters (mammoth, openpyxl, pandas, python-pptx, pdfminer-six, markdownify). All pure Python, no model files, no torch extras - this is one of the lightest installs you'll do.
Gotchas
The big ones: it's a typed path, not a file picker - paste a bad path and you get an error, not a dialog. Scanned PDFs come out as empty text because the bundled PDF converter is text extraction only, no OCR. And the pack pins markitdown to an early 2024 alpha; it works because it's pinned, but leave the version alone - the pack's Image2Markdown calls the old llm_prompt= API, and newer markitdown changed it. Finally, a reminder that applies to every custom node: you're running this pack's Python on your machine, so install it via Manager from the known repo and keep an eye on updates. This one is a modest little wrapper and looks clean, but the habit is the point.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| source_file | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| markdown | STRING | — |