Skip to content

File formats

Shotwork writes two kinds of document. Both are plain JSON text you can open in any text editor, and neither contains footage: they point at your video files where they already are.

Extension Called What it holds
.shotwork shot list The videos you marked, every shot in them, and the fields those shots carry.
.swreel reel Which shots play, in what order, for how long, and what sits over and under them.

Shot list

Key Holds
schema_version The format version. Currently 5.
fields The shot list's own metadata fields, copied from the preset it started from.
sources One record per video.
shots One record per shot.
exports Reserved for a later version; nothing writes it yet.

A source

Key Holds
path The video's full path, as of the last save.
relative_path The path from the shot list's own folder, or empty when the video is outside that folder or on another drive.
file_fingerprint A short signature of the file that recognizes it after a move or rename. It is not an integrity check.
fps_num, fps_den The exact frame rate as a fraction, for example 24000 and 1001.
frame_count, width, height The video's length in frames and its frame size.
start_timecode The timecode embedded in the file.
has_vfr Whether the video has a variable frame rate.
interest_points Every interest point on this video, by frame and level.

A shot

Key Holds
in_frame, out_frame The first and last frame of the shot, both included.
name, tags, rating, notes, restricted What you entered in the detail panel.
values Every preset field's value, by field id.
created_at, updated_at When the shot was made and last changed, in UTC.

A shot list stores frames only. Seconds and timecode are worked out from the frame rate whenever Shotwork shows them.

Reel

A reel is an edit decision, not a render. It never stores frame positions: Shotwork works them out from your shot lists every time it opens the reel, so a reel cannot carry arithmetic that has gone out of date.

Key Holds
schema_version The format version. Currently 20.
name The reel's name.
timeline_fps The frame rate as a fraction, or empty to follow the footage.
items The shots, gaps and cards, in playing order.
trim Which part of a shortened shot plays: its start or its middle.
max_seconds The length budget, or empty for none.
include_restricted Whether restricted shots were allowed when the reel was made.
notes Notes, such as an AI assistant's reasons for its order.
music_tracks Each song's file, window on the reel, offset, level and fades.
fades Fades on clip edges.
default_template, template_overrides The reel's overlay template by name, and any per-shot overrides.
overlay_fade_frames How long an overlay takes to fade in after a cut.
viewport_seconds The length of the reel timeline's canvas.
replace_uses_interest_point Whether a replacement starts at the new shot's interest point.

An item

Kind Stores
Shot The shot's id, how long it holds (empty to play the whole shot), and, once changed, its trim anchor and scale.
Gap Its length in seconds.
Card Whether it is an image, color or title card, how long it holds, and the image path, color or template name.

Files from other versions

  • An older file opens and is upgraded as it loads. Nothing is lost, and the next save writes the current format.
  • A file saved by a newer Shotwork refuses to open, with Could not open shot list or Could not open reel. Update Shotwork to open it.

Beside exported clips

Export shots writes a metadata folder beside the clips, with one JSON file per clip. Each holds the clip's path relative to that folder, the whole shot record with the interest points inside its range, the source video's path, the frames actually exported including handles, the preset, and when it was exported.

Each clip also carries a small copy in its own comment tag: the shot's id, name, tags, project and exported frames. A clip separated from its folder still says what it is.

Overlay templates

One JSON file per template, in the overlay_templates folder of Shotwork's app data. Each lists its items with their zone, kind, text or tag field, image path, font, size, color, scale and offset. Reels refer to a template by name, so a reel moved to another computer shows its overlay only if a template of that name exists there.