Skip to content

Preview Videxo runs jobs, accepts uploads up to 100 MB, serves output downloads and sends signed webhooks. Sign in with email, GitHub or a passkey. Payments are not connected yet, so credit packs and paid plans cannot be bought. Read the quickstart

Serverless ffmpeg

Serverless ffmpeg. No binary to package.

Run ffmpeg from a Lambda, a Vercel function or any backend without a layer to package or a timeout to fight: one HTTPS request, billed by the minute of output.

curl "$VIDEXO_API_URL/v1/transcode" \
  -H "Authorization: Bearer $VIDEXO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input": "https://videxo.io/samples/talk.mp4",
  "preset": "web-720p",
  "filename": "talk-720p.mp4",
  "metadata": {
    "order": "1234"
  }
}'

Side by side

Where ffmpeg can run. And what it costs you.

ffmpeg on Videxo, AWS Lambda, Vercel Functions, Cloudflare Workers and your own server or Docker
TopicVidexoAWS LambdaVercel FunctionsCloudflare WorkersYour own server or Docker
The ffmpeg binaryInstalled: ffmpeg 6.1.1.You package a static build as a layer (250 MB unzipped with your code) or a container image.You bundle a static build in the function: 250 MB unzipped, up to 5 GB in the large functions beta.Cannot run it: Workers run JavaScript and WebAssembly, not native programs.You install and patch it, or build and update the image.
Longest run10 min to 60 min a job, by plan.15 minutes an invocation.300 s on Hobby; 800 s on Pro and Enterprise, 1,800 s in beta.5 minutes of CPU time at most; 30 s by default.No limit.
Memory and CPUNothing to set: inputs of 1 GB to 10 GB a job, by plan.128 MB to 10,240 MB; CPU grows with memory, one vCPU at 1,769 MB.2 GB and 1 vCPU; up to 4 GB and 2 vCPUs on Pro.128 MB an isolate.What you buy.
Files in and outInput URLs in; outputs stored with SHA-256 and expiry; a signed webhook.Your code moves files to and from S3 and /tmp.Request and response bodies up to 4.5 MB; your code moves files through storage.Your code, within the memory limit.Your code and your disks.
Billing12 credits a minute of 1080p output, less at lower quality, plus 10 credits a GB in and out.Requests plus duration times memory, by the millisecond.Active CPU time, provisioned memory time and invocations, at the region’s rates.Requests plus CPU time.Every hour the machine is on, busy or idle.
One 61 s job45 credits: 30 for 5 minutes of 720p output, 15 for 1.5 GB in and out.$0.0102 of compute at 10,240 MB ($0.0000166667 a GB-second, x86, us-east-1), plus requests, S3 and data transfer, and the layer and file handling you write.Active CPU and memory time at the region’s rates (in iad1 $0.128 an hour of CPU and $0.0106 a GB-hour), if the job fits the duration and memory limits.Cannot run it.Your share of the machine’s hours, and the time you spend keeping it running.
  • Videxo

    The ffmpeg binary
    Installed: ffmpeg 6.1.1.
    Longest run
    10 min to 60 min a job, by plan.
    Memory and CPU
    Nothing to set: inputs of 1 GB to 10 GB a job, by plan.
    Files in and out
    Input URLs in; outputs stored with SHA-256 and expiry; a signed webhook.
    Billing
    12 credits a minute of 1080p output, less at lower quality, plus 10 credits a GB in and out.
    One 61 s job
    45 credits: 30 for 5 minutes of 720p output, 15 for 1.5 GB in and out.
  • AWS Lambda

    The ffmpeg binary
    You package a static build as a layer (250 MB unzipped with your code) or a container image.
    Longest run
    15 minutes an invocation.
    Memory and CPU
    128 MB to 10,240 MB; CPU grows with memory, one vCPU at 1,769 MB.
    Files in and out
    Your code moves files to and from S3 and /tmp.
    Billing
    Requests plus duration times memory, by the millisecond.
    One 61 s job
    $0.0102 of compute at 10,240 MB ($0.0000166667 a GB-second, x86, us-east-1), plus requests, S3 and data transfer, and the layer and file handling you write.
  • Vercel Functions

    The ffmpeg binary
    You bundle a static build in the function: 250 MB unzipped, up to 5 GB in the large functions beta.
    Longest run
    300 s on Hobby; 800 s on Pro and Enterprise, 1,800 s in beta.
    Memory and CPU
    2 GB and 1 vCPU; up to 4 GB and 2 vCPUs on Pro.
    Files in and out
    Request and response bodies up to 4.5 MB; your code moves files through storage.
    Billing
    Active CPU time, provisioned memory time and invocations, at the region’s rates.
    One 61 s job
    Active CPU and memory time at the region’s rates (in iad1 $0.128 an hour of CPU and $0.0106 a GB-hour), if the job fits the duration and memory limits.
  • Cloudflare Workers

    The ffmpeg binary
    Cannot run it: Workers run JavaScript and WebAssembly, not native programs.
    Longest run
    5 minutes of CPU time at most; 30 s by default.
    Memory and CPU
    128 MB an isolate.
    Files in and out
    Your code, within the memory limit.
    Billing
    Requests plus CPU time.
    One 61 s job
    Cannot run it.
  • Your own server or Docker

    The ffmpeg binary
    You install and patch it, or build and update the image.
    Longest run
    No limit.
    Memory and CPU
    What you buy.
    Files in and out
    Your code and your disks.
    Billing
    Every hour the machine is on, busy or idle.
    One 61 s job
    Your share of the machine’s hours, and the time you spend keeping it running.

Limits and prices as documented on 2026-11-05 (Workers on 2026-11-04): Lambda quotas Lambda pricing Vercel Functions limits Vercel Functions pricing Workers limits

The request

Your function, one request. No binary, no scratch disk.

Send the input URL and a preset from any function, a Lambda, a Worker or your own server. The job returns the ffmpeg command it runs, and a signed webhook arrives when the files are ready.

TypeScript SDK
curl "$VIDEXO_API_URL/v1/transcode" \
  -H "Authorization: Bearer $VIDEXO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input": "https://videxo.io/samples/talk.mp4",
  "preset": "web-720p",
  "filename": "talk-720p.mp4",
  "metadata": {
    "order": "1234"
  }
}'

Billing

Pay for the minutes you get. Not for a machine that waits.

A job costs its minutes of output by quality, and the gigabytes it fetched and stored. Waiting in the queue costs nothing, and each second of output includes 3 seconds of ffmpeg.

Pricing and the cost calculator

The example job from the docs: a 720p transcode

30 + 15 = 45 credits

Minutes of output
5 min × 6 = 30 credits
Gigabytes in and out
1.5 GB × 10 = 15 credits

Starter is $19 a month with 25,000 credits included.

Honestly

When to keep your own. It is sometimes the right call.

  • Files are a few megabytes and jobs take seconds: a Lambda layer or a Vercel function is enough, and costs less.
  • The media must not leave your own cloud account.
  • Your commands need ffmpeg options or filters beyond the supported list.

Questions, answered.

Can ffmpeg run on AWS Lambda?

Yes, from a static build in a layer or a container image. A run stops at 15 minutes, memory is at most 10,240 MB, and your code moves the files to and from S3 and /tmp.

Can ffmpeg run in Cloudflare Workers?

Not as a native program: Workers run JavaScript and WebAssembly. A WebAssembly build of ffmpeg has to fit, with the video it works on, in 128 MB. With Videxo a Worker sends one HTTPS request instead.

Can ffmpeg run on Vercel?

As a static build bundled into a function: 250 MB unzipped at most (5 GB in the large functions beta), 300 s a run on Hobby and 800 s on Pro, 2 GB of memory or 4 GB on Pro, and request and response bodies up to 4.5 MB, so files go through storage. From a Vercel function you can also send one request to this API and let the job run here.

What about ffmpeg in Docker?

A Docker image with ffmpeg runs anywhere you run containers, without a time limit, but you build and update the image, size and pay for the machines whether they are busy or idle, and run the queue and storage around it.

Is Videxo serverless?

For you, yes: there is nothing to deploy or keep running, and you pay for the seconds ffmpeg runs and the gigabytes it reads and writes. Your personal organization gets 500 free credits once, with no card.

How long does a job take to start?

Startup includes waiting for a free slot of your plan and reading the inputs. Every job records its created_at and started_at, so you can see how long it waited.

Run your first job. Free, no card.