Free tools Windows power users keep installed
One-click scans. No signup required.
iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
The 2026-09-23 experiment log reports that MarkItDown produced useful Markdown from several text-bearing files, but it also returned almost empty output for three scanned PDFs while exiting successfully. The log additionally records a successful MCP STDIO exchange for listing and calling convert_to_markdown. These are observations from one run—not a general benchmark—and its author said manual review was still pending.
What this experiment covers
Jeremy Xiao’s log describes one local CLI run on macOS (Darwin 26.5.1, Apple Silicon), using uv 0.10.8 and Python 3.12. It records MarkItDown 0.1.8 and markitdown-mcp 0.0.1a7, tested against 14 public fixtures in samples/quality-gallery/files/. The conversion path used no LLM client, plugins, or Azure services. The author also reports that resolving markitdown[all] without prereleases initially selected 0.1.5, while allowing prereleases enabled installation of 0.1.8; that is an installation experience from this environment, not a guarantee about package resolution today. Read the experiment log.
What the 14 fixtures produced
The log reports useful structure from many text-bearing inputs: headings and paragraphs from a release-overview PDF, a pipeline table from a Q3 results PDF, tables from a library-note PDF and a DOCX, sheet headings and rows from an XLSX, text from a PPTX, clean HTML, chapter headings from an EPUB, and concatenated cell source from a notebook. The output was not uniformly faithful: the author noted blank spacer columns, an empty table-header cell, an Unnamed: 1 spreadsheet header, and lost presentation layout. The log states these observations, but the planned manual review was pending.
Scanned PDFs: exit success did not mean extraction success
For each of three scanned PDFs, the log records exit code 0 but only a single newline in the output. Two scanned PNGs yielded image-size metadata only. This is the most consequential practical result: a process can finish successfully without producing useful document content. Check the converted text itself—such as whether it has non-whitespace content and expected passages—rather than treating the exit status as proof of extraction.
#1 Best Overall
If a PDF is an image scan, use an OCR-capable conversion path when text extraction is required. This experiment did not test MarkItDown’s OCR plugin or Azure services, so it does not establish their accuracy or behavior. The official project describes MarkItDown as a Python utility for converting files to Markdown and documents optional format-specific dependencies; see its README and setup guidance.
What the raw MCP STDIO handshake showed
The log summarizes the message sequence as initialize, notifications/initialized, tools/list, then tools/call. It says initialization returned server name markitdown, an empty version string, and protocol version 2025-06-18. The tool listing contained one tool, convert_to_markdown, whose required parameter was a string named uri. A call with a local PDF file URI reportedly returned isError: false and Markdown text whose opening lines matched the CLI output.
Rank #2
That is the author’s summary of the exchange; the excerpt does not establish an independently captured or validated transcript. The official MarkItDown-MCP README documents a lightweight server exposing convert_to_markdown(uri) for HTTP, file, and data URIs, with STDIO, Streamable HTTP, and SSE transports. Its STDIO examples invoke markitdown-mcp. The MCP Python SDK documentation likewise describes stdio, Streamable HTTP, and SSE as standard transports.
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Fix the driver behind crashes, sound loss and screen glitches3Clear out junk files and repair common Windows errorsChoose CLI/Python or MCP based on how you need to invoke conversion
| Approach | What it does | Useful when | Considerations |
|---|---|---|---|
| Direct CLI or Python library | Runs conversion directly through the local command-line or Python interface. | You are building a local script or application that can call the library directly. | Install the dependencies for the formats you need; output quality depends on source content and format. |
| MCP server | Exposes convert_to_markdown(uri) for an MCP host to call. |
Your application needs conversion exposed as an MCP tool. | Server deployment adds a process and access boundary to manage; the reported experiment tested STDIO only. |
These interfaces solve different integration needs; the experiment does not establish that one produces more accurate Markdown than the other. Its local PDF call through MCP began with the same Markdown lines as the CLI output. For either route, consider whether the file contains selectable text or requires OCR, whether table or slide layout must be preserved, and which optional format dependencies are installed.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Security boundaries and untested areas
The official MarkItDown project warns that conversion performs I/O with the current process’s privileges. For server-side or untrusted inputs, it recommends validating and restricting inputs and using the narrowest conversion method that meets the need. The MCP README says the server has no authentication, runs with its process privileges, and defaults HTTP transports to localhost; it cautions against binding beyond localhost without understanding the security implications. See the project’s security and usage guidance and the MCP server documentation.
The logged STDIO run does not demonstrate remote deployment, authentication, Docker isolation, or desktop-client integration. The author explicitly reports that Claude Desktop, Cursor, and Cline GUI configurations were unavailable and untested; the Docker image was not built; and LLM image descriptions, markitdown-ocr, Azure Document Intelligence, and Azure Content Understanding were not tested because credentials were unavailable. Setup examples for those areas came from documentation, not this run.
Quick Recap
Best Value
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.

