Skip to content

Web Ready Video

The webReady recipe optimizes videos for web delivery — browser playback, embeds, and social sharing — without obvious quality loss. Xora probes the source first, then picks the cheapest path that still meets your goals.

Source conditionStrategy
H.264 video, AAC/MP3 audio, MP4/MOV container, reasonable bitrate, and faststart already presentpassthrough: return your original input URL — no ffmpeg run
Browser-compatible source, faststart missing, no explicit encode settingsfaststart_remux: stream-copy and move MP4 metadata to the front
Unsupported codec/container, high bitrate, or explicit encode settings (crf, bitrateKbps, scaleDown, width, height)web_encode: H.264/AAC MP4 with fast-decode settings and one keyframe per second
Terminal window
curl -X POST https://api.xora.sh/v1/jobs \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "recipe",
"input": {
"url": "https://example.com/upload.mov"
},
"output": {
"format": "mp4"
},
"recipe": {
"name": "webReady"
}
}'

Setting encode options forces a re-encode even when the source is browser-compatible:

{
"mode": "recipe",
"input": { "url": "https://example.com/large-upload.mp4" },
"output": { "format": "mp4" },
"recipe": {
"name": "webReady",
"scaleDown": true,
"height": 720,
"crf": 26
}
}
ParameterTypeRequiredDefaultDescription
namestringYesMust be "webReady"
scaleDownbooleanNofalseDownscale when re-encoding. Ignored on passthrough/remux paths.
widthnumberNoautoOutput width when scaling
heightnumberNo720Output height when scaleDown is true
crfnumberNo26Quality when re-encoding (lower = higher quality)
bitrateKbpsnumberNoTarget video bitrate; overrides CRF when set
startSecondsnumberNoOptional start offset in seconds
durationSecondsnumberNoOptional duration limit in seconds

webReady requires MP4 output:

"output": { "format": "mp4" }
Use webReady when…Use proxy when…Use compress when…
Web playback and sharingTimeline editing and scrubbingYou always want a CRF-controlled re-encode
Source may already be web-readyYou always want re-encodeNo passthrough/remux shortcuts
Optional smaller delivery via CRF/scaleOptional all-intra keyframesPredictable encode every time