Skip to main content

Server-Side Rendering

Remotion's rendering engine is built with Node.JS, which makes it easy to render a video in the cloud.

Render a video on AWS Lambda

The easiest and fastest way to render videos in the cloud is to use @remotion/lambda.

Render a video using Node.js APIs

We provide a set of APIs to render videos using Node.js and Bun.
See an example or the API reference for more information.

Render using GitHub Actions

You can render a video on GitHub actions. The following workflow assumes a composition ID of MyComp

yaml
name: Render video
on:
workflow_dispatch:
jobs:
render:
name: Render video
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- uses: actions/setup-node@main
- run: npm i
- run: npx remotion render MyComp out/video.mp4
- uses: actions/upload-artifact@v2
with:
name: out.mp4
path: out/video.mp4
yaml
name: Render video
on:
workflow_dispatch:
jobs:
render:
name: Render video
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- uses: actions/setup-node@main
- run: npm i
- run: npx remotion render MyComp out/video.mp4
- uses: actions/upload-artifact@v2
with:
name: out.mp4
path: out/video.mp4

With input props

If you have props, you can ask for them using the GitHub Actions input fields.
Here we assume a shape of {titleText: string; titleColor: string}.

yaml
name: Render video
on:
workflow_dispatch:
inputs:
titleText:
description: 'Which text should it say?'
required: true
default: 'Welcome to Remotion'
titleColor:
description: 'Which color should it be in?'
required: true
default: 'black'
jobs:
render:
name: Render video
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- uses: actions/setup-node@main
- run: npm i
- run: echo $WORKFLOW_INPUT > input-props.json
env:
WORKFLOW_INPUT: ${{ toJson(github.event.inputs) }}
- run: npx remotion render MyComp out/video.mp4 --props="./input-props.json"
- uses: actions/upload-artifact@v2
with:
name: out.mp4
path: out/video.mp4
yaml
name: Render video
on:
workflow_dispatch:
inputs:
titleText:
description: 'Which text should it say?'
required: true
default: 'Welcome to Remotion'
titleColor:
description: 'Which color should it be in?'
required: true
default: 'black'
jobs:
render:
name: Render video
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@main
- uses: actions/setup-node@main
- run: npm i
- run: echo $WORKFLOW_INPUT > input-props.json
env:
WORKFLOW_INPUT: ${{ toJson(github.event.inputs) }}
- run: npx remotion render MyComp out/video.mp4 --props="./input-props.json"
- uses: actions/upload-artifact@v2
with:
name: out.mp4
path: out/video.mp4

Commit the template to a GitHub repository.
2
On GitHub, click the Actions tab.
3
Select the Render video workflow on the left.
4
A Run workflow button should appear. Click it.
5
Fill in the props of the root component and click Run workflow.
6
After the rendering is finished, you can download the video under Artifacts.

Note that running the workflow may incur costs. However, the workflow will only run if you actively trigger it.

See also: Passing input props in GitHub Actions

Render a video using Docker

See: Dockerizing a Remotion project

Render a video using GCP Cloud Run (Alpha)

Check out the experimental Cloud Run package.
Our plan is to port the Lambda runtime to Cloud Run instead of maintaining a separate implementation.

API reference