Why I Built Transcodely
After a decade of fighting overpriced transcoding services, misleading pricing, and manual VMAF calculations, I built the encoding API I always wanted.
I spent the better part of a decade building and running a video platform. Along the way, I tried every transcoding service on the market, built my own encoding pipeline from scratch, and learned more about video compression than I ever planned to. Transcodely is the product of everything I wished existed during those years.
This is the story of how it came to be.
The gaming platform that started it all
About ten years ago, I built GameLeap — a video platform for competitive gaming tutorials. Think Coursera or Udemy, but for Dota 2, Overwatch, and Fortnite. Pro players and coaches would record in-depth strategy guides, and subscribers would watch them to improve their gameplay.
The product was straightforward: creators upload videos, we transcode them into adaptive streaming formats, and viewers watch them in a browser. Simple enough in theory. In practice, video transcoding turned out to be one of the most expensive and frustrating parts of the entire stack.
$1,000 per month for transcoding
When I launched GameLeap, I chose Zencoder (later acquired by Brightcove) as our transcoding provider. At the time, it was one of the most affordable options available. Even so, our transcoding bill quickly climbed to roughly $1,000 per month.
That was painful for a bootstrapped startup, but the real kicker was the 60fps problem. Gaming content needs to be encoded at 60 frames per second — viewers can immediately tell the difference between 30fps and 60fps in a fast-paced game like Overwatch. But Zencoder charged by the minute of output, and 60fps content effectively doubled our encoding costs because the processing time scaled with frame count.
For a platform where every tutorial was recorded at 60fps, this was not a minor surcharge. It was a fundamental cost driver that threatened the economics of the entire business.
Building our own transcoder
After a few months of watching our Zencoder invoices climb, I made the decision to build an in-house transcoding pipeline. The core stack was straightforward: FFmpeg for encoding and Shaka Packager for generating DASH and HLS manifests.
The implementation took a few weeks of intense work — configuring encoding profiles, setting up a job queue, handling failures and retries, managing storage, and testing across dozens of device and browser combinations. It was not glamorous work, but the results were immediate.
Our transcoding costs dropped by roughly 7-8x. The same volume of content that cost us $1,000/month through Zencoder now cost around $130/month in compute. Over the years that followed, this single decision saved us somewhere between $60,000 and $100,000 — money that went directly into product development and content instead.
But building a transcoder was only the beginning. Once you control the encoding pipeline, you start seeing opportunities for optimization everywhere.
The rabbit hole of quality optimization
VMAF and the quest for measurable quality
One of the first things I wanted was a way to objectively measure video quality. Not “does this look good to me on my monitor,” but a reproducible, numerical score that correlated with how real viewers perceive quality.
That led me to VMAF (Video Multiframe Assessment by Fusion), Netflix’s perceptual quality metric. VMAF gives you a score from 0 to 100, where 93+ is generally considered “excellent” — indistinguishable from the source for most viewers.
The problem was that none of the transcoding services I evaluated offered VMAF-targeted encoding. If I wanted to encode to a specific VMAF score instead of a fixed bitrate, I had to do it myself. That meant compiling FFmpeg with VMAF support (which was not trivial at the time), running test encodes, analyzing the results, and iterating on the encoding parameters until I hit the target quality.
It worked, and the quality improvements were significant. But it was entirely manual, and it took hours of compute time per video to get right.
VP9 for browsers and the bandwidth payoff
Gaming audiences overwhelmingly use desktop browsers — specifically Chrome and Firefox. Both have excellent VP9 hardware decoding support. I realized that if I added VP9 as a second codec alongside H.264, browsers that supported it would automatically select the VP9 rendition, which was roughly 30-35% smaller at the same visual quality.
Smaller files meant less bandwidth, and less bandwidth meant lower CDN costs. We were using Cloudflare as our CDN, and while their pricing is more generous than most, every byte still matters when you are streaming hours of video content per day. I spent weeks tuning the file size-to-quality ratio to minimize origin fetches and cache misses.
Extending the video player
The VP9 optimization created a new problem: our video player did not support mixed frame rate streams. GameLeap content was all 60fps, but some of our adaptive bitrate ladder included lower resolutions at 30fps for bandwidth-constrained viewers.
I ended up extending Flow Player to properly handle multi-FPS streams in the same manifest. It was the kind of deep integration work that no transcoding API handles for you — and another week of work that I would rather have spent on features.
Why existing services still are not good enough
After years of running our in-house pipeline, I periodically re-evaluated the market to see if any service had caught up. None had.
AWS MediaConvert: the pricing labyrinth
I evaluated AWS MediaConvert expecting it to be competitive, given Amazon’s scale. Instead, I found one of the most confusing pricing structures I have ever seen.
The base rate for HD H.264 encoding is around $0.015 per minute — not unreasonable. But the real cost depends on a maze of multipliers: Professional tier vs. Basic tier, codec multipliers (AV1 runs 7x to 10.5x the base rate), resolution multipliers, HDR surcharges, and frame rate adjustments. There are over 50 multiplier combinations.
I ran the numbers for our specific workload and found that MediaConvert would actually be more expensive than Zencoder had been. For a service backed by the world’s largest cloud provider, the pricing felt deliberately opaque.
Zencoder deleting job history
During my time with Zencoder, I discovered something that still bothers me. After roughly two years, Zencoder silently deleted our historical job data. Jobs we had run, their parameters, their output — all gone.
For a paid service, this was unacceptable. Job history is not just an operational convenience; it is an audit trail. When a customer reports a quality issue with a video uploaded 18 months ago, you need to be able to look up exactly how it was encoded. Zencoder made that impossible.
No VMAF-targeted encoding anywhere
The most fundamental gap across every service I evaluated was the absence of VMAF-targeted encoding. Every provider offers bitrate-based encoding: you specify a target bitrate, and the encoder hits that number regardless of the content.
But bitrate is a terrible proxy for quality. A static interview needs far less bitrate than a fast-paced gaming montage to achieve the same perceived quality. Without VMAF targeting, you either over-encode simple content (wasting bandwidth and money) or under-encode complex content (delivering poor quality).
I had been doing VMAF-targeted encoding in-house for years. It seemed obvious that a transcoding API should offer this as a first-class feature. None did.
What Transcodely does differently
Transcodely is the transcoding API I spent a decade wishing existed. Every design decision comes from a specific pain point I experienced as a customer of other services, or as a developer building my own pipeline.
Transparent, per-minute pricing
No multiplier tables. No “contact sales for pricing.” No normalized minutes. Just a clear per-minute rate based on what you are actually encoding.
- 480p H.264: EUR 0.005/min
- 1080p H.264: EUR 0.01/min
- 1080p HEVC: EUR 0.015/min
- 1080p AV1: EUR 0.04/min
No monthly fees, no minimums. Failed jobs are not charged. Audio tracks, thumbnail generation, and HLS/DASH packaging are included at no extra cost. You can see the full breakdown on our pricing page.
VMAF quality tiers
Instead of forcing developers to guess at bitrate targets, Transcodely offers three quality tiers based on VMAF scores:
| Tier | VMAF Range | Cost Multiplier | Use Case |
|---|---|---|---|
| Economy | 85-90 | 0.75x | User-generated content, previews |
| Standard | 93-95 | 1.0x | Most video-on-demand content |
| Premium | 97-99 | 2.0x | Premium/cinematic content |
You pick the quality you want, and our encoder figures out the optimal bitrate for each segment of your video. Simple content gets less bitrate; complex content gets more. The result is consistent perceived quality across all your content, at the lowest possible file size.
A developer-first API
I have always admired how Stripe approaches API design — prefixed IDs, sensible defaults, excellent documentation, and an API that just works without reading a 200-page integration guide. Transcodely follows the same philosophy.
// Create a transcoding job in one call
const job = await client.createJob({
source_url: "https://storage.example.com/raw/gameplay.mp4",
preset_id: "pst_1080p_multi_codec",
webhook_url: "https://api.example.com/hooks/transcode"
});
// job.id = "job_a1b2c3d4e5f6"
// That's it. Check status via webhook or poll.Every resource has a prefixed ID (job_, pst_, org_, ak_). The API uses Connect-RPC with Protocol Buffers for type safety. Errors are structured with proper error codes. And your job history is retained indefinitely — because losing customer data is not a feature.
No lock-in
Transcodely works with your existing storage. Upload from and deliver to S3, Google Cloud Storage, Azure Blob Storage, or any HTTP URL. We do not require you to use our storage, and we do not charge egress fees. Your encoded files go wherever you want them to.
Multi-codec out of the box
One of the things I spent the most time on at GameLeap was building a multi-codec ABR ladder. H.264 for universal compatibility, VP9 for browsers that supported it, multiple resolutions, GOP-aligned segments for clean adaptive switching. Every time we added a new codec or resolution, it meant updating our encoding pipeline, testing across devices, and verifying quality.
With Transcodely, you define your codec ladder in a preset once, and every job produces the full set of renditions with CMAF packaging — shared fMP4 segments referenced by both HLS and DASH manifests. Add AV1 to your ladder by adding one line to your preset. Remove 480p if you decide it is no longer worth the storage. The pipeline handles the rest, including per-title bitrate optimization if you enable it.
I wanted the experience of calling a single API endpoint and getting back a complete, player-ready asset. That is what Transcodely delivers.
What I learned in ten years of video
Building GameLeap taught me that video transcoding is one of those infrastructure problems that looks simple from the outside but has an enormous surface area of hidden complexity. Frame rate handling, segment alignment, codec negotiation, quality measurement, cost optimization, storage management, failure recovery — each of these is a rabbit hole that can consume weeks of engineering time.
Most developers building video features should not have to go down those rabbit holes. They should be able to call an API, specify the quality and format they want, and get encoded video back at a predictable cost. That is the product I wanted to buy for a decade and could not find.
The bottom line
I did not build Transcodely because I thought the world needed another transcoding service. I built it because, after ten years of working with video, I could not find a service that offered transparent pricing, quality-targeted encoding, and a developer experience that respected my time.
If you are a developer dealing with video — whether you are building a streaming platform, a video-enabled SaaS product, or an internal media pipeline — Transcodely is designed for you. Not for enterprise procurement committees, not for non-technical buyers, but for the engineers who actually integrate these APIs.
You can explore the full API documentation, check the pricing calculator, compare costs with other providers in our pricing comparison, or read our developer’s guide to video codecs. If you have questions, you will talk to engineers — not a sales team.