> ## Documentation Index
> Fetch the complete documentation index at: https://autorender.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Introduction

> Transform video straight from a URL — thumbnails, resizing, trimming, rotation, and GIF, with no SDK or build step.

Video transforms turn a source video into a thumbnail, resized clip, GIF, or reoriented file by adding tokens to the delivery URL — the same URL pattern you use for images. You put transform tokens in the path; the CDN renders and serves the result.

You can use video transforms for:

* Preview thumbnails for cards and listing pages (`thumb_ar`)
* Resizing and aspect-ratio conversion for a specific player or platform (`w_`, `h_`, `ar_`)
* Trimming a long video down to a short clip (`so_`, `eo_`, `d_`)
* Converting a segment into a GIF for silent previews (`f_gif`)
* Correcting orientation with rotation and mirroring (`r_`, `flip_h`, `flip_v`)

<Info>
  Video transforms are processed asynchronously. The first request for a new transform triggers a render and returns a JSON status; once the render completes, the same URL serves the output from cache. `thumb_ar` returns a WebP image, `f_gif` returns a GIF, and every other transform returns video.
</Info>

## What does a video URL look like?

Every delivery URL follows the same anatomy: domain, workspace ID, transforms, video path.

<div className="ar-url-block">
  <span className="ar-domain">[https://assets.autorender.io/](https://assets.autorender.io/)</span>
  <span className="ar-workspace">LOKVTtKVGb</span>
  <span>/</span>
  <span className="ar-transform">w\_500,ar\_1:1</span>
  <span>/</span>
  <span className="ar-path">doc/skateboarding.mp4</span>
</div>

```text theme={null}
https://assets.autorender.io/LOKVTtKVGb/w_500,ar_1:1/doc/skateboarding.mp4
```

* `assets.autorender.io` — the Autorender delivery CDN.
* `LOKVTtKVGb` — your workspace ID, which prefixes every delivery URL.
* `w_500,ar_1:1` — comma-separated transform tokens.
* `doc/skateboarding.mp4` — the path to your source video.

Combine tokens in one URL, comma-separated. Order does not need to match any reference table.

## How does async processing work?

The first request for a new transform returns a JSON status instead of the file:

1. `{"status":"triggered"}` — the request is received and queued.
2. `{"status":"processing"}` — the render is running.
3. Once the render completes, the same URL serves the transformed file directly.

Retry or poll the URL until it serves the asset. Subsequent requests return the cached output.

## Transform tokens

| Category   | Token                           | Example         | What it does                                            |
| ---------- | ------------------------------- | --------------- | ------------------------------------------------------- |
| Thumbnail  | `thumb_ar`                      | `thumb_ar`      | Thumbnail that preserves aspect ratio, returned as WebP |
| Dimensions | `w_{n}`                         | `w_500`         | Output width in pixels                                  |
|            | `h_{n}`                         | `h_500`         | Output height in pixels                                 |
|            | `ar_{ratio}`                    | `ar_1:1`        | Output aspect ratio                                     |
| Fit mode   | `cm_pad_resize`                 | `cm_pad_resize` | Resize to fit the box and pad the empty space           |
|            | `cm_extract`                    | `cm_extract`    | Crop to fill the exact box                              |
| Background | `bg_{color}`                    | `bg_white`      | Padding color as a name or hex value                    |
| Time       | `so_{sec}`                      | `so_5`          | Start offset in seconds                                 |
|            | `eo_{sec}`                      | `eo_15`         | End offset in seconds                                   |
|            | `d_{sec}`                       | `d_10`          | Clip duration in seconds                                |
| Format     | `f_gif`                         | `f_gif`         | Output as GIF                                           |
| Flip       | `flip_h` / `flip_v` / `flip_hv` | `flip_h`        | Mirror horizontally, vertically, or both                |
| Rotation   | `r_{deg}`                       | `r_90`          | Rotate by **90°**, **180°**, or **270°**                |

The `w_`, `h_`, `ar_`, `bg_`, `r_`, and `flip_` tokens behave the same for images. See the shared image pages for [resize and aspect ratio](/docs/transformations/resize-and-aspect-ratio), [rotate](/docs/transformations/rotate), and [flip](/docs/transformations/flip).

<Warning>
  Width and height are rounded to even values before encoding, because common video codecs require even dimensions. A request for an odd dimension is snapped to the nearest even pixel.
</Warning>

## Next steps

<CardGroup cols={2}>
  <Card title="Thumbnail" icon="image" iconType="solid" href="/docs/video/thumbnail">
    Generate a WebP preview image from any video.
  </Card>

  <Card title="Resize & aspect ratio" icon="crop-simple" iconType="solid" href="/docs/video/resize">
    Set exact dimensions or force a ratio for any player.
  </Card>

  <Card title="Trim" icon="scissors" iconType="solid" href="/docs/video/trim">
    Clip a segment by start and end offset or duration.
  </Card>

  <Card title="Convert to GIF" icon="film" iconType="solid" href="/docs/video/gif">
    Turn a video segment into a lightweight GIF.
  </Card>
</CardGroup>
