Stop FFighting with FFmpeg

It's the best software in the world, but running FFmpeg at scale sucks. Ittybit handles all the annoying edge cases for you, lets you encode loads of files in parallel, and uses GPUs to process jobs upto 50x faster than AWS.

ittybit video \
  -i input.mov \
  --quality high \
  --format mp4

Get up and running in seconds

Add video, audio, and image processing to your app with a few lines of code.

npm i -g @ittybit/cli
GPU Cloud
Process files 50x faster on our distributed GPU infrastructure.
Consistent API
Strong types and structured outputs across video, audio, and images.
Open Source
Fully open source. Process files locally forever free.
Built for Agents
Media processing designed for AI agents and autonomous workflows.

Your agent's video, image, and audio toolkit

Convert formats, resize media, reduce filesize, extract thumbnails, or create adaptive streams. All with an API that stays consistent across video, audio, and images in just about any format; even those janky framerate uploads from the user with the random 2013 Android. The same props work identically across CLI, SDKs, and REST; from local dev to production.

Tools
Description

Convert between formats to optimize for size, quality, or compatibility. Use modern codecs like av1 and opus for dramatic size reductions, or normalize to h264 and mp3 for universal playback.

Example
ittybit video \
  -i s3://bucket/input.mov \
  --format webm
Input
{
  "object": "external_file",
  "url": "s3://bucket/input.mov"
}
Output
{
  "object": "file",
  "kind": "video",
  "format": "webm",
  "width": 1920,
  "height": 1080,
  "duration": 45200,
  "codecs": { "video": { "codec": "vp9" }, "audio": { "codec": "opus" }, "string": "vp9, opus" }
}

Process any media file

Videos

h264 h265 vp9 av1 mp4 webm

Images

jpeg png webp gif heic avif

Audio

wav mp3 aac ogg flac opus
Local Files
Process files directly from your local filesystem. Great for development, CI/CD pipelines, and batch processing on your own infrastructure.
S3 Storage
Read inputs and write outputs directly from your own bucket. Use AWS, GCS, R2, Supabase, MinIO, or any other S3-compatible provider.
Public URLs
Pass any publicly accessible URL as input. Ittybit will fetch the file, check it's compatible, process it, and return the result. No need to download first.
Signed URLs
Use pre-signed or time-limited URLs for private files. Supports S3 signed URLs, GCS signed URLs, or any auth-gated endpoint accessible via GET request.

Offload heavy processing

When you're ready to scale past your demo, ittybit's cloud gives you reliable on-demand processing with a single line-of-code. Process parallel files at lightning-fast speeds on our custom GPU infrastructure. Skip terraform and provisioning. It scales up for millions of files when you need and down to zero when you don't.

22 min 4K → H264
Ittybit Cloud
48s
AWS MediaConvert 1
5m 12s
FFmpeg 2
14m 25s
44 min 4K → AV1
Ittybit Cloud
7m 56s
AWS MediaConvert
3h 42m
FFmpeg
5h 16m
2hr lecture → 1080p ABR ladder 3
Ittybit Cloud
53s
AWS MediaConvert
32m
FFmpeg
1h 37m
Auto-scaling
0succeeded 0failed
Events
Parallel Processing
Submit multiple files at once and process them simultaneously across distributed workers. No shared state, no coordination overhead, no bottlenecks.
Scale to Millions
We handle the queues, provisioning, health checks, and capacity planning. You send files, we process them. Whether it's ten or ten million.
Scale to Zero
Pay only for the files you process. No idle instances, no reserved capacity, no fixed infrastructure costs. Usage scales linearly with your actual workload.
Automatic Retries
Transient failures are retried automatically with exponential backoff. Unrecoverable errors return clear debug hints, not cryptic exit codes.

Built for, and by, human developers

Our founding team has 35 years experience building video and imaging pipelines. All the parts that suck? We've battled through them multiple times. Now at ittybit we sweat the details for you. (So you can focus on all the other parts of your app that suck).

+30 -4,242
42 - ## TODO: Build Video Pipeline
43 - - [ x ] Shitty vibecoded proof-of-concept
44 - - [ ] Task queue: SQS, Cloud Tasks, or Redis?
45 - - [ ] Worker fleet: auto-scaling, health checks, draining?
46 - - [ ] GPU instances: spot pricing, availability zones?
47 - - [ ] FFmpeg builds: codec licensing, version pinning?
48 - - [ ] Storage layer: temp files, signed URLs, cleanup?
49 - - [ ] Retry logic: chunk failures, timeouts, DLQs?
50 - - [ ] Progress tracking: status polling, event streaming?
51 - - [ ] Monitoring: per-job logs, error rates, alerts?
42 + ## DONE: Build Video Pipeline
43 + - [x] Install ittybit CLI
44 + - [x] Run `ittybit video -i input.mov --quality high`

Works with all your existing tools

Loved by AI agents

Get detailed metadata for every file, without parsing walls of stdout. Track granular progress without accidentally starting a giant infrastructure project. Or fire-and-forget with async tasks and reliable event-driven notifications.

Trigger
s3:ObjectCreated
bucket: podcasts
Agent
analyze_content()
Clip 1
video
start: 0, end: 12
Thumbnail 1
image
format: webp
Clip 2
video
start: 34, end: 48
Thumbnail 2
image
format: webp
Upload
R2 Connection
bucket: clips
Fully Typed
Zod schemas and TypeScript types for every request and response. Agents can validate parameters before sending, so errors surface at the schema level instead of mid-encode.
Structured Data
Responses, logs, events, and errors are all typed JSONL. Agents can parse every field directly without regex or string wrangling.
Pipe In/Out
Accepts JSON in, returns JSON out. Slot ittybit into any chain of CLI tools or agent steps. Compose it the same way you would jq, curl, or any unix tool.
Webhooks
Get async notifications when tasks complete. Ideal for event-driven architectures and set-and-forget workflows where polling is wasteful.

Add scalable media processing to your app in seconds

Create a free account, install the CLI, and process your first file in under a minute. No credit card, sales calls, or 90-page procurement doc required.

p.s. There's no lock-in

The CLI and encoding engine are open source under Apache 2.0. Run locally in dev, self-host in production, or use our managed cloud. Switch between them with a single flag. We want you to stay because we've built the best system and we've earned your business every month, not because of some long-term contract bullshit or enterprise deal rug-pull. If you do leave, your code and your files stay yours.

Run Locally
Process files on your own machine with zero network overhead. Great for development, testing, and CI/CD pipelines.
Self-Hostable
Deploy on your own infrastructure. Any server, any container service, any cloud provider.
Forever Free
The CLI will always be free and open source. No trial periods, no usage caps, no surprise invoices.
No Restrictions
No filesize limits, no format restrictions, no duration caps, no watermarks, no feature gates.

1 AWS Elemental MediaConvert with accelerated transcoding enabled.

2 FFmpeg on 2x Xeon, 64GB RAM. Same source files across all tests.

3 Adaptive Bitrate Ladder (1920x1080, 1280x720, 640x360, and 320x180 renditions).