Transloadit
Pricing
  • File Uploads
  • File Importing
  • Video Encoding
  • Audio Encoding
  • Image Processing
  • Document Processing
  • Artificial Intelligence
  • File Filtering & Security
  • Media Cataloging
  • File Compression
  • Code Evaluation
  • File Exporting
  • Smart CDN
  • View all services
  • Explore integrations
  • Explore live demos
  • Uppy
  • TransloaditKit
  • Android SDK
  • Node SDK
  • Python SDK
  • Ruby SDK
  • Go SDK
  • Java SDK
  • PHP SDK
  • Zapier
  • MCP Server
  • Terraform
  • Essentials
  • Best Practices
  • FAQ
  • Robots
  • API
  • Formats
  • Build your first app
  • About
  • Comparisons
  • Open Source
  • Testimonials
  • Jobs
  • Security
  • Posts
  • DevTimes
  • DevTips
  • Press
  • Research
  • Case Studies
  • Solutions
  • Guides
  • Glossary
  • Legal
  • Tools
  • Helping Coursera bring education to millions around the world
  • Transloadit Support
  • Open Source Support
  • Service level agreement
EssentialsRobotsFAQAPIFormatsBest Practices
Getting started
  • Overview
  • My first App
  • Saving result files
Topics
  • Assembly Instructions
  • Assembly Variables
  • Dynamic Evaluation
  • Templates
  • Webhooks
  • Third party Credentials
  • Builtin Templates
  • Resize Strategies
  • Assembly Execution Progress
  • Workspaces
  • AI Agents
  • Advanced use Parameter
  • The ignore_errors Parameter
Software Development Kits
  • Overview
  • Android SDK
  • Browsers
  • Convex
  • cURL
  • Go SDK
  • Java SDK
  • MCP Server
  • Multipart Form
  • Node.js SDK
  • PHP SDK
  • Python SDK
  • Ruby SDK
  • Terraform
  • TransloaditKit
  • Zapier Integration
Migration
  • Migrate from Cloudinary to Transloadit
  • Migrate from Uploadcare to Transloadit
  • Migrate from Mux to Transloadit
  • Migrate from Filestack to Transloadit

Migrate from Filestack to Transloadit

Filestack combines picking, uploading, transformations, workflows, and storage. With Transloadit, Uppy handles browser picking and Robots handle file processing. Define a supported workflow in a Template, then use an SDK, Uppy, or the REST API to create Assemblies. Check the tasks your application uses individually; the mapping below does not promise complete feature parity.

Migration map

Filestack conceptTransloadit equivalent
PickerUppy with Transloadit
Upload🤖/upload/handle
Transformation taskRobot Step in a Template
Image conversion/resizing🤖/image/resize
Document preview🤖/document/thumbs or 🤖/file/preview (beta)
Virus scan🤖/file/virusscan
WorkflowTransloadit Template
Storage aliasesThird-party Credentials plus an export Robot
WebhookAssembly Notification

Build a Template for each workflow

This Template checks the detected MIME type, creates an image thumbnail or a first-page PDF thumbnail, and stores accepted originals and previews. Other MIME types stop the Assembly with an error. This is type filtering, not malware scanning; add /file/virusscan if your workflow requires it:

{
  "steps": {
    ":original": {
      "robot": "/upload/handle"
    },
    "accepted_files": {
      "use": ":original",
      "robot": "/file/filter",
      "accepts": [["${file.mime}", "regex", "^(image/[^/]+|application/pdf)$"]],
      "error_on_decline": true
    },
    "images": {
      "use": "accepted_files",
      "robot": "/file/filter",
      "accepts": [["${file.mime}", "regex", "^image/"]]
    },
    "pdfs": {
      "use": "accepted_files",
      "robot": "/file/filter",
      "accepts": [["${file.mime}", "=", "application/pdf"]]
    },
    "image_thumb": {
      "use": "images",
      "robot": "/image/resize",
      "width": 600,
      "height": 600,
      "resize_strategy": "fit",
      "format": "webp",
      "result": true
    },
    "document_thumb": {
      "use": "pdfs",
      "robot": "/document/thumbs",
      "format": "jpg",
      "page": 1,
      "width": 600,
      "resize_strategy": "fit",
      "result": true
    },
    "exported": {
      "use": ["accepted_files", "image_thumb", "document_thumb"],
      "robot": "/s3/store",
      "credentials": "YOUR_AWS_CREDENTIALS",
      "path": "filestack-import/${unique_prefix}/${file.url_name}",
      "url_prefix": "https://cdn.example.com/",
      "acl": "bucket-default"
    }
  }
}

The two routing filters use MIME types to keep images and PDFs on separate preview branches. Declined originals never enter the export Step. An Assembly is not a transaction: already exported accepted files are not rolled back if another file fails. Ignoring errors suppresses failures; it is not a substitute for routing or validation.

Configure your CDN to read the bucket root; url_prefix only changes returned URLs. acl: "bucket-default" sends no object ACL; configure access through your bucket policy and CDN origin access. After ASSEMBLY_COMPLETED, read accepted originals from results.accepted_files and previews from results.image_thumb and results.document_thumb. Export adds or updates entries under the Steps named in its use parameter, unless that Step explicitly sets result: false. Persist only entries with is_temp_url: false. Temporary Transloadit URLs expire after 24 hours; see saving conversion results.

Replace file picking

For browser integrations, replace the Filestack picker with Uppy. Uppy can select local files, drag-and-drop uploads, and connect remote sources. The Transloadit Plugin sends files to an Assembly using your Template. Enable waitForEncoding to receive finished processing results in the browser, or set notify_url in your signed Assembly request and handle Assembly Notifications on your backend. Verify notification signatures and require successful completion before updating your database.

Import existing Filestack URLs

If existing Filestack handles resolve to HTTPS URLs, migrate them with 🤖/http/import:

{
  "steps": {
    "imported": {
      "robot": "/http/import",
      "url": "${fields.filestack_url}"
    },
    "preview": {
      "use": "imported",
      "robot": "/file/preview",
      "result": true
    },
    "exported": {
      "use": ["imported", "preview"],
      "robot": "/s3/store",
      "credentials": "YOUR_AWS_CREDENTIALS",
      "path": "filestack-backfill/${unique_prefix}/${file.url_name}",
      "acl": "bucket-default"
    }
  }
}

Select authorized filestack_url values from your backend’s asset inventory. /file/preview is in beta and falls back to a generic file-type icon when it cannot generate a content thumbnail. Run bounded backfill jobs; /http/import also accepts an array of URLs. Keep source handles and URLs until the completed export’s access and quality are verified. Private S3 objects need an authorized download or your configured CDN. The import Template returns exported files under results.imported and results.preview.

Checklist

  1. Inventory Filestack picker usage and workflow tasks.
  2. Convert each workflow into a Transloadit Template.
  3. Move storage credentials into Third-party Credentials.
  4. Replace picker code with Uppy and the Transloadit Plugin.
  5. Save exported storage URLs from Assembly Notifications.
  6. Backfill existing Filestack files with /http/import.
Previous page ← Migrate from Mux to Transloadit
TransloaditChecking status…

Product

  • Services
  • Pricing
  • Demos
  • Tools
  • Security
  • Support

Company

  • About/Press
  • Blog/Jobs
  • Comparisons/Compliance matrix
  • Research
  • Open source
  • Solutions

Docs

  • Getting started
  • Transcoding
  • FAQ
  • API
  • Guides/DevTips
  • Supported formats

More

  • Platform status⁠
  • Community forum⁠
  • StackOverflow⁠
  • Uppy
  • tus⁠

© 2009–2026 Transloadit-II GmbH

PrivacyTermsImprint