FileHutch

Migrate from Cloudinary

You are probably buying a DAM to store avatars

Cloudinary is a media platform with a genuinely excellent transformation engine. If what you actually needed was avatars, receipts and a private download link, you are paying for a great deal of product you never open.

Before and after

The same attachment, both ways

Cloudinary

<%# The crop is part of the URL, so it is part of your codebase %>
<img src="https://res.cloudinary.com/acme/image/upload/
          w_256,h_256,c_fill,g_face,q_auto,f_auto/v1/<%= user.avatar_id %>">

FileHutch

<%# The crop is a setting. Change it in the dashboard, no deploy. %>
<%= image_tag user.avatar_transform_url("avatar") %>

Why people move

What changes, and why it matters

Transformations live in the URL
w_256,h_256,c_fill sits in your templates and, sooner or later, in your database. Changing a crop means finding every string. A FileHutch transform is a name, and the name never changes.
Usage is metered in credits
Transformations, storage and bandwidth all draw on one pooled number, so a traffic spike and a bulk re-crop cost the same thing and the bill is hard to predict. FileHutch is a flat monthly price with a storage allowance.
The bytes live in their account
Leaving means re-uploading everything and rewriting every URL you stored. With bring-your-own-bucket the files are already in your account and moving is a settings change.
Most of it is a DAM
Collections, approvals, tagging, video pipelines. Real features, and a real reason to stay if you use them — but a lot of surface to keep in your head if you do not.

Side by side

Where each one is stronger

Aspect Cloudinary FileHutch
Transform reference Parameters in the URL A name you define once
Pricing unit Pooled credits Flat monthly + storage allowance
Where bytes live Their account Yours, or our managed bucket
Bandwidth Metered R2 egress is free; we never meter it
DAM features Extensive None, deliberately
Video Full pipeline Stored, not processed

The move, in order

Every step is reversible until the last one.

  1. 1

    Create a project and matching transforms

    Name them after what they are for — avatar, thumb, hero — not after their dimensions.

  2. 2

    Point a project at your own bucket

    R2, S3 or B2. Credentials are scoped and encrypted at rest, and you can test the connection before saving.

  3. 3

    Copy the assets across

    Pull each asset at its original size and upload it. You are copying originals only — the crops are regenerated from the named transforms.

  4. 4

    Replace URL building with transform names

    Every w_,h_,c_ string becomes a name. This is the step that pays for the move.

  5. 5

    Cut over and keep the old account for a month

    Nothing references Cloudinary once the templates are changed, but keep it until you are sure.

What does not change

  • Images still render from a CDN edge
  • Format and quality negotiation is still automatic
  • You can still store the original and crop later

When to stay where you are

Cloudinary's transformation engine is better than ours and it is not close — overlays, face detection, video, generative fill. If you use those, stay. This page is for people who are paying for them and using none.

Try the move on one attachment first.

The free plan is enough to migrate a single model and see whether the rest is worth it.