The export format
Regionly exports are versioned (currently 1.0) and designed to be consumed by AI models, agents, and ordinary code alike. Version 1.x changes are additive only — a consumer written today keeps working. The machine-readable contract lives at regionly-v1.schema.json.
Coordinate system
Origin is the top-left corner of the image; x increases rightward, y increases downward. Every geometry appears twice: pixels (exact image pixels) and normalized (each value divided by image width or height, range 0–1, resolution-independent).
Geometries
| type | pixels fields | notes |
|---|---|---|
rect | x, y, width, height | top-left anchored |
circle | cx, cy, radius | normalized form uses radiusX/radiusY (one per axis) |
polygon | points: [[x,y], …] | source is "polygon" or "freeform" |
line | x1, y1, x2, y2 | arrow: true when drawn as an arrow (points at x2,y2) |
point | x, y | a single marked spot |
Every region also carries an axis-aligned boundingBox (pixels + normalized) and an optional note. Regions sharing a label are grouped under one labels[] entry.
Example
{
"format": "regionly",
"version": "1.0",
"exportedAt": "2026-07-20T14:00:00.000Z",
"image": { "name": "room.png", "width": 1536, "height": 1024 },
"coordinateSystem": {
"pixels": "origin top-left of the image, x right, y down, units = image pixels",
"normalized": "same origin/axes, each value divided by image width (x) or height (y), range 0-1"
},
"labels": [
{
"label": "bed",
"color": "#3e7bfa",
"regions": [
{
"id": "r1a2b3",
"type": "rect",
"note": "blocks movement",
"pixels": { "x": 90, "y": 90, "width": 170, "height": 230 },
"normalized": { "x": 0.05859, "y": 0.08789, "width": 0.11068, "height": 0.22461 },
"boundingBox": {
"pixels": { "x": 90, "y": 90, "width": 170, "height": 230 },
"normalized": { "x": 0.05859, "y": 0.08789, "width": 0.11068, "height": 0.22461 }
}
}
]
}
],
"stats": { "labelCount": 1, "regionCount": 1 }
}
Prompt-ready text
The second export tab renders the same data as plain language, ready to paste into any AI prompt:
Labeled regions for image "room.png" (1536x1024 pixels). Coordinate system: origin at the top-left corner of the image; x increases rightward, y increases downward; all values are image pixels. 1 region across 1 label: ## bed (1 region) - rectangle at x=90, y=90, width=170, height=230 (top-left corner at 90,90; bottom-right at 260,320) note: blocks movement
Project files
.regionly.json project files (format: "regionly-project") embed the image as a data URL plus the raw editor regions — they're a save format, not an interchange format. Use the export for anything downstream.