hammerdown
hammerdown converts PDF, Word, Excel, PowerPoint, and plain-text documents to Markdown. PDF conversion uses PyMuPDF and PyMuPDF4LLM; source images are extracted into the output folder and Markdown image references are generated.
Table of Contents
Installation
Recommended: Python package (pip)
If Python (3.10+) is installed on your system, installing via pip is the recommended method:
pip install hammerdown
Or after cloning the repository locally:
git clone https://github.com/sergeypugin/hammerdown.git
cd hammerdown
pip install .
Direct Download (Standalone binaries)
If you do not have Python installed, precompiled standalone binaries are available on the GitHub Releases page or you can download directly from the links below:
| OS | Download |
|---|---|
| Windows | |
| Linux | |
| macOS |
On Linux and macOS, make the downloaded binary executable before running:
chmod +x ./hammerdown-linux-x64
./hammerdown-linux-x64 --version
Context menu integration
Run --install to register file manager integrations, or --uninstall to remove them:
hammerdown --install
What happens on each platform:
- windows: moves binary or script into
%LOCALAPPDATA%\Programs\hammerdown\and adds a "Hammer down file" context menu item for PDF files in Windows Explorer - linux: creates launcher in
~/.local/bin/hammerdownand Nautilus script in~/.local/share/nautilus/scripts/Hammer down file - macOS: creates launcher in
~/.local/bin/hammerdown
Update hammerdown to the latest version at any time:
hammerdown --update
This installer is local and does not require administrator privileges.
Usage
Convert one or several supported files:
hammerdown document.pdf
hammerdown report.docx workbook.xlsx slides.pptx
Files can also be dragged onto the executable. Running hammerdown without file arguments opens a file-selection dialog when a graphical desktop is available. --quiet suppresses routine status messages, which is used by file-manager integrations:
hammerdown --quiet document.pdf
hammerdown --force document.pdf
hammerdown --version
hammerdown --help
Supported Formats
Supported document extensions:
- PDF & E-books:
.pdf,.epub,.mobi,.fb2,.xps - Word:
.docx,.doc(legacy.docvia LibreOffice / MS Word) - Excel:
.xlsx,.xls(legacy.xlsvia LibreOffice / MS Excel) - PowerPoint:
.pptx,.ppt(legacy.pptvia LibreOffice / MS PowerPoint) - Plain text & tabular:
.txt,.md,.log,.csv
Output Structure
For each input file, an output folder MD_<name>_<ext> is written next to the source document:
document.pdf
MD_document_pdf/
├── document.md
└── images/
└── extracted illustration and embedded document images
Output folder names consistently include the file extension suffix (for example, MD_report_doc/ and MD_report_docx/) to prevent conflicts between different document formats with the same base name.
Images embedded in PDF, Word, or PowerPoint documents are extracted into MD_<name>_<ext>/images/, and the generated Markdown contains relative image links. Conversion continues through a batch if an individual file fails; the process exits with status 1 if any input fails.
Contributing
Contributions are welcome. Please refer to CONTRIBUTING.md for contribution guidelines. For architectural details, processing pipelines, and internal specifications, see TECHNICAL.md.
Metadata
Release files for hammerdown 1.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| hammerdown-1.2.1.tar.gz | 13.3 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hammerdown-1.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.7 kB
Release files / hammerdown-1.2.1.tar.gz
| Download URL | hammerdown-1.2.1.tar.gz |
|---|---|
| Size | 13.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
509096236de25d944d407cccd2220984c1a2a7f9d1938899a3112fa8ac52e776
|
|
BLAKE2b-256 checksum How to use checksums |
4d7796aa2fd07cf40475c84059b7c4809aeb0a71a646b88c60d5ecbad189da66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logRelease files / hammerdown-1.2.1-py3-none-any.whl
| Download URL | hammerdown-1.2.1-py3-none-any.whl |
|---|---|
| Size | 10.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
601ac00102ad1387279118fa53a61349445422cfe2d227e74ff9eff40913c027
|
|
BLAKE2b-256 checksum How to use checksums |
258d88da416365cd565cc189bf44430aea06d286697a62407d61b389ee8bf532
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logSecurity for hammerdown 1.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for hammerdown-1.2.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 8, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.