# Specify multiple encoding Steps for a single file

Our Assembly Instructions syntax permits very flexible encoding workflows.

One common use case is to encode a video into several formats (iPad and iPhone in this case), extract thumbnails from the original uploaded file and resize these thumbnails again.

If you leverage the `use` parameter to tell your Robots which results of which step they should use, this becomes quite easy. See below for yourself. The `use` parameter can take the value of an encoding Step, the value `:original` in which case it will use the originally upload file(s), or an array of encoding Steps .

Step 1

### Handle uploads

We can handle uploads of your users directly. [Learn more ›](/services/handling-uploads.md)

[surf.mp4](https://demos.transloadit.com/31/f573d866154a27ba593ae02e09a500/surf.mp4)

Video · 32 MB · 22s · 1280 × 720

```
":original": {
  "robot": "/upload/handle"
}
```

🤖 [/upload/handle](/docs/robots/upload-handle.md)

This bot receives uploads that your users throw at you from browser or apps, or that you throw at us programmatically

Step 2

### Transcode, resize, or watermark videos

We offer a variety of video encoding features like optimizing for different devices, merging, injecting ads, changing audio tracks, or adding company logos. [Learn more ›](/services/video-encoding.md)

[surf.mp4](https://demos.transloadit.com/59/b5a9934ac746d8bbee6f2e155a7b21/surf.mp4)

Video · 3.6 MB · 22s · 1024 × 768

```
"ipad_encoded": {
  "use": ":original",
  "robot": "/video/encode",
  "result": true,
  "ffmpeg_stack": "v7",
  "preset": "ipad-high",
  "turbo": true
}
```

🤖 [/video/encode](/docs/robots/video-encode.md)

This bot encodes, resizes, applies watermarks to videos and animated GIFs

Step 3

### Transcode, resize, or watermark videos

We offer a variety of video encoding features like optimizing for different devices, merging, injecting ads, changing audio tracks, or adding company logos. [Learn more ›](/services/video-encoding.md)

[surf.mp4](https://demos.transloadit.com/36/574974054a40309af7c608e2742a3b/surf.mp4)

Video · 1.8 MB · 22s · 480 × 320

```
"iphone_encoded": {
  "use": ":original",
  "robot": "/video/encode",
  "result": true,
  "ffmpeg_stack": "v7",
  "preset": "iphone",
  "turbo": true
}
```

🤖 [/video/encode](/docs/robots/video-encode.md)

This bot encodes, resizes, applies watermarks to videos and animated GIFs

Step 4

### Extract thumbnails from videos

We offer a variety of video encoding features like optimizing for different devices, merging, injecting ads, changing audio tracks, or adding company logos. [Learn more ›](/services/video-encoding.md)

![25cdd708dba24b1385661d270c75679b.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/25cdd708dba24b1385661d270c75679b.jpg)

[25cdd708dba24b1385661d270c75679b.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/25cdd708dba24b1385661d270c75679b.jpg)

Image · 52 KB · 1280 × 720

![71e7dc14090b44a2939e78ed366036e2.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/71e7dc14090b44a2939e78ed366036e2.jpg)

[71e7dc14090b44a2939e78ed366036e2.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/71e7dc14090b44a2939e78ed366036e2.jpg)

Image · 48 KB · 1280 × 720

![c529a540923c4e88aaf95100dc3cf448.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/c529a540923c4e88aaf95100dc3cf448.jpg)

[c529a540923c4e88aaf95100dc3cf448.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/c529a540923c4e88aaf95100dc3cf448.jpg)

Image · 47 KB · 1280 × 720

![6e8173443bcd4d259ca70eec0b4048cc.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/6e8173443bcd4d259ca70eec0b4048cc.jpg)

[6e8173443bcd4d259ca70eec0b4048cc.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/6e8173443bcd4d259ca70eec0b4048cc.jpg)

Image · 46 KB · 1280 × 720

![d27cfaac7c68485ca3fe747cbae1854e.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/d27cfaac7c68485ca3fe747cbae1854e.jpg)

[d27cfaac7c68485ca3fe747cbae1854e.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/d27cfaac7c68485ca3fe747cbae1854e.jpg)

Image · 42 KB · 1280 × 720

![dc79780a079f447bae51a7fd7dbd6bff.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/dc79780a079f447bae51a7fd7dbd6bff.jpg)

[dc79780a079f447bae51a7fd7dbd6bff.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/dc79780a079f447bae51a7fd7dbd6bff.jpg)

Image · 46 KB · 1280 × 720

![912827581bcc488cacaf08d7999400df.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/912827581bcc488cacaf08d7999400df.jpg)

[912827581bcc488cacaf08d7999400df.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/912827581bcc488cacaf08d7999400df.jpg)

Image · 46 KB · 1280 × 720

![569d196899eb4939a127616ef5de7843.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/569d196899eb4939a127616ef5de7843.jpg)

[569d196899eb4939a127616ef5de7843.jpg](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/569d196899eb4939a127616ef5de7843.jpg)

Image · 42 KB · 1280 × 720

```
"thumbnailed": {
  "use": ":original",
  "robot": "/video/thumbs",
  "result": true,
  "ffmpeg_stack": "v7"
}
```

🤖 [/video/thumbs](/docs/robots/video-thumbs.md)

This bot extracts any number of images from videos for use as previews

Step 5

### Convert, resize, or watermark images

We can resize, crop, and (auto-)rotate images, or apply watermarks and other effects, and much more. [Learn more ›](/services/image-processing.md)

![surf\_0.jpg](https://demos.transloadit.com/23/512c073a5b40dc99c5493d9aeede3c/surf_0.jpg)

[surf\_0.jpg](https://demos.transloadit.com/23/512c073a5b40dc99c5493d9aeede3c/surf%5F0.jpg)

Image · 3.6 KB · 130 × 73

![surf\_1.jpg](https://demos.transloadit.com/79/e294e8df084ac2920d55e21f3b3f83/surf_1.jpg)

[surf\_1.jpg](https://demos.transloadit.com/79/e294e8df084ac2920d55e21f3b3f83/surf%5F1.jpg)

Image · 3.9 KB · 130 × 73

![surf\_2.jpg](https://demos.transloadit.com/ee/0ad6076e4d437a84963c0af8216845/surf_2.jpg)

[surf\_2.jpg](https://demos.transloadit.com/ee/0ad6076e4d437a84963c0af8216845/surf%5F2.jpg)

Image · 3.5 KB · 130 × 73

![surf\_3.jpg](https://demos.transloadit.com/2a/ca4f7dd40045ce874259ca6bad3d68/surf_3.jpg)

[surf\_3.jpg](https://demos.transloadit.com/2a/ca4f7dd40045ce874259ca6bad3d68/surf%5F3.jpg)

Image · 3.4 KB · 130 × 73

![surf\_4.jpg](https://demos.transloadit.com/26/9408e2117848c7823587d6637a79eb/surf_4.jpg)

[surf\_4.jpg](https://demos.transloadit.com/26/9408e2117848c7823587d6637a79eb/surf%5F4.jpg)

Image · 3.2 KB · 130 × 73

![surf\_5.jpg](https://demos.transloadit.com/09/6cce0ef03f43a7b2bca76fda0e7c52/surf_5.jpg)

[surf\_5.jpg](https://demos.transloadit.com/09/6cce0ef03f43a7b2bca76fda0e7c52/surf%5F5.jpg)

Image · 3.3 KB · 130 × 73

![surf\_6.jpg](https://demos.transloadit.com/e5/c4bcc706934425865bf33eecd6812b/surf_6.jpg)

[surf\_6.jpg](https://demos.transloadit.com/e5/c4bcc706934425865bf33eecd6812b/surf%5F6.jpg)

Image · 3.3 KB · 130 × 73

![surf\_7.jpg](https://demos.transloadit.com/c5/66db51b2da4e939421538599f5c6ca/surf_7.jpg)

[surf\_7.jpg](https://demos.transloadit.com/c5/66db51b2da4e939421538599f5c6ca/surf%5F7.jpg)

Image · 3.1 KB · 130 × 73

```
"thumbs_resized": {
  "use": "thumbnailed",
  "robot": "/image/resize",
  "result": true,
  "height": 130,
  "width": 130
}
```

🤖 [/image/resize](/docs/robots/image-resize.md)

This bot resizes, crops, changes colorization, rotation, and applies text and watermarks to images

Step 6

### Export files to Amazon S3

We export to the storage platform of your choice. [Learn more ›](/services/file-exporting.md)

`:original`

* [https://demos.transloadit.com/31/f573d866154a27ba593ae02e09a500/surf.mp4⁠](https://demos.transloadit.com/31/f573d866154a27ba593ae02e09a500/surf.mp4)

`ipad_encoded`

* [https://demos.transloadit.com/59/b5a9934ac746d8bbee6f2e155a7b21/surf.mp4⁠](https://demos.transloadit.com/59/b5a9934ac746d8bbee6f2e155a7b21/surf.mp4)

`iphone_encoded`

* [https://demos.transloadit.com/36/574974054a40309af7c608e2742a3b/surf.mp4⁠](https://demos.transloadit.com/36/574974054a40309af7c608e2742a3b/surf.mp4)

`thumbnailed`

* [https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/25cdd708dba24b1385661d270c75679b.jpg⁠](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/25cdd708dba24b1385661d270c75679b.jpg)
* [https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/71e7dc14090b44a2939e78ed366036e2.jpg⁠](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/71e7dc14090b44a2939e78ed366036e2.jpg)
* [https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/c529a540923c4e88aaf95100dc3cf448.jpg⁠](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/c529a540923c4e88aaf95100dc3cf448.jpg)
* [https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/6e8173443bcd4d259ca70eec0b4048cc.jpg⁠](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/6e8173443bcd4d259ca70eec0b4048cc.jpg)
* [https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/d27cfaac7c68485ca3fe747cbae1854e.jpg⁠](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/d27cfaac7c68485ca3fe747cbae1854e.jpg)
* [https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/dc79780a079f447bae51a7fd7dbd6bff.jpg⁠](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/dc79780a079f447bae51a7fd7dbd6bff.jpg)
* [https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/912827581bcc488cacaf08d7999400df.jpg⁠](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/912827581bcc488cacaf08d7999400df.jpg)
* [https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/569d196899eb4939a127616ef5de7843.jpg⁠](https://tmp-eu-west-1.transloadit.net/4ce4fb3d9d1842b6ba5d6f3ccee4b066/d5d7e696a94142e9abc84f120f12e740/569d196899eb4939a127616ef5de7843.jpg)

`thumbs_resized`

* [https://demos.transloadit.com/23/512c073a5b40dc99c5493d9aeede3c/surf\_0.jpg⁠](https://demos.transloadit.com/23/512c073a5b40dc99c5493d9aeede3c/surf%5F0.jpg)
* [https://demos.transloadit.com/79/e294e8df084ac2920d55e21f3b3f83/surf\_1.jpg⁠](https://demos.transloadit.com/79/e294e8df084ac2920d55e21f3b3f83/surf%5F1.jpg)
* [https://demos.transloadit.com/ee/0ad6076e4d437a84963c0af8216845/surf\_2.jpg⁠](https://demos.transloadit.com/ee/0ad6076e4d437a84963c0af8216845/surf%5F2.jpg)
* [https://demos.transloadit.com/2a/ca4f7dd40045ce874259ca6bad3d68/surf\_3.jpg⁠](https://demos.transloadit.com/2a/ca4f7dd40045ce874259ca6bad3d68/surf%5F3.jpg)
* [https://demos.transloadit.com/26/9408e2117848c7823587d6637a79eb/surf\_4.jpg⁠](https://demos.transloadit.com/26/9408e2117848c7823587d6637a79eb/surf%5F4.jpg)
* [https://demos.transloadit.com/09/6cce0ef03f43a7b2bca76fda0e7c52/surf\_5.jpg⁠](https://demos.transloadit.com/09/6cce0ef03f43a7b2bca76fda0e7c52/surf%5F5.jpg)
* [https://demos.transloadit.com/e5/c4bcc706934425865bf33eecd6812b/surf\_6.jpg⁠](https://demos.transloadit.com/e5/c4bcc706934425865bf33eecd6812b/surf%5F6.jpg)
* [https://demos.transloadit.com/c5/66db51b2da4e939421538599f5c6ca/surf\_7.jpg⁠](https://demos.transloadit.com/c5/66db51b2da4e939421538599f5c6ca/surf%5F7.jpg)

```
"exported": {
  "use": [
    ":original",
    "ipad_encoded",
    "iphone_encoded",
    "thumbs_resized"
  ],
  "robot": "/s3/store",
  "credentials": "demo_s3_credentials",
  "url_prefix": "https://demos.transloadit.com/"
}
```

🤖 [/s3/store](/docs/robots/s3-store.md)

This bot exports encoding results to Amazon S3

## Live Demo. See for yourself

Loading Uppy demo…

This live demo is powered by [Uppy⁠](https://uppy.io/docs/guides/uppy-transloadit/), our open source file uploader that you can also use without Transloadit, and [tus⁠](https://tus.io), our open protocol for resumable file uploads that is making uploading more reliable across the world.

## Build this in your own language

```
<!-- This pulls Uppy from our CDN -->
<!-- For smaller self-hosted bundles, install Uppy and plugins manually: -->
<!-- npm i --save @uppy/core @uppy/dashboard @uppy/remote-sources @uppy/transloadit ... -->
<link
  href="https://releases.transloadit.com/uppy/v3.10.0/uppy.min.css"
  rel="stylesheet"
/>
<button id="browse">Select Files</button>
<script type="module">
  import {
    Uppy,
    Dashboard,
    ImageEditor,
    RemoteSources,
    Transloadit,
  } from 'https://releases.transloadit.com/uppy/v3.10.0/uppy.min.mjs'
  const uppy = new Uppy()
    .use(Transloadit, {
      waitForEncoding: true,
      alwaysRunAssembly: true,
      assemblyOptions: {
        params: {
          // It's often better store encoding instructions in your account
          // and use a `template_id` instead of adding these steps inline
          steps: {
            ':original': {
              robot: '/upload/handle',
            },
            ipad_encoded: {
              use: ':original',
              robot: '/video/encode',
              result: true,
              ffmpeg_stack: 'v7',
              preset: 'ipad-high',
              turbo: true,
            },
            iphone_encoded: {
              use: ':original',
              robot: '/video/encode',
              result: true,
              ffmpeg_stack: 'v7',
              preset: 'iphone',
              turbo: true,
            },
            thumbnailed: {
              use: ':original',
              robot: '/video/thumbs',
              result: true,
              ffmpeg_stack: 'v7',
            },
            thumbs_resized: {
              use: 'thumbnailed',
              robot: '/image/resize',
              result: true,
              height: 130,
              width: 130,
            },
            exported: {
              use: [':original', 'ipad_encoded', 'iphone_encoded', 'thumbs_resized'],
              robot: '/s3/store',
              credentials: 'demo_s3_credentials',
              url_prefix: 'https://demos.transloadit.com/',
            },
          },
        },
      },
    })
    .use(Dashboard, { trigger: '#browse' })
    .use(ImageEditor, { target: Dashboard })
    .use(RemoteSources, {
      companionUrl: 'https://api2.transloadit.com/companion',
    })
    .on('complete', ({ transloadit }) => {
      // Due to `waitForEncoding:true` this is fired after encoding is done.
      // Alternatively, set `waitForEncoding` to `false` and provide a `notify_url`
      console.log(transloadit) // Array of Assembly Statuses
      for (const assembly of transloadit) {
        console.log(assembly.results) // Array of all encoding results
      }
    })
    .on('error', (error) => {
      console.error(error)
    })
</script>

```

[Read docs: Browsers](/docs/sdks/uppy.md)

## So many ways to integrate

Transloadit is a service for companies with developers. And there are many ways developers can put Transloadit to good use inside your company to automate media processing.

#### Bulk imports

Add one of our [import Robots](/services/file-importing.md) to acquire and transcode massive media libraries.

#### Handling uploads

We are *the* experts at reliably [handling uploads](/services/handling-uploads.md). We wrote the [protocol⁠](https://tus.io/) for it.

#### Front-end integration

We integrate with web browsers via our next-gen file uploader [Uppy⁠](https://uppy.io/docs/guides/uppy-transloadit/) and SDKs for Android and iOS.

#### Back-end integration

Send us batch jobs in any server language using one of our [SDKs](/docs/sdks.md) or directly interfacing with our [REST API](/docs/api.md).

#### Pingbacks

Configure a [notify\_url](/services/content-delivery.md) to let your server receive transcoding results JSON in the `transloadit` POST field.

#### On-demand

Use our [Smart CDN](/services/file-importing.md) to adapt files on-demand and stream them directly to your users.

[Browsers](/docs/sdks/uppy.md)[TransloaditKit](/docs/sdks/transloaditkit.md)[Ruby SDK](/docs/sdks/ruby-sdk.md)[HTTP REST API](/docs/api.md)[Python SDK](/docs/sdks/python-sdk.md)[PHP SDK](/docs/sdks/php-sdk.md)[Node.js SDK](/docs/sdks/node-sdk.md)[Java SDK](/docs/sdks/java-sdk.md)[Go SDK](/docs/sdks/go-sdk.md)[cURL](/docs/sdks/curl.md)[Convex](/docs/sdks/convex.md)

[Browsers](/docs/sdks/uppy.md)[TransloaditKit](/docs/sdks/transloaditkit.md)[Ruby SDK](/docs/sdks/ruby-sdk.md)[HTTP REST API](/docs/api.md)[Python SDK](/docs/sdks/python-sdk.md)[PHP SDK](/docs/sdks/php-sdk.md)[Node.js SDK](/docs/sdks/node-sdk.md)[Java SDK](/docs/sdks/java-sdk.md)[Go SDK](/docs/sdks/go-sdk.md)[cURL](/docs/sdks/curl.md)[Convex](/docs/sdks/convex.md)

[Browsers](/docs/sdks/uppy.md)[TransloaditKit](/docs/sdks/transloaditkit.md)[Ruby SDK](/docs/sdks/ruby-sdk.md)[HTTP REST API](/docs/api.md)[Python SDK](/docs/sdks/python-sdk.md)[PHP SDK](/docs/sdks/php-sdk.md)[Node.js SDK](/docs/sdks/node-sdk.md)[Java SDK](/docs/sdks/java-sdk.md)[Go SDK](/docs/sdks/go-sdk.md)[cURL](/docs/sdks/curl.md)[Convex](/docs/sdks/convex.md)

## Other cool demos

* [View demo→File UploadsAutomatically process multiple file types](/demos/handling-uploads/processing-multiple-file-types.md)
* [View demo→Document ProcessingAdd a header or footer to a PDF](/demos/document-processing/add-header-or-footer-to-pdf.md)
* [View demo→Image ProcessingAdd a sepia effect to an image](/demos/image-processing/add-sepia-effect-to-an-image.md)

Try Transloadit

## Ready to get started?

Join thousands of developers who trust Transloadit for their file processing needs.

Building file processing from scratch

Ready-to-use API & SDKs

Scaling infrastructure headaches

Auto-scaling global infrastructure

Managing codec updates

Always up-to-date processing

Handling file security

Enterprise-grade security

Supporting all file formats

1000+ formats & codecs supported

Fragmented media tooling

One API for file workflows

GDPR

GDPR

HIPAA

HIPAA

ISO 27001ISO27001

ISO 27001

AES-256

AES-256

SOC 2 Type II

SOC 2 Type II

[Try Transloadit for Free](/c/signup/)

[Try Transloadit for Free](/c/signup/)

No credit card needed · Cancel anytime
