{"slug":"microsoft-markitdown","kind":"claim","status":"published","tier":"claim","title":"markitdown: does it really turn any document into clean text?","category":"data-rag/doc-parsers","topic":"coding-agents","repos":[{"repo":"microsoft/markitdown","stars":190787,"license":"MIT"}],"claims":[{"claim":"One command turns any document (Office, PDF, HTML, more) into Markdown your agent can read","source":"https://x.com/victor_explore/status/2111462082499482057"}],"plan":"Build 9 fixture files (DOCX, PPTX, XLSX, PDF, HTML, CSV, JSON, EPUB, and a scanned image-only PDF), each carrying 6 known canary sentences and a known 3x4 table. Convert each and count how many canaries and table cells survive, and whether a real Markdown table comes out.","who_its_for":"Anyone feeding documents to an LLM or a RAG pipeline.","explainer":"A Microsoft tool that converts Office files, PDFs, HTML, CSV, JSON, EPUB and more into Markdown so an agent can read them. Rocky checks what actually survives the conversion, including a scanned page with no text layer.","measure":["How many known sentences survive each format","Whether table cells come through","Whether a real Markdown table is produced","What happens to a scanned, image-only PDF"],"notes_so_far":["Method: throwaway python:3.12 container on Rocky's test box, markitdown installed from the pinned commit 4cc9fa1 (v0.1.8), no keys. Rocky built the fixtures so the right answers are known in advance.","First run was on the box; the same test is queued in the sandbox to confirm."],"sneak_peek":["Every one of the 6 canary sentences survived in DOCX, PPTX, XLSX, PDF, HTML, JSON and EPUB.","All 16 table cells survived in CSV, DOCX, PPTX, XLSX, HTML, PDF and JSON, and CSV, DOCX, PPTX, XLSX and HTML produced real Markdown tables.","The scanned, image-only PDF returned 1 character: 0 of 6 sentences and 0 of 16 cells.","Each file took 0.5 to 0.7 seconds to convert."],"charts":[{"type":"strip","title":"Did the document convert? (first run)","note":"Green = converted with its text intact. Red = came back empty. The scanned PDF has no text layer, so a text extractor can't read it.","cells":[{"label":"DOCX","state":"pass","detail":"6/6 lines, table"},{"label":"PPTX","state":"pass","detail":"6/6 lines, table"},{"label":"XLSX","state":"pass","detail":"6/6 lines, table"},{"label":"PDF (text)","state":"pass","detail":"6/6 lines"},{"label":"HTML","state":"pass","detail":"6/6 lines, table"},{"label":"CSV","state":"pass","detail":"16/16 cells"},{"label":"JSON","state":"pass","detail":"6/6 lines"},{"label":"EPUB","state":"pass","detail":"6/6 lines"},{"label":"PDF (scanned)","state":"fail","detail":"0 chars, no text layer"}]},{"type":"bars","title":"Table cells recovered (of 16)","unit":"cells","note":"A known 3x4 table (header + 3 rows = 16 cells) embedded in each format, then counted in the Markdown.","groups":[{"label":"Formats with a table","bars":[{"name":"CSV","value":16,"verdict":"real"},{"name":"DOCX","value":16,"verdict":"real"},{"name":"PPTX","value":16,"verdict":"real"},{"name":"XLSX","value":16,"verdict":"real"},{"name":"HTML","value":16,"verdict":"real"},{"name":"PDF (text)","value":16,"verdict":"real"},{"name":"PDF (scanned)","value":0,"verdict":"vapor"}]}]}],"gallery":[],"results":{"jobs":[{"id":13,"title":"markitdown: convert 9 known docs (DOCX/PPTX/XLSX/PDF/HTML/CSV/JSON/EPUB/scanned) and count what survived","kind":"claim","status":"done","started":"2026-10-18T04:26:40Z","finished":"2026-10-18T04:29:26Z","wall_seconds":166,"install_friction":null,"artifacts":["raw/microsoft-markitdown/job-13/fixtures/pdf-preview.png","raw/microsoft-markitdown/job-13/fixtures/scanned-preview.png","raw/microsoft-markitdown/job-13/md/csv.md","raw/microsoft-markitdown/job-13/md/docx.md","raw/microsoft-markitdown/job-13/md/epub.md","raw/microsoft-markitdown/job-13/md/html.md","raw/microsoft-markitdown/job-13/md/json.md","raw/microsoft-markitdown/job-13/md/pdf.md","raw/microsoft-markitdown/job-13/md/pptx.md","raw/microsoft-markitdown/job-13/md/scanned-pdf.md","raw/microsoft-markitdown/job-13/md/xlsx.md"]}],"smoke_only":false,"ingested":"2026-10-18T18:34:11Z"},"last_test_finished":"2026-10-18T04:29:26Z","score":{"slug":"microsoft-markitdown","version":1,"subscores":{"claim":89,"performance":100,"install":100,"reliability":60,"docs":null,"safety":null},"weights":{"claim":35,"performance":25,"install":15,"reliability":15,"docs":5,"safety":5},"score":89,"grade":"A-","confidence":"medium","basis":{"claim":"8/9 formats intact; scanned PDF 0/6","performance":"0.5-0.7 s per file","install":"pip install from pinned commit, 146 s, 0 fixes","reliability":"single run"},"tags":["doc-parser","rag","no-ocr"],"keywords":["markdown conversion","pdf to markdown","docx","rag"]},"verdict":"REAL","verdict_why":"8 of 9 formats came through with every test sentence and table cell. The one miss was a scanned PDF with no text layer, which returned 1 character.","published_ct":"Oct 18, 2026","verdict_caveats":["\"Any document\" means documents that contain text. Scans and photos come back empty unless you add an OCR or LLM plugin."]}