Video Hosting

Upload. Transcode.
Host. Play.

Drag a video into the dashboard, or make three API calls — either way it comes out transcoded, on the global CDN, and playing in an embed. Auto ladder by default, full preset and codec control when you need it.

play.transcodely.com upload → streaming, in real time

Drop a video — we take it from here

big-buck-bunny.mp4 276 MB
no file yet waiting for file
What you get

Everything you need to host video

Upload once, get HLS/DASH manifests, thumbnails, embed codes, and per-video cost reporting.

Auto or custom ladder

Upload with zero config and we build a CMAF ABR ladder from your app defaults. Or pick a system preset. Or define your own — up to 20 variants, full per-variant control.

Multi-codec manifests

Ship the same ladder in parallel codecs — e.g., AV1 at 1080p/720p/480p alongside H.264 at 1080p/720p/480p in one manifest. Modern players pick AV1; older devices fall back to H.264.

HLS, DASH & MP4

ABR streaming in HLS or DASH from shared CMAF segments, or progressive MP4 for direct downloads. Every delivery format available per preset.

CDN Delivery

Global edge delivery via BunnyCDN. Videos are unlisted by default (served from unguessable IDs) or public when you choose, and managed storage is locked down by bucket policy so only transcoded outputs are ever public-read.

Embed anywhere

Copy a URL or iframe snippet — ready for any site, CMS, or mobile app. Vidstack-based player with adaptive HLS streaming.

Dashboard managed

Enable hosting, configure auto-profile defaults, create presets, and pick one per upload — all from the dashboard. Per-video and per-month cost analytics built in.

Encoding modes

Zero-config by default.
Deep control when you need it.

Every upload picks one of three modes. All three land in the same dashboard, produce the same playback URLs, and bill the same way.

Recommended

Auto ladder

Upload with no preset and we build a CMAF ABR ladder from your app's auto-profile defaults. Default: HLS + H.264 up to 1080p at Standard quality — plays everywhere.

  • Format: HLS, DASH, or MP4
  • Codec: H.264, HEVC, VP9, or AV1
  • Max resolution: 480p → 2160p
  • Quality: Economy / Standard / Premium
Built-in

System preset

Curated templates for common workflows — mobile-first, broadcast quality, archival, HDR, and more. Pick one at upload time, or duplicate it as a starting point for a custom preset.

  • Read-only, always available
  • One-click duplicate to customize
  • Tuned for specific use cases
Your own

Custom preset

Save your exact encoding recipe once, reuse it on every upload. Full ABR ladder control — up to 20 variants, each with its own resolution, bitrate, CRF, framerate, and quality override.

  • Up to 20 variants per ladder
  • CRF, CBR, or VBR rate control
  • Content-type tuning, HDR, DRM
  • Multi-codec manifests supported

One manifest, two codec ladders

Ship the same ladder in parallel codecs — e.g., AV1 at 1080p, 720p, and 480p alongside H.264 at 1080p, 720p, and 480p, all inside a single HLS or DASH manifest. Modern players pick AV1 and cut your egress bill; older devices fall back to H.264 automatically, at the same resolution tier. Configure the mix in a custom preset.

Built on the Transcodely transcoding API

Prefer to bring your own storage?

Video hosting is an opt-in layer on top of our transcoding API. If you already have S3, GCS, or R2 set up, skip hosting and use the transcoding API directly — same encoder, same presets, same pricing per output minute.

The API

Three calls. That's it.

Get a presigned upload URL, PUT the file, and tell us you're done. We handle the transcoding, packaging, CDN distribution, and playback infrastructure.

upload.ts 3 calls
// 1. Get a presigned upload URL
const { video, uploadUrl } = await client.videos.createUpload({
  appId: "app_k1l2m3n4o5",
  filename: "demo.mp4",
  contentType: "video/mp4",
  sizeBytes: BigInt(file.size),
});

// 2. Upload the file directly to storage
await fetch(uploadUrl, {
  method: "PUT",
  body: file,
  headers: { "Content-Type": file.type },
});

// 3. Tell the API you're done — transcoding starts
const { video: ready } = await client.videos.completeUpload({
  id: video.id,
});

// That's it. Watch for status updates, or just come back later.
console.log(ready.playbackUrl); // https://cdn.../vid_abc.../master.m3u8
Pricing

Transparent pricing

No monthly fees. Pay only for what you use. Encoding, storage, and delivery — all metered.

480p · 720p · 1080p · H264 · 30fps · Standard quality · 3 renditions · encoding base: €0.0225/source min
Higher framerates (60/120fps), Premium quality, HDR, and DRM apply the same transcoding multipliers — see full pricing for the interactive breakdown.
Encoding (3 renditions × 60 min) €1.35
Storage (3.8 GB) €0.08
Delivery (1194.4 GB · ~5-min avg watch/view) €11.94
Estimated monthly total €13.37
5 GB stored = €0.10/mo
≈ 1.3 hour of content on the default ladder
100 GB delivered = €1.00
≈ 46 hours 1080p playback, ≈ 546 views of a 5-min video

Rates: €0.010/output min encoding (per rendition, Standard quality), €0.020/GB·month storage, €0.010/GB egress. See full pricing.

FAQ

Frequently asked questions

What happens when I upload a video?
You pick one of three modes: (1) Auto — uses your app's default profile (format, codec, max resolution, quality tier) to build a CMAF ABR ladder; (2) System preset — ready-made templates for common workflows; (3) Custom preset — your own preset, saved once in the dashboard and reusable across uploads. After upload, we transcode, package, and publish the playback URLs.
What does the default ladder look like?
The app's auto-profile defaults drive it — by default, HLS (CMAF segments) in H.264 up to 1080p at the Standard quality tier, which plays back on every modern browser, iOS, Android, and smart TV. You can change any of those defaults per app from the dashboard.
Can I mix codecs in one manifest?
Yes. HLS and DASH (CMAF) support multi-codec variant streams with player fallback — e.g., the same 1080p/720p/480p ladder in both AV1 and H.264 inside a single manifest. Capable players pick AV1 and save egress; older devices fall back to the H.264 variant at the same resolution. Configure the codec mix in a preset.
What video formats can I upload?
Any common container and codec — MP4, MOV, MKV, WebM, AVI, with H.264, H.265, VP9, AV1, ProRes, and more. Transcodely probes the input automatically and generates your chosen output renditions.
What's the upload size limit?
Up to 5 GB per file via resumable multipart uploads. Uploads chunk automatically, survive network interruptions and resume automatically (per-part retry with fresh URLs), and surface real-time progress in the dashboard or SDK.
Does my video get an HLS stream automatically?
Yes. Every ready video exposes an HLS playback URL (m3u8) with the full ABR ladder your preset defined. DASH and progressive MP4 are available too, generated from the same CMAF segments.
How much of the ladder can I customize?
A preset can hold up to 20 variants, each with its own resolution, bitrate, CRF, framerate, and quality tier override. You control encoder mode (CRF / CBR / VBR), content-type tuning, HDR/DRM, segment duration, and GOP alignment. Save the preset once and reuse it on every upload.
Where do I manage all this?
The Transcodely dashboard. Enable hosting on an app, set its auto-profile defaults, create or duplicate presets, pick a preset at upload time, and view the resulting renditions table with codec, resolution, bitrate, and size for each. System presets are duplicatable into your own custom ones.
How private can my videos be?
Videos are unlisted by default — playable by anyone with the link, but served from an unguessable ID and never listed anywhere — or public when you want to share openly. Your managed storage stays locked down by a bucket policy: only your transcoded outputs are public-read, never your source uploads.
How is my content protected?
Playback URLs use unguessable IDs and unlisted videos are never listed anywhere, so links are not discoverable. Managed storage is locked down by a bucket policy — only your transcoded outputs are public-read, never your source uploads — and cross-origin playback in the browser is enabled via CORS on the delivery zone.
What CDN powers delivery?
Transcodely uses a global CDN with edge caching across multiple continents. You'll see your CDN hostname (e.g. transcodely-app-xxx.b-cdn.net) in the app config once hosting is enabled.
How is hosting billed?
Three line items: €0.010/min for encoding (one-time per video), €0.020/GB/month for storage (metered daily), and €0.010/GB for egress (metered hourly). No monthly fees or commitments.
Is this separate from the transcoding API?
Hosting is built on the same transcoding engine — you can use the transcoding API alone with your own S3/GCS/R2 storage, or enable hosting on an app to have Transcodely handle upload, storage, CDN, and playback end-to-end.

02:34:00 / 02:34:00 · up next

Ready to host your first video?

Sign up, get your API key, and upload a video in under 5 minutes. No credit card required to start.