export format
Prezillo documents can be exported as self-contained JSON files for backup, sharing, and interoperability.
File Format
- File extension:
.prezillo - Content type:
application/vnd.cloudillo.prezillo+json - Format version:
3.0.0 - Encoding: UTF-8 JSON
v3 generic export format
Since format version 3.0.0, Prezillo uses the generic exportYDoc() serializer from @cloudillo/crdt. All Yjs types carry inline @T type markers and data keys match the raw CRDT shared type names. See v3 Generic Export Format for the full specification.
Envelope Structure
{
"contentType": "application/vnd.cloudillo.prezillo+json",
"appVersion": "0.5.0",
"formatVersion": "3.0.0",
"exportedAt": "2026-01-15T14:30:00.000Z",
"data": {
"m": { "@T": "M", ... },
"o": { "@T": "M", ... },
"c": { "@T": "M", ... },
"r": [ "@T:A", ... ],
"ch": { "@T": "M", ... },
"v": { "@T": "M", ... },
"vo": [ "@T:A", ... ],
"rt": { "@T": "M", ... },
"st": { "@T": "M", ... },
"tpl": { "@T": "M", ... },
"tpo": { "@T": "M", ... },
"pl": { "@T": "M", ... }
}
}Envelope Fields
| Field | Type | Description |
|---|---|---|
contentType |
string |
Always "application/vnd.cloudillo.prezillo+json" |
appVersion |
string |
Prezillo version that created this export |
formatVersion |
string |
Export format version (currently "3.0.0") |
exportedAt |
string |
ISO 8601 timestamp of export |
Data Fields
| Key | @T |
Yjs Type | Description |
|---|---|---|---|
m |
M |
Y.Map |
Document metadata (name, default dimensions, grid settings) |
o |
M |
Y.Map<StoredObject> |
All objects keyed by ObjectId |
c |
M |
Y.Map<StoredContainer> |
All containers keyed by ContainerId |
r |
A |
Y.Array<ChildRef> |
Root-level children in order |
ch |
M |
Y.Map<Y.Array<ChildRef>> |
Children per container, keyed by ContainerId |
v |
M |
Y.Map<StoredView> |
All views keyed by ViewId |
vo |
A |
Y.Array<string> |
ViewId strings in presentation order |
rt |
M |
Y.Map<Y.Text> |
Rich text content keyed by ObjectId |
st |
M |
Y.Map<StoredStyle> |
All styles keyed by StyleId |
tpl |
M |
Y.Map<StoredTemplate> |
All templates keyed by TemplateId |
tpo |
M |
Y.Map<Y.Array<string>> |
Prototype object arrays keyed by TemplateId |
pl |
M |
Y.Map<StoredPalette> |
The document palette (single entry keyed by 'default') |
Rich Text Serialization
Rich text entries in the rt map are Y.Text instances, serialized with the @T: "T" marker containing both the plain text and the full Quill Delta operations:
{
"@T": "M",
"aB3x_Qm7kL9p": {
"@T": "T",
"text": "Hello, world!",
"delta": [
{ "insert": "Hello, " },
{ "insert": "world!", "attributes": { "bold": true } }
]
}
}| Field | Type | Description |
|---|---|---|
@T |
"T" |
Type marker indicating a Y.Text instance |
text |
string |
Plain text content (for search/indexing) |
delta |
object[] |
Quill Delta operations (for restoring formatting) |
Numeric Precision
All numeric values are rounded to 3 decimal places in the export to produce cleaner output. For example, a position of [100.123456, 200.789012] becomes [100.123, 200.789].
Complete Example
A minimal presentation with 2 slides, one text box, and one rectangle:
{
"contentType": "application/vnd.cloudillo.prezillo+json",
"appVersion": "0.5.0",
"formatVersion": "3.0.0",
"exportedAt": "2026-01-15T14:30:00.000Z",
"data": {
"m": {
"@T": "M",
"name": "My Presentation",
"defaultViewWidth": 1920,
"defaultViewHeight": 1080
},
"o": {
"@T": "M",
"aB3x_Qm7kL9p": {
"@T": "M",
"t": "T",
"vi": "m4Jf_L1pZq8w",
"p": "Xk2nR8vH_wYq",
"xy": [560, 440],
"wh": [800, 200],
"si": "Tz8_kLmNqR2v",
"mh": 200
},
"Hw5_qT2mLkJx": {
"@T": "M",
"t": "R",
"vi": "nP7r_S3wKxUe",
"p": "Xk2nR8vH_wYq",
"xy": [460, 290],
"wh": [1000, 500],
"si": "Qp4_rW9xJdLm",
"s": { "@T": "M", "f": "#4a90d9", "sw": 2 },
"cr": 12
}
},
"c": {
"@T": "M",
"Xk2nR8vH_wYq": {
"@T": "M",
"t": "L",
"n": "Layer 1",
"xy": [0, 0],
"x": true
}
},
"r": [
"@T:A",
["@T:A", 1, "Xk2nR8vH_wYq"]
],
"ch": {
"@T": "M",
"Xk2nR8vH_wYq": [
"@T:A",
["@T:A", 0, "aB3x_Qm7kL9p"],
["@T:A", 0, "Hw5_qT2mLkJx"]
]
},
"v": {
"@T": "M",
"m4Jf_L1pZq8w": {
"@T": "M",
"name": "Title Slide",
"x": 0,
"y": 0,
"width": 1920,
"height": 1080,
"backgroundColor": "#ffffff",
"showBorder": true
},
"nP7r_S3wKxUe": {
"@T": "M",
"name": "Content",
"x": 2020,
"y": 0,
"width": 1920,
"height": 1080,
"backgroundColor": "#f5f5f5",
"showBorder": true
}
},
"vo": ["@T:A", "m4Jf_L1pZq8w", "nP7r_S3wKxUe"],
"rt": {
"@T": "M",
"aB3x_Qm7kL9p": {
"@T": "T",
"text": "Welcome to My Presentation",
"delta": [
{ "insert": "Welcome to " },
{ "insert": "My Presentation", "attributes": { "bold": true } },
{ "insert": "\n" }
]
}
},
"st": {
"@T": "M",
"Tz8_kLmNqR2v": {
"@T": "M",
"n": "Heading",
"t": "T",
"ff": "Inter, system-ui",
"fs": 48,
"fw": "bold",
"fc": "#1a1a2e"
},
"Qp4_rW9xJdLm": {
"@T": "M",
"n": "Primary",
"t": "S",
"f": "#4a90d9",
"s": "#2d5a87",
"sw": 2,
"cr": 8
}
},
"tpl": { "@T": "M" },
"tpo": { "@T": "M" },
"pl": {
"@T": "M",
"default": {
"@T": "M",
"n": "Default",
"bg": { "@T": "M", "c": "#ffffff" },
"tx": { "@T": "M", "c": "#333333" },
"a1": { "@T": "M", "c": "#4a90d9" },
"a2": { "@T": "M", "c": "#5cb85c" },
"a3": { "@T": "M", "c": "#f0ad4e" },
"a4": { "@T": "M", "c": "#d9534f" },
"a5": { "@T": "M", "c": "#9b59b6" },
"a6": { "@T": "M", "c": "#1abc9c" }
}
}
}
}