Markdown Converter Guide
Turn PDF, DOCX, PPTX, Excel, CSV, and HTML documents into clean Markdown without ever uploading them. Everything runs in your browser.
Quick Navigation
1. Overview
Markdown Converter reads PDF, DOCX, PPTX, Excel (XLSX/XLS), CSV, and HTML files directly in your browser and turns them into clean Markdown. PDF uses pdf.js (or the high-accuracy engines), DOCX uses mammoth.js, spreadsheets use SheetJS, PPTX is read with JSZip, and HTML is converted with a built-in renderer — all translated into Markdown headings, lists, links, and tables.
The tool is built for the same workflows the rest of ASD123.ai targets: feeding documents into local AI chats, preparing snippets for the Optimizer or Anonymizer, or simply archiving content in a portable text format.
Best effort, not perfect: PDFs do not always carry semantic structure. Headings are detected by font size, so unusual layouts may need a quick review after conversion.
2. Basic Workflow
Pick a document
Drag one or more files into the drop area, or use the Choose file button — there is no format filter. Multiple files are converted in sequence and combined into a single Markdown document with one # filename section per file. PDF, DOCX, PPTX, Excel/CSV, HTML, and plain-text files are converted; image files (PNG, JPG, WebP, BMP) are read with OCR automatically. Each format has a single fixed conversion path, so the only choice you ever make is the parsing engine for PDFs — for any other file that selector is disabled. Size limits are generous and exist only to keep your browser tab responsive: up to 75 MB for PDFs and images, and up to 250 MB for documents and text files (only their text is read, so embedded media never counts).
Adjust the options
Toggle heading detection, formatting, tables, links, and whitespace before or after conversion. Changing an option re-runs the conversion automatically.
Review and export
Switch between the Raw Markdown and Preview tabs, then copy to clipboard, download a .md file, or send the result straight to the Text to Speech tool with the To Speech button. Preview links are protocol-checked; only http(s) and mailto links are clickable.
3. Supported Formats
Read with pdf.js. Text-based PDFs work best. Headings are inferred from larger font sizes, bulleted and numbered lists are recognized by common markers.
DOCX
Parsed with mammoth.js. Word styles such as Title, Heading 1–6, and Quote are mapped to the matching Markdown elements. Bold, italic, links, lists, and tables are preserved.
PowerPoint (PPTX)
Read with JSZip. Each slide becomes its own section (## Slide N) with its text as bullet points, in slide order, plus the slide's speaker notes as a quoted block when present. Text only — images and animations are not included.
Excel & CSV (XLSX, XLS, CSV)
Parsed with SheetJS. Each worksheet becomes a Markdown table; multi-sheet workbooks get a ## Sheet name heading per sheet. Cells use their formatted value, so dates appear as dates (not Excel serial numbers). CSV is read as UTF-8.
HTML
Converted with a built-in renderer. Scripts, styles, and page chrome are stripped; headings, lists, links, and tables become clean Markdown. Prefers <main>/<article> content when present. The file is parsed in an inert document — remote images or tracking pixels inside the HTML are never fetched.
Plain text & other files
Any other file you pick is read as UTF-8 text and passed through unchanged — indentation and whitespace are preserved, so source code stays valid (Markdown, TXT, JSON, code, logs, and similar). Files that are actually binary are detected and politely rejected.
Images & scanned PDFs (OCR engine)
Pick a PNG, JPG, WebP, or BMP image and it is read with OCR automatically — no engine to choose. For scanned PDFs with no text layer, select the OCR engine in the PDF parsing engine selector. Recognition runs locally with PP-OCRv6 and works on horizontal text — rotated or heavily skewed scans should be straightened first. See the engines section below.
4. Parsing Engines
The PDF parsing engine selector applies to PDFs only — for every other format the conversion path is fixed, so the selector is disabled. It offers four choices. The default EdgeParse is a Rust engine compiled to WebAssembly that handles multi-column pages and tables well and emits Markdown directly. LiteParse is a second high-accuracy WebAssembly engine, Standard (pdf.js) is the lightest option with no extra download, and OCR reads scanned PDFs that have no text layer (standalone images are sent to OCR automatically). Every engine loads locally the first time you pick it; everything runs entirely in your browser.
High accuracy · EdgeParse (default)
A Rust engine that emits Markdown directly, with XY-cut reading order and native GitHub-flavoured tables. Strong on borderless and complex tables, and the recommended default for most documents. One-time ~2.7 MB module.
High accuracy · LiteParse
Exposes the exact position and font size of every line. The converter groups text into columns by real x-coordinates, so a left column is read fully before the right one. One-time ~4 MB module.
Standard · pdf.js
The built-in reader. The fastest option with no extra download, fine for simple single-column PDFs. Headings are detected from font sizes.
OCR · PP-OCRv6
Optical character recognition for scanned PDFs and image files (PNG, JPG, WebP, BMP) that have no selectable text. Runs the PP-OCRv6 Tiny model on onnxruntime-web. One-time ~18 MB download on first use.
Which one to pick
EdgeParse is the default and best for table-heavy documents; try LiteParse for multi-column text or if a specific PDF renders better there; Standard is the quickest for plain text; choose OCR for scans and images. If a high-accuracy engine ever fails to load or parse, the converter quietly falls back to pdf.js so you always get a result.
Always local: Every engine runs entirely in your browser — your file and the WebAssembly modules never leave your device. EdgeParse, LiteParse, and Standard apply to PDF only; OCR also handles image files; DOCX always uses mammoth.js. On some PDFs that use embedded subset fonts, extracted words can show extra spaces between letters (for example inside table cells); this comes from how the font stores character widths, so switching engines, using OCR, or cleaning up in the Raw view is the best workaround.
Engines & versions
| Engine | Used for | Version | Source |
|---|---|---|---|
| EdgeParse (default) | PDF — high accuracy | 0.2.5 | GitHub |
| LiteParse | PDF — high accuracy | 2.0.8 | GitHub |
| pdf.js | PDF — standard | 6.0.227 | GitHub |
| PP-OCRv6 Tiny | Scanned PDFs & images — OCR | v6 (onnxruntime-web 1.26) | GitHub |
| mammoth.js | DOCX | 1.12.0 | GitHub |
| SheetJS (xlsx) | XLSX, XLS, CSV | 0.20.3 | GitHub |
| JSZip | PPTX (reads slide XML) | 3.10.1 | GitHub |
Engines are self-hosted at pinned versions and updated manually after testing — nothing is fetched from third-party CDNs at runtime.
5. Conversion Options
PDF heading detection
Auto groups text by font size and promotes the larger lines to Markdown headings. Off emits every line as a regular paragraph.
Preserve bold & italic
DOCX only. Turn this off if you want plain text without inline emphasis. PDF emphasis is not preserved because pdf.js does not expose reliable styling info.
Convert tables
DOCX tables are rendered as Markdown pipe tables. Complex layouts (merged cells, nested tables) may need a manual touch-up.
Keep hyperlinks
When enabled, link text appears as [text](url). Turning it off keeps only the link text and drops the URL.
Collapse extra whitespace
Removes repeated blank lines and stray spaces left behind by complex layouts. Most documents benefit from leaving this on.
6. Output and Export
The output panel offers two views. Raw Markdown shows the plain text exactly as it will be copied or downloaded. Preview renders the Markdown so you can sanity-check headings, lists, and tables before exporting.
- Copy places the Markdown on your clipboard.
- Download .md saves the Markdown next to your other files. The download name is derived from the original file name.
- Switching options after a conversion re-runs the conversion on the same file without re-uploading.
7. Limits and Tips
- Scanned, image-only, or password-protected PDFs cannot be converted. Run OCR first or use a text-based copy.
- Multi-column PDFs can interleave columns in the standard engine. Switch the PDF parsing engine to LiteParse or EdgeParse for proper column ordering, or copy from the Raw view and clean up manually.
- Complex DOCX templates with custom styles may fall back to plain paragraphs. Map them to standard Heading styles for the best result.
- For very large documents, split them first or paste sections instead of running the entire file through at once.
- Markdown rendered in the Preview is sanitized for display only. Use the Raw view if you need the exact text for downstream tools.
8. Privacy
PDFs and DOCX files are loaded into memory and parsed locally by pdf.js, mammoth.js, and — when selected — the LiteParse or EdgeParse WebAssembly engines. ASD123.ai does not receive your document, the extracted text, or the generated Markdown.
Nothing is stored in localStorage or IndexedDB by this tool. Closing the tab discards the loaded document and the Markdown output. Downloads and clipboard actions stay on your device.
9. Use Cases
Feed local AI chats
Convert a report to Markdown, then drop it into Local AI Chat or any Ollama or LM Studio session for grounded answers.
Prepare snippets for the Optimizer
Pull text out of a PDF, clean it with the Optimizer, and ship it into your CMS or wiki without leaving your browser.
Anonymize before sharing
Turn a DOCX into Markdown, then run it through the Anonymizer to redact PII before pasting into a remote model.
Estimate context first
Pair the converter with the Context Estimator to check whether a long document fits a 16K, 32K, or 128K window before sending it to a model.