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:
2.0.0 - Encoding: UTF-8 JSON
Same compact field names
The export format uses the same compact CRDT field names as the live document (t, xy, wh, si, etc.). No field name translation occurs — the export is a direct serialization of the CRDT state.
Envelope Structure
{
"contentType": "application/vnd.cloudillo.prezillo+json",
"appVersion": "0.5.0",
"formatVersion": "2.0.0",
"exportedAt": "2026-01-15T14:30:00.000Z",
"data": {
"meta": { ... },
"objects": { ... },
"containers": { ... },
"rootChildren": [ ... ],
"containerChildren": { ... },
"views": { ... },
"viewOrder": [ ... ],
"richTexts": { ... },
"styles": { ... },
"templates": { ... },
"templatePrototypeObjects": { ... },
"palette": { ... }
}
}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 "2.0.0") |
exportedAt |
string |
ISO 8601 timestamp of export |
Data Fields
| Field | Type | Description |
|---|---|---|
meta |
object |
Document metadata (name, default dimensions, grid settings) |
objects |
Record<string, StoredObject> |
All objects keyed by ObjectId |
containers |
Record<string, StoredContainer> |
All containers keyed by ContainerId |
rootChildren |
ChildRef[] |
Root-level children in order |
containerChildren |
Record<string, ChildRef[]> |
Children per container, keyed by ContainerId |
views |
Record<string, StoredView> |
All views keyed by ViewId |
viewOrder |
string[] |
ViewId strings in presentation order |
richTexts |
Record<string, RichTextExport> |
Rich text content keyed by ObjectId |
styles |
Record<string, StoredStyle> |
All styles keyed by StyleId |
templates |
Record<string, StoredTemplate> |
All templates keyed by TemplateId |
templatePrototypeObjects |
Record<string, string[]> |
Prototype object arrays keyed by TemplateId |
palette |
StoredPalette | null |
The document palette, or null if no custom palette |
Rich Text Serialization
Rich text content is serialized with both a plain text representation and the full Quill Delta operations:
{
"aB3x_Qm7kL9p": {
"plainText": "Hello, world!",
"delta": [
{ "insert": "Hello, " },
{ "insert": "world!", "attributes": { "bold": true } }
]
}
}| Field | Type | Description |
|---|---|---|
plainText |
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": "2.0.0",
"exportedAt": "2026-01-15T14:30:00.000Z",
"data": {
"meta": {
"name": "My Presentation",
"defaultViewWidth": 1920,
"defaultViewHeight": 1080
},
"objects": {
"aB3x_Qm7kL9p": {
"t": "T",
"vi": "m4Jf_L1pZq8w",
"p": "Xk2nR8vH_wYq",
"xy": [560, 440],
"wh": [800, 200],
"si": "Tz8_kLmNqR2v",
"mh": 200
},
"Hw5_qT2mLkJx": {
"t": "R",
"vi": "nP7r_S3wKxUe",
"p": "Xk2nR8vH_wYq",
"xy": [460, 290],
"wh": [1000, 500],
"si": "Qp4_rW9xJdLm",
"s": { "f": "#4a90d9", "sw": 2 },
"cr": 12
}
},
"containers": {
"Xk2nR8vH_wYq": {
"t": "L",
"n": "Layer 1",
"xy": [0, 0],
"x": true
}
},
"rootChildren": [
[1, "Xk2nR8vH_wYq"]
],
"containerChildren": {
"Xk2nR8vH_wYq": [
[0, "aB3x_Qm7kL9p"],
[0, "Hw5_qT2mLkJx"]
]
},
"views": {
"m4Jf_L1pZq8w": {
"name": "Title Slide",
"x": 0,
"y": 0,
"width": 1920,
"height": 1080,
"backgroundColor": "#ffffff",
"showBorder": true
},
"nP7r_S3wKxUe": {
"name": "Content",
"x": 2020,
"y": 0,
"width": 1920,
"height": 1080,
"backgroundColor": "#f5f5f5",
"showBorder": true
}
},
"viewOrder": ["m4Jf_L1pZq8w", "nP7r_S3wKxUe"],
"richTexts": {
"aB3x_Qm7kL9p": {
"plainText": "Welcome to My Presentation",
"delta": [
{ "insert": "Welcome to " },
{ "insert": "My Presentation", "attributes": { "bold": true } },
{ "insert": "\n" }
]
}
},
"styles": {
"Tz8_kLmNqR2v": {
"n": "Heading",
"t": "T",
"ff": "Inter, system-ui",
"fs": 48,
"fw": "bold",
"fc": "#1a1a2e"
},
"Qp4_rW9xJdLm": {
"n": "Primary",
"t": "S",
"f": "#4a90d9",
"s": "#2d5a87",
"sw": 2,
"cr": 8
}
},
"templates": {},
"templatePrototypeObjects": {},
"palette": {
"n": "Default",
"bg": { "c": "#ffffff" },
"tx": { "c": "#333333" },
"a1": { "c": "#4a90d9" },
"a2": { "c": "#5cb85c" },
"a3": { "c": "#f0ad4e" },
"a4": { "c": "#d9534f" },
"a5": { "c": "#9b59b6" },
"a6": { "c": "#1abc9c" }
}
}
}