For developers and IT
Your captures, in a format you can read.
A .snpt file is an ordinary ZIP: the capture as PNG, every mark as JSON, described by a JSON Schema. Nothing flattened, nothing proprietary. Unzip one and look.
Inside the ZIP
Four kinds of entry.
Fixed names, a marker entry first, and no base64 images tucked inside the JSON.
mimetype- The first entry, stored uncompressed: the bytes
application/vnd.snappington.snpt. Tools can identify the file from its first 60 or so bytes, the way EPUB and OpenDocument do it. document.json- Metadata and pages: every object, crop, resize, rotation and effect, as data. UTF-8, validated by the schema.
images/*.png- The base raster of each page, without annotations, plus the cursor, stamps and imported images.
thumbnail.png- A flattened preview of page 1 for file browsers and the library. Never the source of truth.
2026-09-25_09-41-12.snpt
├── mimetype # stored, first
├── document.json # pages, objects, metadata
├── images/
│ ├── base.png # the capture, unmarked
│ └── 3f2a….png # cursor, stamps, imports
└── thumbnail.png # 512 px preview
{
"format": "snpt",
"version": 1,
"pages": [{
"base": {
"image": "images/base.png",
"width": 1353, "height": 927
},
"canvas": {
"x": 0, "y": 0,
"width": 1353, "height": 927
},
"objects": [{
"type": "arrow",
"start": { "x": 882, "y": 144 },
"end": { "x": 724, "y": 152 },
"style": {
"stroke": "#E80808", "strokeWidth": 10,
"endHead": "arrow"
}
}]
}]
}
Design goals
Three rules, in this order.
Nothing is flattened by accident.
Crop, resize, rotation, effects and every annotation are stored as data and applied when rendering, so they can be changed or undone at any time.
Redaction is permanent.
A blur is cosmetic. A redact object is burned into the pixels on save, then removed, and no copy of the covered pixels exists anywhere in the file.
Boring and documented.
Plain ZIP, PNG and JSON, a JSON Schema, and no proprietary encodings: no RTF, no points as strings, no images as base64.
Coordinates
Everything in world pixels.
World pixels are the pixel grid of a page’s base image: origin at its top-left, x to the right, y down, real numbers allowed. The base image always sits at (0, 0) at its natural size.
A crop is just a smaller canvas rectangle; padding is a bigger one. Resize, rotation and flips are numbers in output. Objects keep their world coordinates through all of it, which is why undoing a crop next month is only a matter of changing the numbers back.
Colours are CSS hex (#RRGGBB or #RRGGBBAA), points are { "x", "y" }, and text is an array of styled runs.
Identifiers
For registries, file associations and scripts.
| Extension | .snpt |
|---|---|
| MIME type | application/vnd.snappington.snpt |
Schema $id | urn:snappington:schema:document:1 |
| Schema dialect | JSON Schema 2020-12 |
| Versioning | version only changes for incompatible changes. New optional fields and object types don’t bump it; readers keep what they don’t know. |
| Video projects | .snpv folder, schema urn:snappington:schema:video-project:1 |
Video projects
.snpv is a folder.
A recording’s raw tracks, its event log and a JSON edit list. The media files are written once by the recorder and never changed; cuts, zooms, speed and the look are data in project.json, with times in integer microseconds.
Demo.snpv\
├── project.json # the edits
├── project.json.bak # the previous save
├── thumbnail.png
├── media\seg-001\
│ ├── screen.mp4 # no cursor baked in
│ ├── camera.mp4
│ ├── mic.m4a
│ ├── system.m4a
│ └── events.jsonl # clicks and UI events
├── cursors\
└── analysis\ # caches, rebuildable
Command line
The snappington tool.
For scripts, build pipelines and bulk jobs. Exit code 0 means OK, 1 a validation failure, 2 a usage or I/O error.
validate- Checks the ZIP container and
document.jsonfor structural problems, optionally against the schema. info- Prints metadata and per-page details, or the whole document as JSON.
export- Renders a page, or all of them, to PNG, JPEG or WebP.
thumbnail- Renders a small PNG of page 1.
> snappington validate report.snpt
> snappington info report.snpt --json
> snappington export report.snpt --out report.png
> snappington export report.snpt --out page.webp --all-pages
> snappington thumbnail report.snpt --out thumb.png --max 256
The tool also exports step guides (export-steps) and inspects video projects (video info, video validate).
Documents
The full specification.
The spec, the schemas and example files aren’t public yet. They’ll be linked here when they are.