MDify Pro is a free, open-source document to Markdown converter. It turns PDF, Word, Excel, PowerPoint, HTML, CSV, JSON, and image files into clean, RAG-ready Markdown, then hands it back with word, character, and token counts plus a quality score.
Open the live app → · Why use it · Deploy your own · Roadmap
- The problem MDify Pro solves
- What it does
- Supported formats
- How it works
- Processing profiles
- Public API
- Run it locally
- Architecture
- Tech stack
- Roadmap
- Contributing
- FAQ
- License
Feed a raw PDF straight into GPT-4 and you pay for thousands of tokens the model never needed. Fonts, layout tags, binary junk, invisible table markup. The model burns context budget parsing all of it before it answers your question.
Markdown is the format large language models read best. Headings, lists, tables, plain paragraphs. That is what every major model trained on. Convert the document first and the same content costs 60 to 70 percent fewer tokens.
One team we know cut a monthly LLM bill from $340 to $98 on a set of SEC filings by converting to Markdown before ingestion. Same retrieval quality, a third of the cost. Those token numbers are estimates and shift with the document and the model tokenizer, so treat them as a direction, not a promise.
If you build RAG pipelines, ship docs-as-code, or move a pile of contracts into a searchable knowledge base, this is the boring step that saves you money on every run.
- Convert 20+ file types to Markdown in seconds. Drag and drop, or click to browse.
- Batch convert up to 10 files at once and download the results as one
.zip. - RAG-ready output. Pick a profile that strips boilerplate, normalizes headings, and drops repeated page headers and footers.
- Token and quality read-out. Every conversion returns word, character, and estimated-token counts, a token-reduction figure, and a 0 to 100 Markdown quality score.
- Scanned-PDF warning. If a PDF is mostly images with little real text, MDify Pro says so instead of handing you broken Markdown.
- No account, no watermark, no paywall. Convert and leave.
- A public API for the same conversion from a script or CI job.
Every format below is tested, not just claimed.
| Format | Extensions | Tables | What you get |
|---|---|---|---|
.pdf |
Text extraction. Scanned/image PDFs get a low-structure warning | ||
| Word | .docx |
✅ | Strong structure preservation |
| PowerPoint | .pptx |
✅ | Slides and speaker notes |
| Excel | .xlsx .xls |
✅ | Rows become Markdown tables |
| HTML | .html .htm |
✅ | HTML to structured Markdown |
| CSV / TSV | .csv .tsv |
✅ | Tabular Markdown |
| JSON / XML | .json .xml |
— | Structured-data conversion |
| Text / Markdown | .txt .md |
— | Normalize, clean, analyze |
| Images | .png .jpg .webp … |
— | Metadata today, OCR text coming (see Roadmap) |
Drop your files. Pick a profile. Hit convert. The Markdown shows up with syntax highlighting, and you copy it, download the .md, or grab the whole batch as a zip. That is the whole loop.
Behind the button, each file runs through a small, testable pipeline: validate the upload, sniff the real file type by its bytes, convert with MarkItDown, normalize and optimize the Markdown, then analyze it for stats and quality. No step trusts the one before it.
One document, four ways out. Choose based on what reads the result next: a person, or a model.
| Profile | What it does |
|---|---|
| Standard | Faithful conversion. Whitespace normalized, nothing removed. |
| Clean | Strips leftover HTML artifacts and tightens whitespace. |
| Compact | Clean, plus drops images and repeated header/footer lines to cut tokens. Tables stay. |
| RAG-ready | Normalized heading hierarchy, boilerplate removed, HTML stripped, tables kept. Built for LLM ingestion. |
Convert from a script, a CI job, or a RAG pipeline. Set an API key on the backend, then:
curl -X POST https://mdify-pro-app.vercel.app/api/v1/conversions \
-H "X-API-Key: <your-key>" \
-F "file=@report.pdf" \
-F "profile=rag_ready"You get back the same JSON the web app uses: the Markdown, the stats, the quality block, and a token_reduction_pct. Auth also accepts Authorization: Bearer <key>. The web app itself stays key-free. Interactive docs live at /docs on the backend.
You need Python 3.11+ and Node 20+. Two terminals.
Backend
cd backend
python -m venv .venv && . .venv/Scripts/activate # macOS/Linux: source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000Frontend
cd frontend
npm install
cp .env.example .env.local # set BACKEND_URL=http://localhost:8000
npm run dev # http://localhost:3000That is it. Open localhost:3000 and convert something. Deploying to Vercel and Render is written up step by step in DEPLOYMENT.md.
MDify Pro ships as two separate apps. The frontend on Vercel talks to the backend on Render over HTTPS. Neither depends on the other's internals, so you can redeploy one without touching the other.
The frontend follows an MVVM split. Views render, view-models hold state and orchestration, and a single API client is the only code that touches the network. The backend is layered: API routes call a conversion service, which runs the pipeline through a converter adapter. MarkItDown sits behind that adapter, so a specialized engine (OCR, for example) can slot in later without a rewrite.
- Frontend: Next.js 14, TypeScript, Tailwind CSS, a dual-theme Liquid Glass interface with real edge refraction on desktop.
- Backend: FastAPI, Python 3.11, layered pipeline, per-IP and per-key rate limiting, magic-byte upload validation.
- Engine: Microsoft MarkItDown.
- Hosting: Vercel (frontend) and Render (backend), deployable on free tiers.
MDify Pro grows one deployable phase at a time. Shipped so far: the converter, processing profiles, the quality engine, token intelligence, batch and zip export, and the public API. Next up: OCR for images, user accounts with saved history, and a durable job platform for async and large-file work.
The full plan, dependency order, and free-tier cost strategy live in RoadMap.docx.
Issues and pull requests are welcome. New format extractors, quality checks, bug fixes, and docs all help. Run ruff check . and pytest in backend, and npm run typecheck and npm run build in frontend before you open a PR. CI runs the same checks.
If MDify Pro saved you tokens, a star on the repo helps other people find it.
What is the best way to convert a PDF to Markdown for a RAG pipeline? Convert with a text-first tool, then clean the output before you embed it. MDify Pro does both: it extracts the text and, with the RAG-ready profile, normalizes headings and strips boilerplate so your chunks stay clean.
Does MDify Pro do OCR on scanned PDFs? Not yet. A scanned or image-only PDF gets a low-structure warning instead of broken Markdown. OCR for images is on the roadmap, images first.
Is it really free? Yes. No account, no watermark, no pricing page. The code is MIT-licensed and you can self-host it on free Vercel and Render tiers.
How accurate is the token count? It is an estimate, around four characters per token, labelled as such in the app. Real counts depend on the model's tokenizer, so use the number to compare before and after, not as an invoice.
What is MDify Pro built on? A Next.js and TypeScript frontend, a FastAPI backend, and Microsoft's MarkItDown as the conversion engine.
MIT. See LICENSE. Built by DevBehindYou, powered by Microsoft MarkItDown.


