vsdxkit documentation
vsdxkit creates, edits and analyses Microsoft Visio .vsdx files with
Python. The distribution is called vsdxkit; code imports it as vsdx.
Microsoft Visio is not required at runtime.
Warning
0.x API notice. 0.7 is the last release of the inherited API. 1.0
renames VisioFile to Document and Container to
SwimlaneDiagram, splits Connect into an internal
ConnectionRecord and a public Connector, and drops the context
manager: opening closes the archive before it returns, and save() is
the only write. The 1.0 design
lists every change, and a migration guide lands at
docs/migration-1.0.rst with the first breaking release. Once there is a
release on PyPI again, pin vsdxkit<1 to stay on the 0.x names; the note
below says what the index holds today.
The library works on the XML parts inside an existing Visio package. It can query and edit shapes, create common flowchart shapes, create and re-anchor connectors, extend existing cross-functional flowcharts, copy pages and render Jinja-backed templates.
Note
As of 2026-09-13 there is no release on PyPI. The first release was
withdrawn after a security defect and cannot be republished, so
pip install vsdxkit finds no versions until the next one lands. Install
from the GitHub repository as described in Quick start. The PyPI
project page shows the current state.
Guides
Format support
Python 3.10–3.14 on Linux, Windows and macOS
read, edit and save
.vsdxread, edit and save
.vsdm, which must stay.vsdmno Microsoft Visio dependency at runtime
generated connectors and swimlanes checked against real Visio through COM
The library starts from an existing package. It does not construct a complete
Visio document from an empty file. A macro-enabled .vsdm can be edited and
saved, but only back to a .vsdm destination: the package kind is decided by
the content type of visio/document.xml, not by the filename, so saving one
as .vsdx (or a plain drawing as .vsdm) raises ValueError rather than
writing a file Visio reports as corrupt. Stripping macros to convert a .vsdm
into a .vsdx is not supported.
Project
Source and issues: https://github.com/firmfooting/vsdxkit
Descended from: https://github.com/dave-howard/vsdx