Skip to content

Data Columns

Each row of your data describes one render. A handful of column names are reserved and control the render itself; every other column maps directly onto your After Effects project by name.

Column Purpose
comp Name of the composition to render. Required: a row with no comp, or a name that is not in the project, fails instead of rendering.
output Output filename for this row, without extension. The extension comes from the output module.
project Path to a .aep file to open before rendering this row. Lets one dataset span multiple projects.
render-settings Name of a render settings template to apply for this row. Overrides the panel dropdown.
output-module Name of an output module template to apply for this row. Overrides the panel dropdown.
status Used by Agent Mode. Set it to ready to queue a row; BatchRender writes progress back into this column.

comp is required. The rest are optional, so a minimal dataset can be just comp, output and your content columns.

BatchRender checks for the comp column before it starts: a batch render or agent activation on a data source without one stops immediately and names the file, worksheet or view that is missing it. The name must be exactly comp; a column named Comp does not count, and the panel says so.

The panel carries the same summary: click the ? next to the Data Connection heading for the reserved column list without leaving After Effects.

A second set of optional columns, all starting with br-, receives information about finished renders. See delivery information.

Any non-reserved column whose name matches a text layer name replaces that layer’s source text.

Data:

comp output headline subtitle
Promo promo_de Jetzt kaufen Nur heute
Promo promo_en Buy now Today only

Project: a comp Promo containing text layers named headline and subtitle. Nothing else is required. Layers keep all their styling and animation; only the text content changes. A text layer whose Source Text is keyframed gets the new text on every keyframe, and each keyframe keeps its own style.

An empty cell clears the layer’s text. This is the same for every source, including an Airtable field left empty.

Any non-reserved column whose name matches a footage item name (in the project panel) replaces that item’s source file. The cell value is either a full path to a file, used as-is, or a bare filename, resolved against the Footage Path set in the panel.

comp output product-shot
Promo promo_shoe shoe.png
Promo promo_bag bag.png

Project: a footage item named product-shot used anywhere in your comps. With Footage Path set to C:\assets, the promo_shoe row swaps it to C:\assets\shoe.png.

Every comp and layer using that footage item updates at once.

If the file cannot be found, the row fails with Footage not found for '...' and nothing is rendered for it. A missing file never renders with the image of the row before.

An empty footage cell leaves the footage item as it is. After an earlier row, that is the file the earlier row used, so the row renders with it. The log and br-warnings name the file the row used.

A footage column can also hold a link instead of a local filename. BatchRender downloads the file and swaps the footage item to the downloaded copy. Three kinds of link work:

  • An Airtable attachment field.
  • A direct https:// link to an image, video or audio file, from any host.
  • A Google Drive share link, set to Anyone with the link.

Share links from other services (OneDrive, Dropbox, SharePoint, Box, WeTransfer) open a web page rather than the file, so they are not downloaded and the row fails with Column '...' holds a link that was not downloaded. If a service offers a direct download link, use that instead: for example, Dropbox’s dl.dropboxusercontent.com links work, while a dropbox.com/s/...?dl=0 share link does not.

A direct link is only downloaded when its address ends in a media file extension such as .png or .mp4. That keeps ordinary web addresses in text columns as text: a text layer column containing https://example.com renders the address. Reserved columns are never treated as files.

A Google Drive link that points at something After Effects cannot import fails the row, and the message names the file.

Files are saved into a BatchRender-RemoteAssets folder next to your project file, keeping their original names, so they travel with the project the same way a normal footage folder does.

Downloads are reused on later runs instead of being fetched again. If the file behind a link or attachment changes, BatchRender notices and downloads the new version, even when the filename is the same.

While a file is downloading, the status bar names it and shows its progress.

Two different files with the same name never overwrite each other. Airtable names every pasted image image.png, so a row can easily hold two of them in different columns: the second is saved as image (3f9a1c).png, with a short tag, and each footage item gets its own file.

A download that is interrupted, or that stops short of the size the server announced, is discarded rather than kept, and the row reports it. A file larger than the Maximum download size set in Settings is not downloaded at all.

  • Matching is by exact name: column name against layer name (text) or footage item name (footage).
  • A column can match multiple layers across comps; all of them update.
  • Columns that match nothing in the project are ignored, so extra bookkeeping columns in your sheet are harmless.

Rows are addressed by the number you see in the source’s own interface, so where data starts depends on the source:

Source First data row Why
CSV / TSV 2 Line 1 of the file is the header.
Google Sheets 2 Row 1 is the header row, matching what Sheets displays.
JSON 1 An array of objects has no header row.
Airtable 1 Field names are not a row in Airtable; the first record is row 1.

The Start and End boxes and Data Preview follow this numbering, and the panel warns if you enter a row below the source’s minimum.