# Add Logic to Your Processing Pipelines

Use JavaScript expressions to compute values, set fallbacks, and branch logic — all inline in your processing steps.

[Get Started](/c/signup/)

[Get Started](/c/signup/)

[Documentation](/docs/topics/dynamic-evaluation.md)

No credit card needed · Cancel anytime

Uploaded files

panorama.jpg(3840 × 1080)Landscape

story\_reel.png(1080 × 1920)Portrait

cover\_art.jpg(2560 × 1440)Landscape

headshot.png(600 × 900)Portrait

hero\_banner.jpg(1920 × 720)Landscape

### Route files through your business rules

* **Conditional pipelines**
* **Validate inputs**
* **Call webhooks**
* **Branch uploads**
* **Keep workflow state**
* **Automate product logic**

JavaScript expressions

Use the full power of JavaScript to compute values dynamically based on file properties.

Fallback values

Provide default values for missing metadata using standard JavaScript operators.

Conditional logic

Apply different processing based on file size, type, dimensions, or any metadata field.

Use Cases

## Dynamic File Processing

Use JavaScript expressions to create intelligent processing pipelines.

## Dynamic dimensions

Calculate output dimensions based on input file properties.

"width": "${file.meta.width \* (720 / file.meta.height)}"

bird.webp

1600 × 1200

width960

## Fallback values

Provide default values when file metadata is missing.

"title": "${file.meta.title || 'Untitled'}"

photo.jpg

3.8 MB · 4032 × 3024

title"Untitled"

## Conditional logic

Apply different processing based on file type, size, or any metadata field.

"resize\_strategy": "${file.meta.width > file.meta.height ? 'fit' : 'pad'}"

FileDimensionsResize strategy

panorama.jpg3840 × 1080Evaluating…fitfitportrait.png800 × 1200Evaluating…padpadbanner.jpg1920 × 400Evaluating…fitfitavatar.png512 × 512Evaluating…padpadcover.jpg2560 × 1440Evaluating…fitfitheadshot.png600 × 900Evaluating…padpadhero.jpg1920 × 800Evaluating…fitfitlogo.png256 × 256Evaluating…padpadslide.jpg1280 × 720Evaluating…fitfiticon.png64 × 64Evaluating…padpadsplash.jpg3000 × 1500Evaluating…fitfitthumb.png150 × 200Evaluating…padpadwallpaper.jpg2560 × 1080Evaluating…fitfitprofile.png400 × 400Evaluating…padpadbackdrop.jpg4096 × 2160Evaluating…fitfitstamp.png128 × 128Evaluating…padpadfeature.jpg1600 × 900Evaluating…fitfitbadge.png96 × 96Evaluating…padpadpromo.jpg1200 × 630Evaluating…fitfitphoto.png800 × 1067Evaluating…padpadpanorama.jpg3840 × 1080Evaluating…fitfitportrait.png800 × 1200Evaluating…padpadbanner.jpg1920 × 400Evaluating…fitfitavatar.png512 × 512Evaluating…padpadcover.jpg2560 × 1440Evaluating…fitfitheadshot.png600 × 900Evaluating…padpadhero.jpg1920 × 800Evaluating…fitfitlogo.png256 × 256Evaluating…padpadslide.jpg1280 × 720Evaluating…fitfiticon.png64 × 64Evaluating…padpadsplash.jpg3000 × 1500Evaluating…fitfitthumb.png150 × 200Evaluating…padpadwallpaper.jpg2560 × 1080Evaluating…fitfitprofile.png400 × 400Evaluating…padpadbackdrop.jpg4096 × 2160Evaluating…fitfitstamp.png128 × 128Evaluating…padpadfeature.jpg1600 × 900Evaluating…fitfitbadge.png96 × 96Evaluating…padpadpromo.jpg1200 × 630Evaluating…fitfitphoto.png800 × 1067Evaluating…padpad

Processing steps with JavaScript expressions

```
{
  "steps": {
    ":original": {
      "robot": "/upload/handle"
    },
    "resized": {
      "use": ":original",
      "robot": "/image/resize",
      "width": "${Math.min(width, 1920)}",
      "height": "${Math.min(height, 1080)}",
      "imagemagick_stack": "${size > 5000000 ? 'v3.0.1' : 'v2.0.10'}"
    },
    "exported": {
      "use": "resized",
      "robot": "/s3/store",
      "path": "${fields.category || 'uncategorized'}/${file.name}"
    }
  }
}
```

Transloadit

## Stop hardcoding processing parameters

Transloadit's code evaluation service lets you create intelligent pipelines that adapt to each file automatically.

JavaScript expressions

Use any JavaScript expression inline with dollar-brace syntax.

Access file metadata

Reference file.meta.width, file.meta.height, file.size, and all metadata fields.

Standard library

Use Math, Date, String methods, and other JavaScript built-ins for complex logic.

Fallback values

Handle missing metadata gracefully with || operators and ternary expressions.

Fast execution

Scripts execute in under 1ms with a 1-second timeout for safety.

Flexible evaluation

Use simple variable access or more complex JavaScript expressions in the same workflow.

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

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

Related resources

## Explore this topic

Move from the service overview to practical guides, working demos, Robot documentation, and proven customer outcomes.

### Guides

* [Media automation: from upload to reliable output→](/guides/media-automation.md)
* [A complete guide to digital-asset workflows→](/guides/digital-asset-workflows.md)
* [How to give AI agents safe media-processing capabilities→](/guides/transloadit-for-ai-agents.md)

### Robot docs

* [🤖/script/run→](/docs/robots/script-run.md)
* [🤖/file/filter→](/docs/robots/file-filter.md)
* [🤖/image/resize→](/docs/robots/image-resize.md)

### Solutions

* [Software development & SaaS→](/solutions/software.md)
* [Media & Entertainment→](/solutions/media.md)

### Pricing and customer story

* [Pricing→](/pricing.md)
* [How we secured a spot in thoughtbot’s toolkit→](/casestudies/2017/05/thoughtbot.md)

### Live demos

* [View demo→Watermark current date onto an image](/demos/code-evaluation/watermark-current-date.md)
* [View demo→Only resize larger images when resizing files](/demos/file-filtering/only-resize-large-images.md)
* [View demo→Rotate an image to portrait mode if it's horizontal](/demos/file-filtering/filter-and-rotate-image.md)

Try Transloadit

## Try Transloadit for free

Start creating dynamic processing pipelines today.

Hardcoded processing values

Dynamic expressions

Missing metadata errors

Fallback values

One-size-fits-all processing

Conditional logic

Complex dimension calculations

Math expressions

Static output filenames

Dynamic path templates

Inflexible workflows

JavaScript-powered pipelines

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
