Specification for the MDZip (.mdz) file format.
Current release: v1.2.1 (dated 2026-10-25; same format as 1.2.0) — see CHANGELOG.md.
This repository defines the .mdz file format specification; it does not provide an editor, viewer, or reference implementation.
An .mdz file is a portable, self-contained document format that packages one or more Markdown content files together with their associated assets (images, stylesheets, etc.) into a single ZIP archive.
Read the full specification: SPEC.md
The specification covers:
- File format - ZIP-based archive structure and encoding requirements
- Archive layout - Required and recommended file organization
- Manifest -
manifest.jsonmetadata, entry point, and mode declaration (written by producers, never required by consumers) - Modes -
document(default) andprojectinterpretation modes - Markdown content - Encoding, dialect guidance, and multi-page support
- Assets - Bundling images and other resources
- Linking - How to reference files within the archive
- MIME type - Proposed
application/vnd.mdzipwith the.mdzextension - Versioning - Semantic versioning of the spec and compatibility rules
- Conformance - Requirements for producers and consumers
- SPEC.md - canonical format specification
- fixtures/ - shared conformance fixtures: test catalog, prebuilt archives and machine-readable cases
- examples/ - non-normative templates, sample archives, guidance and design rationale
- Conformance guide for apps - for app developers: what's required and optional, how to test, and how to get listed on mdzip.org
- schema/ - versioned JSON Schema companion for manifest validation
- CHANGELOG.md - project change history
- CONTRIBUTING.md - contribution process
A minimal .mdz file is a ZIP archive (renamed with an .mdz extension) containing:
-
index.mdat the archive root. Without a manifest, consumers openindex.md; failing that, the only Markdown file at the root, setting aside support files such asREADME.mdandAGENTS.md(see SPEC.md §5.5):# My Document Hello from MDZip! -
manifest.jsonfor metadata and the entry point. It's optional when you zip a folder by hand, and required in archives written by MDZip software (conforming producers). This example uses the current release, 1.2.0:{ "spec": { "name": "mdzip-spec", "version": "1.2.0" }, "title": "My Document", "mode": "document", "entryPoint": "index.md" }
This project is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). See LICENSE.
Feedback, questions, and proposals are welcome via this repository's issue tracker.