Write
Renders its input to files on disk (Render > Render All, F5).
| Node | Write |
|---|---|
| Menu | Input/Output › Write |
| Names in each format | |
| .oink comp (JSON) | "type": "OC_N_write" |
| .nk script | Write (how .nk import works) |
| Python | nuke.createNode("Write") |
| Assistant (MCP) | create_node(type="Write") |
| Tab search | write |

Pick the file name and file type (typing a name with an extension sets the type). Use #### or %04d for the frame number. Image types: exr, dpx, tiff, png, jpeg. Movie types: mov, mxf, webm, gif, animated webp and avif, written as one file per render. The output transform defaults by file type (movies Rec.1886, web formats sRGB).
Each frame is written to a hidden temporary file and renamed when complete, so a stopped render never leaves a half file. Frames with NaN or infinite pixels, or all black, are flagged in the render report. The proxy file is written instead when rendering with proxy. Views takes a list of views to render.
Inputs and outputs
| Port | Name | Type |
|---|---|---|
| input 0 | Image | image |
Knobs
Panel tab Write, in panel order.
| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
channels | channels | menu | rgb | rgb, rgba, all | channels | |
filepath | file | file | file | Output path; #### or %04d = frame number | ||
proxy | proxy | file | proxy | File written instead when rendering in proxy mode | ||
frame_mode | frame | menu | EXPRESSION | EXPRESSION (expression), START_AT (start at), OFFSET (offset) | frame_mode | |
frame | text | frame | Expression (e.g. frame-1000), start number, or offset of the file number; empty = frame | |||
colorspace | output transform | menu | default | default (default (by file type)) | colorspace | OCIO colorspace to write; 'default' = by file type (float=linear, dpx=compositing_log, 8/16-bit=sRGB) |
premultiplied | premultiplied | bool | false | premultiplied | Unpremultiply around the colorspace conversion | |
raw | raw data | bool | false | raw | Write working-space values unconverted | |
views | views | text | views | Views to render (space separated); empty = every project view | ||
file_format | file type | menu | EXR | EXR (exr), DPX (dpx), TIFF (tiff), PNG (png), JPEG (jpeg), MOV (mov), MXF (mxf), WEBM (webm), GIF (gif), WEBP (webp (animated)), AVIF (avif (animated)) | ||
write_ACES_compliant_EXR | write ACES compliant EXR | bool | false | write_ACES_compliant_EXR | 16 bit half, no compression, rgb / rgba only, ACES chromaticities + container flag | |
autocrop | autocrop | bool | false | autocrop | Data window = the non-zero area of the image | |
exr_datatype | datatype | menu | HALF | HALF (16 bit half), FLOAT (32 bit float) | ||
exr_compression | compression | menu | zips | none, zips (Zip (1 scanline)), zip (Zip (16 scanlines)), rle (RLE), piz (PIZ Wavelet (32 scanlines)), pxr24 (PXR24 (lossy)), b44 (B44 (lossy)), b44a (B44A (lossy)), dwaa (DWAA (lossy)), dwab (DWAB (lossy)) | ||
dw_compression_level | compression level | float | 45 | 0 to 500 | dw_compression_level | DWAA/DWAB quality (higher = smaller, lossier) |
heroview | heroview | text | heroview | Main view of a multi-view EXR (kept for .nk) | ||
exr_metadata | metadata | menu | default | none (no metadata), default (default metadata), exr (default metadata and exr/), noinput (all metadata except input/), all (all metadata) | metadata | |
noprefix | do not attach prefix | bool | false | noprefix | Unknown metadata keys written as they are (else nuke/<key>) | |
interleave | interleave | menu | channels, layers and views | channels, layers and views, channels and layers, channels | interleave | |
first_part | first part | text | first_part | Layer written as the first part (interleave channels) | ||
standard_layer_name_format | standard layer name format | bool | false | standard_layer_name_format | layer.view.channel for multi-view files (kept for .nk: one view per file here) | |
write_full_layer_names | write full layer names | bool | false | write_full_layer_names | Name the main layer's channels rgba.R ... instead of R ... | |
truncateChannelNames | truncate channel names | bool | false | truncateChannelNames | Channel names cut to 31 characters | |
dpx_datatype | data type | menu | 10 | 8 (8 bit), 10 (10 bit), 12 (12 bit), 16 (16 bit) | ||
dpx_fill | fill | bool | false | fill | 10 / 12 bit filled to 16-bit words (Method A) instead of packed | |
dpx_big_endian | big endian | bool | true | bigEndian | ||
dpx_transfer | transfer | menu | auto | auto ((auto detect)), User defined (user defined), Printing density (printing density), Linear (linear), Logarithmic (log), Unspecified video (unspecified video), SMPTE 274M (SMPTE 240M), ITU-R 709-4 (CCIR 709-1), ITU-R 601-5 system B or... | transfer | |
tiff_datatype | data type | menu | 8 | 8 (8 bit), 16 (16 bit), FLOAT (32 bit float) | ||
tiff_compression | compression | menu | zip | none, packbits (PackBits), lzw (LZW), zip (Deflate) | ||
png_datatype | data type | menu | 8 | 8 (8 bit), 16 (16 bit) | ||
jpeg_quality | quality | float | 0.75 | 0 to 1 | _jpeg_quality | |
jpeg_sub_sampling | sub-sampling | menu | 4:1:1 | 4:1:1, 4:2:2, 4:4:4 | _jpeg_sub_sampling | |
mov64_format | mov format | menu | mov | mov (mov (QuickTime / MOV)), mp4 (mp4 (MPEG-4 Part 14)), mkv (mkv (Matroska)) | ||
mov64_codec | codec | menu | appr | appr (Apple ProRes), AVdn (Avid DNxHD), AVdh (Avid DNxHR), h264 (H.264), hevc (H.265 / HEVC), av1 (AV1), vp9 (VP9), mjpa (Motion JPEG A), png (PNG), rle (Animation) | ||
mov_prores_codec_profile | codec profile | menu | hq | proxy (ProRes 4:2:2 Proxy 10-bit), lt (ProRes 4:2:2 LT 10-bit), standard (ProRes 4:2:2 10-bit), hq (ProRes 4:2:2 HQ 10-bit), 4444 (ProRes 4:4:4:4 10-bit), 4444xq (ProRes 4:4:4:4 XQ 10-bit) | ||
dnxhd_codec_profile | dnxhd profile | menu | 145 | 36 (DNxHD 422 8-bit 36Mbit), 145 (DNxHD 422 8-bit 145Mbit), 220 (DNxHD 422 8-bit 220Mbit), 220x (DNxHD 422 10-bit 220Mbit) | Bitrates for 29.97/30 fps; other rates use the matching VC-3 bitrate | |
dnxhr_codec_profile | dnxhr profile | menu | hq | lb (DNxHR LB 4:2:2 8-bit), sq (DNxHR SQ 4:2:2 8-bit), hq (DNxHR HQ 4:2:2 8-bit), hqx (DNxHR HQX 4:2:2 10-bit), 444 (DNxHR 444 4:4:4 10-bit) | ||
mov_h264_codec_profile | h264 profile | menu | 420_8 | 420_8 (High 4:2:0 8-bit), 420_10 (High 10 4:2:0 10-bit) | ||
mov_hevc_codec_profile | hevc profile | menu | main10 | main (Main 4:2:0 8-bit), main10 (Main 10 4:2:0 10-bit), main422_10 (Main 4:2:2 10-bit) | ||
mov64_encoder | encoder | menu | software | software, nvenc (NVENC (GPU)) | H.264 / HEVC / AV1 encoder (not in Nuke: ours) | |
mov64_quality | quality | menu | High | Low, Medium, High, Best | Constant quality of the long-GOP codecs (H.264 crf 18 at High), Motion JPEG, WebP | |
mov64_limit_bitrate | limit bitrate | bool | false | Encode at the bitrate knob instead of a constant quality | ||
mov64_bitrate | bitrate | float | 28000 | 100 to 2000000 (integer) | kbit/s (limit bitrate on) | |
mov64_gop_size | gop size | float | 12 | 0 to 10000 (integer) | Frames between keyframes (H.264 / HEVC / AV1 / VP9); 0 = the encoder's default | |
mov64_b_frames | b frames | float | 0 | 0 to 16 (integer) | B frames between reference frames | |
mov64_ycbcr_matrix_type | ycbcr matrix | menu | auto | auto (Auto), rec601 (Rec 601), rec709 (Rec 709), rec2020 (Rec 2020) | ||
dataRange | data range | menu | video | video (Video Range), full (Full Range) | ||
mov64_fps | fps | float | 0 | 0 to 240 | Frame rate of the movie; 0 = the script's fps | |
mov64_audiofile | audio file | file | Audio muxed into the movie (cut to the movie's length) | |||
mov64_write_timecode | write timecode | bool | true | QuickTime timecode track: the start timecode knob, else the input's timecode metadata, else the first frame number at the movie's fps | ||
mov64_timecode | start timecode | text | HH:MM:SS:FF of the first frame; empty = the input's timecode, else frame / fps | |||
mov64_fast_start | fast start | bool | true | Index at the start of the file (plays while loading) | ||
create_directories | create directories | bool | false | create_directories | Create missing folders in the output path | |
render_order | render order | float | 1 | -100 to 100 (integer) | render_order | Writes render in ascending order when several render together |
first | frame range | float | 1 | -100000 to 100000 (integer) | first | |
last | to | float | 100 | -100000 to 100000 (integer) | last | |
use_limit | limit to range | bool | false | use_limit | ||
reading | read file | bool | false | reading | Nuke passes the written file downstream (kept for .nk: this Write has no output) | |
on_error | missing frames | menu | ERROR | ERROR (error), BLACK (black), CHECKERBOARD (checkerboard), NEAREST (nearest frame) | on_error | Read file side (kept for .nk) |
read_all_lines | read all lines | bool | false | read_all_lines | Kept for .nk (Reads always read whole frames here) | |
key1 | key1 | text | key1 | |||
value1 | value1 | text | value1 | |||
key2 | key2 | text | key2 | |||
value2 | value2 | text | value2 | |||
key3 | key3 | text | key3 | |||
value3 | value3 | text | value3 | |||
key4 | key4 | text | key4 | |||
value4 | value4 | text | value4 | |||
beforeRender | before render | text | beforeRender | |||
beforeFrameRender | before each frame | text | beforeFrameRender | |||
afterFrameRender | after each frame | text | afterFrameRender | |||
afterRender | after render | text | afterRender | |||
renderProgress | render progress | text | renderProgress |
Other knobs (Python, .nk and the assistant; not on the panel)
| Knob | Label | Type | Default | Range / values | .nk knob | Description |
|---|---|---|---|---|---|---|
gl_color | Viewer Controls Color | float ×3 | 0, 0, 0 | 0 to 1 | ||
postage_stamp_frame | Static Frame | int | 1 | -2147483648 to 2147483647 | ||
lifetimeStart | Lifetime Start | int | 0 | -2147483648 to 2147483647 | ||
lifetimeEnd | Lifetime End | int | 100 | -2147483648 to 2147483647 | ||
useLifetime | Use Lifetime | boolean | false | |||
cached | Cached | boolean | false | |||
bookmark | Bookmark | boolean | false | |||
dope_sheet | Dope Sheet | boolean | false | |||
clone_group | Clone Group | string | ||||
link_source | Link Source | string | ||||
link_overrides | Link Overrides | string | ||||
split_views | Split Views | string | ||||
checkHashOnRead | Check Hash On Read | boolean | false | checkHashOnRead | ||
version | Version | int | 0 | -2147483648 to 2147483647 | version | Nuke's Write version counter (.nk) |
last_written | last_written | string | ||||
last_check | last_check | string |
Knob names in .nk scripts
| .nk knob | Knob here |
|---|---|
file | filepath |
_jpeg_quality | jpeg_quality |
_jpeg_sub_sampling | jpeg_sub_sampling |
metadata | exr_metadata |
fill | dpx_fill |
bigEndian | dpx_big_endian |
transfer | dpx_transfer |
Other .nk knobs use the same name here. See .nk import.