LinuxCommandLibrary

blender

Run the Blender 3D creation suite

TLDR

Render all frames of an animation in the background, without loading the UI (output is saved to /tmp)

$ blender [[-b|--background]] [path/to/file.blend] [[-a|--render-anim]]
copy

Render an animation using a specific image naming pattern, in a path relative (//) to the .blend file
$ blender [[-b|--background]] [path/to/file.blend] [[-o|--render-output]] //[render/frame_###.png] [[-a|--render-anim]]
copy

Render the 10th frame of an animation as a single image, saved to an existing directory (absolute path)
$ blender [[-b|--background]] [path/to/file.blend] [[-o|--render-output]] /[path/to/output_directory] [[-f|--render-frame]] [10]
copy

Render the second last frame in an animation as a JPEG image, saved to an existing directory (relative path)
$ blender [[-b|--background]] [path/to/file.blend] [[-o|--render-output]] //[output_directory] [[-f|--render-frame]] [JPEG] [[-f|--render-frame]] [-2]
copy

Render the animation of a specific scene, starting at frame 10 and ending at frame 500
$ blender [[-b|--background]] [path/to/file.blend] [[-S|--scene]] [scene_name] [[-s|--frame-start]] [10] [[-e|--frame-end]] [500] [[-a|--render-anim]]
copy

Render an animation at a specific resolution, by passing a Python expression
$ blender [[-b|--background]] [path/to/file.blend] --python-expr '[import bpy; bpy.data.scenes[0].render.resolution_percentage = 25]' [[-a|--render-anim]]
copy

Start an interactive Blender session in the terminal with a Python console (do import bpy after starting)
$ blender [[-b|--background]] --python-console
copy

SYNOPSIS

blender [options] [file.blend] [--]

PARAMETERS

-b, --background
    Run in background mode (headless, no GUI)

-P
    Execute Python script filepath

-f [frame ...]
    Render specific frame(s), e.g., -f 1 10 100

-s
    Set start to frame for rendering

-e
    Set end to frame for rendering

-a
    Render all animation frames

-S
    Set scene by name

-F
    Set render output format (PNG, JPEG, etc.)

-o
    Set render output path/template

-t
    Use specified threads (0 for auto)

-d
    Turn debugging on

--debug-all
    Enable all debugging output

--factory-startup
    Skip loading recent files/user prefs

--version
    Print version info and exit

-h, --help
    Show help message

DESCRIPTION

Blender is a powerful, free, and open-source 3D creation tool used for modeling, sculpting, texturing, rigging, animation, simulation, rendering, compositing, motion tracking, video editing, and game creation. On Linux, the blender command launches the graphical application or performs headless operations like rendering and Python scripting. It supports industry-standard formats and integrates with pipelines via command-line options. Ideal for artists, VFX professionals, and developers, Blender's CLI enables batch processing, automation, and server-side rendering without the GUI, making it efficient for farms or scripts. Its node-based material system, Cycles/EEVEE render engines, and Python API extend its versatility. Regularly updated with new features like geometry nodes and GPU rendering improvements.

CAVEATS

Full option list varies by version; use blender --help. Some features require GPU drivers. Large scenes may need high RAM.

RESOURCES

Official docs: docs.blender.org
Python API: blender.org/api

USAGE TIP

Batch render: blender -b file.blend -f 1-100 -o /path/#####.png
Run script: blender -b -P myscript.py

HISTORY

Created by Ton Roosendaal in 1994 as internal tool at NeoGeo; acquired by Not a Number (NaN) in 1998, bankrupted 2002 leading to open-sourcing via Blender Foundation. Linux native since inception; CLI evolved for rendering farms.

SEE ALSO

man(1), python(1)

Copied to clipboard