Filestack is best known for its embeddable upload picker — a polished UI that handles uploads from Dropbox, Google Drive, Instagram, URLs, and cameras in one widget. File transformation is one of many features in a larger platform play. ChangeThisFile is purpose-built for the conversion problem: take a file, return a different format. No upload widget, no CDN, no workflow engine. Just 690 routes through a single POST endpoint.
This comparison helps you decide which scope of tooling you actually need.
Quick verdict
For pure file format conversion: ChangeThisFile. Purpose-built, broader format coverage, free tier, call /v1/convert with curl or any HTTP client.
For upload UX + CDN + transformation in one: Filestack. Their upload picker and CDN delivery are mature and well-designed. If you need those features, consolidating on one platform makes sense.
For backend-only conversion without a frontend widget: ChangeThisFile is the right fit. Filestack's value proposition leans heavily on its upload UI.
For privacy-sensitive conversion: ChangeThisFile's 161 client-side routes process files entirely in the browser — no server sees your data. Filestack is entirely server-side.
Pricing comparison
| Plan | ChangeThisFile | Filestack |
|---|---|---|
| Free tier | 1,000 conversions/month (no card) | Limited free tier available (transformations count against quota) |
| Entry paid | $29/mo — 10,000 conversions | Growth plans start higher; check filestack.com for current pricing |
| Mid tier | $99/mo — 50,000 conversions | Scales with bandwidth, transformations, and storage |
| High volume | $499 Scale / $1,999 Growth | Enterprise custom pricing |
| Browser tool | Free, no signup, unlimited | Transformation API only (no standalone browser converter) |
Filestack bundles bandwidth, storage, upload picks, and transformations into their plans. If you only need conversion (not CDN hosting or upload widgets), you're paying for Filestack features you won't use. ChangeThisFile bills only for conversions.
Feature comparison
| Feature | ChangeThisFile | Filestack |
|---|---|---|
| Free API tier | Yes — 1,000/mo, no card | Limited free tier |
| SDK required | No — curl/fetch/requests work directly | JS, iOS, Android, Python, PHP SDKs available |
| Client-side conversions | Yes — 161 browser routes, zero upload | No — all server-side |
| Conversion routes | 690 | Image transforms + video + document |
| Upload widget / picker | No | Yes — embeddable UI, multi-source |
| CDN file hosting | No — 24h R2 retention only | Yes — persistent CDN hosting |
| API authentication | Bearer token, single key | API key |
| Webhooks | HMAC-signed, stdlib verifiable | Supported |
| Image URL transforms | No (format conversion only) | Yes — crop, resize, filter via URL params |
Format and route coverage
Filestack's transformation API handles images well — resize, crop, rotate, filter, compress, and format conversion via URL parameters. Video conversion is supported. Document handling is more limited compared to a dedicated document conversion service.
ChangeThisFile covers 690 specific source→target conversion routes: images (JPG, PNG, WebP, HEIC, SVG, AVIF, GIF, BMP, ICO, TIFF, PSD), documents (PDF, DOCX, ODT, RTF, HTML, Markdown), spreadsheets (XLSX, CSV, JSON, TSV), video (MP4, MKV, WebM, AVI, MOV), audio (MP3, WAV, FLAC, AAC, M4A), ebooks (EPUB, MOBI, AZW3), archives (ZIP, RAR, 7Z, TAR variants), and fonts (TTF, OTF, WOFF, WOFF2).
For document, audio, ebook, archive, and font conversions, ChangeThisFile has meaningfully broader coverage.
Privacy and data handling
ChangeThisFile client-side routes include all major image formats, CSV/JSON/YAML/TSV/XML, DOCX→HTML, HTML↔Markdown, XLSX, PSD, HEIC, and fonts. Files processed by these routes never leave the browser — enforced by architecture.
ChangeThisFile server-side routes upload files over HTTPS, convert, return, and delete. The 24-hour R2 window applies only to async jobs above the inline threshold; synchronous conversions are not retained.
Filestack uploads all files to their CDN infrastructure — that's a core part of the product (hosting and delivery). Files are retained according to your plan settings. For conversion-only use cases, Filestack's retention model means your files live on their CDN by design.
If you're converting sensitive documents and don't want them hosted anywhere, ChangeThisFile's architecture is a better fit.
Developer experience
Filestack ships SDKs for JavaScript, iOS, Android, Python, PHP, and more. They're useful for integrating the upload picker widget, which is genuinely the product's standout feature. But for backend conversion calls, the SDK is just a wrapper around HTTP.
ChangeThisFile removed its Python and TypeScript SDKs entirely. The endpoint IS the SDK. If you can make an HTTP POST, you can use the API. No package to install, no library to version-pin, no breaking changes when you upgrade Node or Python.
import requests
with open("photo.heic", "rb") as f:
r = requests.post(
"https://changethisfile.com/v1/convert",
headers={"Authorization": "Bearer ctf_sk_your_key"},
files={"file": f},
data={"target": "jpg"}
)
with open("photo.jpg", "wb") as out:
out.write(r.content)
That's the complete integration. No dependencies beyond requests, which you almost certainly already have.
When to choose which
| Use case | Recommended |
|---|---|
| Pure file format conversion (backend only) | ChangeThisFile |
| Free API tier, no card required | ChangeThisFile |
| Privacy-sensitive files, no server upload | ChangeThisFile (client-side routes) |
| Document, audio, ebook, archive conversion | ChangeThisFile |
| Embeddable upload picker (multi-source) | Filestack |
| Persistent CDN file hosting + delivery | Filestack |
| Image transforms via URL parameters | Filestack |
| Upload, store, transform, deliver in one platform | Filestack |
If you need an upload widget and CDN hosting alongside conversion, Filestack bundles that well. If you need conversion only — and especially if you want a free tier and zero library dependencies — ChangeThisFile's free tier gets you there faster. 1,000 conversions/month, no card, one POST endpoint.