Xora
Developer Infrastructure Comparison

Xora vs. Rendi

Running FFmpeg in the cloud shouldn't penalize your file sizes or lock you into proprietary hosting. Here is a head-to-head breakdown of billing, features, and storage architectures.

Feature Rendi (rendi.dev) Xora (xora.sh)
Billing Model Processed File Size (GB) Credits — processing time + output produced
Storage Architecture Locked in Rendi's servers Bring Your Own Bucket (BYOB) to Cloudflare R2
Egress Bandwidth Fees Free (no egress or ingress fees) Free ($0.00) via direct BYOB writes
Pre-built Recipes No (custom command strings only) Yes (9 recipes like webReady, plus a probe mode)
Command Format Single command string (quoting and escaping are on you) JSON args array — nothing to quote or inject
Free Tier Limit 50 GB / mo ($5 card hold; 1-minute job cap) 25 credits / month (no card required)

Billing Mechanics: Processed GB vs. Credits

Rendi charges based on total file sizes. Xora charges credits for the work a job actually performs — processing time plus output produced. See how this affects your bill.

Scenario A

Thumbnail seek from 2 GB video

Extracting a single JPEG preview frame at the 10-second mark of a raw upload.

Rendi Pricing

~$0.50

Bills input + output sizes: 2.0 GB, about $0.50 of the Pro plan's $25 / 100 GB — still $0.20 even at their cheapest tier's $0.10/GB.

Xora Pricing

~0.1 credits

A ranged read grabs the frame — the 2 GB never moves. About $0.004 at Build's ~4¢/credit.

Scenario B

High-compression of 50 MB video

Running a heavy CPU transcode that takes 3 minutes of processing.

Rendi Pricing

~$0.02

Bills 75 MB of input + output — about 2¢ at the Pro plan's $25 / 100 GB.

Xora Pricing

~3.3 credits

3 minutes of processing + 0.25 credits for the 25 MB output — about $0.12 at Build's ~4¢/credit.

Shell Command vs. Arguments Array

Rendi takes the whole job as a single command string. When your application assembles that string from dynamic values — file names, user-supplied text for a drawtext overlay — quoting and escaping those values correctly is your job, and a missed quote means a broken or misbehaving command.

Xora takes an arguments array. Each element reaches the FFmpeg process exactly as written — no shell string to assemble, nothing to quote, nothing to inject — so an apostrophe in a user's caption can't rewrite your command.

Rendi Payload (String Command)
{
  "ffmpeg_command": "-i {{in_1}} -vf \"drawtext=text='CONFIDENTIAL':x=10:y=10:fontsize=24\" -c:v libx264 -crf 23 {{out_1}}",
  "input_files": { "in_1": "https://example.com/source.mov" },
  "output_files": { "out_1": "output.mp4" }
}
Xora Payload (Safe Args Array)
{
  "mode": "ffmpeg",
  "input_files": { "in_1": "https://example.com/source.mov" },
  "output_files": { "out_1": "output.mp4" },
  "ffmpeg": {
    "args": [
      "-i", "{{in_1}}",
      "-vf", "drawtext=text='CONFIDENTIAL':x=10:y=10:fontsize=24",
      "-c:v", "libx264",
      "-crf", "23",
      "{{out_1}}"
    ]
  }
}

Two Major Architecture Upgrades

1. Direct Storage Delivery (BYOB)

Rendi stores output files in its own hosted storage — public by default, with private storage and presigned URLs reserved for paid plans — and your app pulls them from there. That's an extra network hop, a storage bill metered per GB-month, and your media living on a third party.

Xora writes final transcoded files directly into your own Cloudflare R2 bucket. Outputs land in storage you control the moment the job completes, and you pay Xora $0.00 in egress fees.

2. Pre-configured Recipes

Rendi requires you to write the raw FFmpeg command string for every single task, whether it is complex or simple.

Xora provides 9 pre-built recipes (like webReady, proxy, compress, trim, and thumbnail) plus a dedicated probe mode for inspecting media without transcoding. The webReady recipe even probes files automatically, performing simple metadata remuxes in milliseconds and only re-encoding when absolutely necessary.

Ready to migrate to Xora?

Configure your API credentials, test custom commands, and pay only for the credits your jobs actually use.