Skip to main content

Format Builder

Compose a filename pattern chip-by-chip in the workspace. Live preview, per-chip options, separator quick-picks, and one-click promotion to a saved template.

Last updated April 27, 2026

The Format Builder is the workspace-level chip editor that authors a filename format string without making you type the v3 grammar by hand. It replaced the old platform-preset picker in April 2026, so there is one place — and one place only — that decides how your files are renamed: the active template's filename format, or, if no template is active, the format you build here.

Opening the builder

Click Format ▾ in the workspace toolbar. The unified Format menu opens with three stacked sections:

  • Templates — Apply a saved template, or Save the current builder state as a new template (Pro).
  • Format Builder — the chip strip, live preview, and + Token menu described below.
  • Render flags — global toggles like Readable Names.

The builder section shows:

  • A chip strip of the current format as token chips ({sku}, {seq|pad=2}, {ext}, …) and editable literal chips (separators like - or _).
  • A live preview rendering the first uploaded image (or a built-in fixture if you haven't uploaded yet) against the current chip arrangement.
  • A + Token menu for adding chips and Save as Template for promotion.

The format string the chips encode is mirrored to sessionStorage, so a tab reload preserves whatever you were authoring. It is not synced cross-device — bookmark a saved template if you want it on your laptop too.

Adding token chips

Click + Token to open the token menu. Every identifier the engine understands is in the list:

  • {sku} — the sku metadata value for the current image.
  • {descriptor} — the per-image label.
  • {group} — the manual-group bucket name (see Manual groups).
  • {seq} and {position} — sequence numbers (per-group and per-workspace, respectively).
  • {date} — capture / file date with src= (now, exif, mtime) and fmt= options.
  • {val:KEY} — a metadata bag entry populated by inline editing or CSV Import. The menu prompts for the KEY before inserting.
  • {exif:KEY} — a curated EXIF lookup (iso, camera, lens). Same KEY prompt.
  • {folder} — the dropped folder's path segment.
  • {ext} — the original file extension. Always insert this last.

Adding separator literals

A separator literal is a small chip that emits a fixed string between two tokens (e.g. the - in nike-001-front). The token menu has a Separator between tokens section with two quick-pick buttons:

  • - — hyphen (the most common separator).
  • _ — underscore.

Need a different separator? Insert a hyphen, then click the chip and type your custom value. The inline input strips characters that would collide with filename invariants — . (extension boundary), / and \ (path separators), and the NUL byte — so the chip can never produce a malformed filename.

`sep=` vs literal chips.

Per-token sep= (in the chip's options popover) controls the separator characters inside a single token's value. Literal chips control the separator between two adjacent tokens. They're independent: a {sku|sep=_} chip can sit next to a - literal and produce nike_001-front.

Reordering and editing

  • Drag any chip to reorder. Pointer drag works with mouse and touch; arrow keys do the same when a chip is focused for keyboard-only users.
  • Click the gear on a token chip to open its options popover. Only the options that change visible output for that token's identifier are shown — case, sep, pad, fmt, src, default, plus a KEY field for val / exif chips.
  • Click the X to remove a chip. The encoded format and the live preview update on every change.

Chip labels surface every active option

When you set multiple options on one chip, the chip label concatenates them so you can see what's active at a glance. {sku|case=upper|sep=_} reads left-to-right exactly like the popover that authored it, instead of hiding the second option behind a single primary label.

When a template is active

The Format Builder enters read-only mode whenever a saved template is loaded. Editing chips on top of a saved template would silently diverge from the template the rest of the app shows; instead, the popover shows a "Clear the active template to edit" hint. Clear the template (the X on the active-template pill) and the builder reactivates with whatever ad-hoc chips you had before — they survived the template application without overwriting it.

Save as Template

The Save as Template button at the top of the builder closes the popover and opens the Save-as-Template dialog with the current format string pre-filled. Pro users can promote any builder state into a durable, named, shareable template in one click.

Empty state

A blank chip strip means no format is active. The workspace renders empty filenames (the export button stays disabled) and rows show a "Choose a format" affordance. Click + Token to start, or open the Format menu and pick Apply Template to load an existing one.

Format precedence, in one line

filenameFormat used by the engine =
  activeTemplate?.filenameFormat ?? adHocFormat ?? null

Templates win over the builder. The builder wins over nothing. The renderer returns '' for null so the workspace surfaces the empty state instead of guessing a default.