# Reduce video file size

Compress video for faster uploads, lower storage costs, and quicker loads

"Capsule" (a testimonial video app like Loom) collects video from customers. Raw uploads are often 500MB+ for a 2-minute recording. Compress them without visible quality loss.

## Quick compression

### API

<CodeGroup labels={["CLI", "TypeScript", "Python", "curl"]}>
```bash
ittybit video \
  -i https://capsule-app.com/uploads/testimonial.mov \
  --quality medium \
  --format mp4
```

```typescript
const task = {
  input: 'https://capsule-app.com/uploads/testimonial.mov',
  kind: 'video',
  options: {
    quality: 'medium',
    format: 'mp4',
  },
};

const res = await fetch('https://api.ittybit.com/jobs', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.ITTYBIT_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(task),
});
const data = await res.json();
```

```python

task = {
    "input": "https://capsule-app.com/uploads/testimonial.mov",
    "kind": "video",
    "options": {
        "quality": "medium",
        "format": "mp4",
    },
}

res = requests.post(
    "https://api.ittybit.com/jobs",
    headers={"Authorization": f"Bearer {api_key}"},
    json=task,
)
data = res.json()
```

```bash
TASK='{
  "input": "https://capsule-app.com/uploads/testimonial.mov",
  "kind": "video",
  "options": {
    "quality": "medium",
    "format": "mp4"
  }
}'

curl -X POST https://api.ittybit.com/jobs \
  -H "Authorization: Bearer $ITTYBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d "$TASK"
```

</CodeGroup>

### CLI

```bash
ittybit video \
  -i testimonial.mov \
  -o testimonial.mp4 \
  --quality medium
```

## Compression levers

You have three ways to reduce file size, and they stack:

### 1. Quality

```bash
ittybit video \
  -i input.mov \
  -o output.mp4 \
  --quality medium
```

| Quality    | Typical reduction | Visible difference             |
| ---------- | ----------------- | ------------------------------ |
| `high`     | ~50%              | None                           |
| `medium`   | ~75%              | Barely noticeable              |
| `low`      | ~85%              | Noticeable on close inspection |
| `very_low` | ~90%              | Obvious, fine for previews     |

### 2. Resolution

```bash
ittybit video \
  -i input.mov \
  -o output.mp4 \
  --width 1280 \
  --quality medium
```

Downscaling from 4K to 1280px wide cuts file size dramatically.

### 3. Codec

```bash
ittybit video \
  -i input.mov \
  -o output.mp4 \
  --codec av1 \
  --quality medium
```

AV1 produces ~40% smaller files than h264 at the same visual quality. See [Encode video with AV1](/guides/encode-video-with-av1).

## Combine all three

```bash
ittybit video \
  -i testimonial.mov \
  -o testimonial.mp4 \
  --width 1280 \
  --codec av1 \
  --quality medium
```

A 500MB 4K MOV becomes a ~15MB 720p AV1 MP4.