DocLift - Convert Documents to Markdown
Convert DOCX, PDF, PPTX, XLSX, HTML and more to Markdown with Microsoft MarkItDown. Right-click a file in the Explorer and get a .md file next to it.
Pre-release 0.1.0. DocLift does one thing today: it converts the files you select. More features will follow.
Requirements
- VS Code 1.141 or later.
- Python 3.10 or later on your machine. DocLift looks for the
py launcher (Windows), python3 and python. If Python is installed in another place, or you have several versions, set the path of the interpreter in the setting doclift.python.interpreterPath (in your User settings).
- An internet connection on first use and for each new format, to download the Python packages (see "First use and downloads" below).
Without Python 3.10 or later, DocLift shows a message that tells you to install it or to set doclift.python.interpreterPath.
Get started
- Open a folder that contains a document, for example
report.docx.
- Right-click the file in the Explorer and choose Convert to Markdown.
- Wait for the progress notification.
report.md appears next to report.docx.
To convert several files, select them all and use the same menu item. Files are converted one at a time, and you can cancel from the progress notification. Files that were already written stay.
If report.md already exists, DocLift asks before it replaces it: Overwrite, Skip, Overwrite all or Cancel.
| Format |
Extensions |
| Word |
.docx |
| PowerPoint |
.pptx |
| Excel |
.xlsx, .xls |
| PDF |
.pdf |
| Web |
.html, .htm |
| Data |
.csv, .json, .xml |
| E-book |
.epub |
| Outlook message |
.msg |
| Archive |
.zip |
The menu item appears only for these extensions. Folders are skipped.
First use and downloads
DocLift keeps its own Python environment, so it never changes your other Python projects.
- First conversion: DocLift creates the environment and downloads MarkItDown from PyPI. This can take a minute, and a progress notification shows the steps.
- Format support: DOCX, PDF, PPTX, XLSX, XLS and MSG need extra packages. DocLift asks before it downloads them, for example "DocLift needs to download support for DOCX and PDF. Install now?". Choose Cancel to download nothing.
- Later conversions use the environment that already exists. They need the internet only for a format that was not downloaded yet.
- Updates: when an update of DocLift changes the MarkItDown version, or your Python version changes, DocLift rebuilds its environment and downloads MarkItDown again.
Settings
| Setting |
Purpose |
doclift.python.interpreterPath |
Path to a Python 3.10+ interpreter that DocLift uses to create its environment. Leave it empty to search automatically. Set it in your User settings: DocLift ignores a value in workspace settings. |
Limits
- The quality of the Markdown depends on MarkItDown. Complex layouts, such as multi-column pages, can lose structure.
- Scanned PDFs (pictures of text) give little or no text, because DocLift does not run OCR.
- A file that takes longer than 120 seconds is stopped, and DocLift goes on with the next file.
- DocLift also works in Restricted Mode, on the files you select.
- When a conversion fails, the message tells you what to do. Details are in the DocLift Output channel.
Privacy
- Conversion runs on your computer. DocLift does not upload your documents.
- DocLift sends no telemetry.
- The DocLift log contains no document content and no document file names.
- MarkItDown plugins stay disabled.
- DocLift uses the network only to download Python packages from PyPI (or the package index that your pip or uv is set up to use): MarkItDown when DocLift creates or rebuilds its environment (first conversion, or after an update), and format support only after you agree in a dialog.
Licence
DocLift is free of charge. You may install and use it from the Visual Studio Marketplace. No other right is granted. DocLift is not open source. See the LICENSE file in the extension.
Third-party software
DocLift installs MarkItDown (MIT licence) and its dependencies from PyPI into its own environment. These packages stay under their own licences.