Exporting

Open the Export panel, choose a target and a format, set a range, and export. The render runs in the background.

A graph can be written out as an image sequence, a video, a 3D model, or a self-contained web page. All of it starts in the Export panel, opened from File > Export… (Cmd+E) or from View > Panels > Export.

Targets

The target list runs down the left: Media for files, Web for a web page. Inside Media, a Type: row switches between Image, Video, Audio and 3D, and the settings underneath change with it.

Each type offers the formats that can actually be written:

Set the output Path: (Browse... picks a folder for image sequences and a file for everything else) and a Format:. The format's own controls appear under Format Options: PNG bit depth and an Alpha channel tickbox, TIFF compression and its own Alpha channel tickbox, EXR float precision, EXR compression and a Cryptomatte (sibling EXR) tickbox, JPEG quality, VP9 alpha, and the quality preset for the two video codecs.

Exports can also be driven from inside the graph with Export, which reaches further than the panel does: ProRes, H.265 and Gaussian splat files are node-only.

A red Error: line in the bottom bar holds the Export button disabled until it is resolved. Whether the graph itself suits the chosen target is checked later, when the export starts, and a failure there appears as a message in the panel rather than as a bottom-bar issue.

What a target refuses

Pressing Export first walks the graph and compares what each node needs against what the target can provide. One node it cannot serve stops the whole export before anything renders, with Export failed to start: Node 'input.camera' requires unsupported capabilities: ["Video Capture"] naming the node type and what is missing.

For Media (image, video and 3D), the refusals are the live ones: Camera Input, MIDI Input, Gamepad, OSC, DMX, NDI and Syphon nodes, Audio Output, and the nodes that run someone's code, Script, Lua, p5.js, Hydra and FAUST. A graph built to be played live has to have those unwired, or moved into a copy, before it will render to a file.

For the Web target, the refusals are the file-reading ones instead: Image, Model 3D, Video, Colour Correct and Export all count as file access the browser build does not declare, so a graph that loads an image cannot be exported as a Full App even though the bundle it would write carries that image. Camera, OSC, DMX, NDI and Syphon are refused here too. MIDI, audio output and gamepad nodes are the exception in the other direction: the web target claims them, so the export runs and the page simply has none of it.

The walk covers the nodes in the graph you are exporting. A node sitting inside a subgraph is not inspected, so it neither blocks the export nor gains any support it was missing.

Frame range

Images and video take a Mode: of Current Frame or Custom Range. Current Frame renders the frame at the playhead, which with an image format gives a single still. Custom Range renders an explicit Start to End at a chosen FPS.

Image formats open on Current Frame, video on Custom Range. The range and rate do not follow the project: the panel opens on 0 to 120 at 60 fps whatever the timeline says, so set them for each render. See Time & playback for how the playhead and frame numbers work.

For a numbered image sequence rather than a movie, pick an image format, switch to Custom Range, and point the path at a folder. One file per frame is written, named frame_0000 upward, numbered from the start of the range rather than from the timeline frame.

Resolution and quality

Raster exports use the canvas size, shown as Using graph settings. Tick Custom Resolution to override width and height for this render.

H.264 and VP9 expose a Quality preset: Draft, Preview, High (the default) and Production. 3D exports add Scale:, Up axis:, Include UVs, Include normals and Include materials (USD), and they write the currently selected node's geometry at the current frame.

While it renders

Export switches the panel to a progress view with a live bar and a step count. The render runs in the background, so the rest of the app stays usable. Cancel stops it early, Done closes the view when it finishes. An error mid-render appears here rather than interrupting the session.

Web

The Web target packages the graph as a page you can host anywhere. Choose Full App (WebGPU) for the interactive visual build or Audio Only for the sound-only build, then set a title, background and accent colours, and whether the page autoplays.

The web build is a different runtime from the desktop app. Full App has no audio output and no live inputs (MIDI, OSC, cameras, NDI). Plan web pieces around what runs in a browser. See Web export.

What ships today

Image, video, 3D geometry and Full App web exports run from the panel. An export follows the composition's current render mode, so a path-traced composition renders path-traced rather than dropping back to the realtime renderer, and it renders each frame to convergence rather than shipping the viewport's single noisy sample. See Video & image export for what that costs in time.

An export that runs the machine out of memory sheds its caches once and retries the frame before giving up, so a heavy render is more likely to finish than to fail outright.

Audio does not run. Both audio paths, the Audio type and the Web target's Audio Only mode, need the graph's audio plan handed to them, and the panel starts every export without one, so the run fails immediately with Export failed to start: Audio export requires an audio plan. The offline renderer, the encoders and the browser worklet behind those two buttons are all real and none of them is reached.

Four further target kinds are declared with no code behind them: audio plugins, standalone app builds, embedded builds, and NDI or Syphon as an export target. A CLAP plugin, a standalone audio binary and a C ABI for embedding all exist in the source tree, but they are produced by building the repository, not by this panel. Live NDI and Syphon inputs and outputs work inside the running app, covered in Outputs.

Converting a single Expression to standalone shader source is written and tested and has no trigger anywhere in the app. See Shader export.

Batch queues and output-name tokens are not in the panel. Export carries both: a filename_pattern with a {:06} frame token, and a Batch render mode over a frame range.

See also