markitdown — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited markitdown (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MarkItDown is a Python utility that converts various file formats into Markdown format, optimized for use with large language models and text analysis pipelines. It preserves document structure (headings, lists, tables, hyperlinks) while producing clean, token-efficient Markdown output.
Use this skill when users request:
Convert Office documents and PDFs to Markdown while preserving structure.
Supported formats:
Basic usage:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("document.pdf")
print(result.text_content)Command-line:
markitdown document.pdf -o output.mdSee references/document_conversion.md for detailed documentation on document-specific features.
Extract text from images using OCR and transcribe audio files to text.
Supported formats:
Image with OCR:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("image.jpg")
print(result.text_content) # Includes EXIF metadata and OCR textAudio transcription:
result = md.convert("audio.wav")
print(result.text_content) # Transcribed speechSee references/media_processing.md for advanced media handling options.
Convert web-based content and e-books to Markdown.
Supported formats:
YouTube transcript:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("https://youtube.com/watch?v=VIDEO_ID")
print(result.text_content)See references/web_content.md for web extraction details.
Convert structured data formats to readable Markdown tables.
Supported formats:
CSV to Markdown table:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("data.csv")
print(result.text_content) # Formatted as Markdown tableSee references/structured_data.md for format-specific options.
Enhance conversion quality with AI-powered features.
Azure Document Intelligence: For enhanced PDF processing with better table extraction and layout analysis:
from markitdown import MarkItDown
md = MarkItDown(docintel_endpoint="<endpoint>", docintel_key="<key>")
result = md.convert("complex.pdf")LLM-Powered Image Descriptions: Generate detailed image descriptions using GPT-4o:
from markitdown import MarkItDown
from openai import OpenAI
client = OpenAI()
md = MarkItDown(llm_client=client, llm_model="gpt-4o")
result = md.convert("presentation.pptx") # Images described with LLMSee references/advanced_integrations.md for integration details.
Process multiple files or entire ZIP archives at once.
ZIP file processing:
from markitdown import MarkItDown
md = MarkItDown()
result = md.convert("archive.zip")
print(result.text_content) # All files converted and concatenatedBatch script: Use the provided batch processing script for directory conversion:
python scripts/batch_convert.py /path/to/documents /path/to/outputSee scripts/batch_convert.py for implementation details.
Full installation (all features):
pip install 'markitdown[all]'Modular installation (specific features):
pip install 'markitdown[pdf]' # PDF support
pip install 'markitdown[docx]' # Word support
pip install 'markitdown[pptx]' # PowerPoint support
pip install 'markitdown[xlsx]' # Excel support
pip install 'markitdown[audio]' # Audio transcription
pip install 'markitdown[youtube]' # YouTube transcriptsRequirements:
MarkItDown produces clean, token-efficient Markdown optimized for LLM consumption:
Preparing documents for RAG:
from markitdown import MarkItDown
md = MarkItDown()
# Convert knowledge base documents
docs = ["manual.pdf", "guide.docx", "faq.html"]
markdown_content = []
for doc in docs:
result = md.convert(doc)
markdown_content.append(result.text_content)
# Now ready for embedding and indexingDocument analysis pipeline:
# Convert all PDFs in directory
for file in documents/*.pdf; do
markitdown "$file" -o "markdown/$(basename "$file" .pdf).md"
doneMarkItDown supports extensible plugins for custom conversion logic. Plugins are disabled by default for security:
from markitdown import MarkItDown
# Enable plugins if needed
md = MarkItDown(enable_plugins=True)This skill includes comprehensive reference documentation for each capability:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.