Video | Tableau | Data visualisation | Tool strategy

Dynamic image resizing in Tableau using Cloudinary

Images are a right pain to work with in Tableau, so let me blow your mind with a tool called Cloudinary.

Part ofTableau quick tips
Watch on YouTube
  • Cloudinary lets you transform images on request by appending parameters to a URL, handling resizing, cropping, watermarks, face detection and background removal without pre-processing every asset
  • In Tableau you can use a 'go to URL' dashboard action to pass a dynamically built image URL into a web object, changing the displayed image when you click a mark
  • Use the data model and relationships rather than physical joins, since relationships only bring data together at query level and reduce computational load
  • You can build the image URL with a calculated field by splitting it into the base URL, the 'upload' transformation segment and the file path, then injecting parameters like a 300x300 resize
  • Cloudinary's free tier offers 25 monthly credits (1,000 transformations each), making it viable for tactical or small-scale dashboard deployments, while the API scales for larger embedded solutions

Tim shows how to use Cloudinary, a cloud image platform, to dynamically resize and transform images shown inside Tableau dashboards, rather than pre-processing every image file yourself.

He uses a mock Excel dataset of names linked to Cloudinary-hosted image URLs, connected into Tableau via the data model. The goal is to display an image that changes and resizes correctly when a user clicks a mark on a dashboard.

The Breakdown
  1. Connect your data using relationships, not joins 1:00

    When linking a table of records to a table of image URLs, use the Tableau data model's relationships rather than physical joins. Relationships only combine data at query time, which is less computationally intensive than joins or blends done ahead of time.

  2. Understand how a Cloudinary URL is built 2:07

    A Cloudinary image URL is made of a base/service URL plus an 'upload' segment plus the file path; recreating this structure (rather than just pasting static links) is what lets you inject transformation parameters later.

  3. Wire up a 'go to URL' action into a web object 3:00

    Set up a dashboard action of type 'go to URL' from your sheet, targeting a web object, and insert the image URL field from your data source. Clicking a mark then updates whatever image the web object displays.

  4. See what Cloudinary transformations can do 5:31

    Inside the Cloudinary console you can append parameters to a URL to resize, crop to a shape, generate thumbnails, or set exact width and height, and the result is cached after first render for speed. This is worth exploring before building it into Tableau, since it shows what's possible in the URL itself.

  5. Build a calculated field that injects resize parameters 8:31

    You must first isolate the 'upload' segment position in the URL string, then use that position to split the URL into a base part and a file path part, before concatenating a resize parameter (like a 300x300 dimension) in between. This calculation is what dynamically resizes every image without touching the original files.

  6. Reconnect the action to the new calculated URL 13:38

    Once the resizing calculation works, edit your existing URL action to insert the new field instead of the raw link. A common mistake here is forgetting to keep the 'upload' keyword in the reconstructed string, which breaks the URL entirely.

  7. Other transformations available in Cloudinary 14:47

    Beyond resizing, the same parameter-based approach can add watermarks, text overlays, face-detection-aware cropping, privacy masking, background removal and style effects, all triggered by changing the URL rather than editing the image file.

  8. Cost and where this fits 16:42

    The free tier gives 25 monthly credits, each covering 1,000 transformations, which is enough for a tactical or small-scale dashboard; larger or embedded deployments would use Cloudinary's API more directly, and the same hosted images can be reused outside Tableau in other tools.

Worth Knowing
  • This method currently requires loading images into a web object rather than a native image role, since Tableau's dashboard action can only pass a URL that way at the time of recording
  • If you forget to keep the 'upload' keyword when reconstructing the URL in your calculation, the image request breaks entirely
  • Cloudinary caches a transformation after the first request, so repeat views of the same size/crop render faster
  • The free tier's credit limit (25 credits/1,000 transformations each) makes it realistic for small or tactical dashboards but you'd want the API for large-scale or embedded use
Use It When

Reach for this when you need dashboard images to resize, crop or format consistently on click without asking a design team to pre-produce every size, especially in embedded or client-facing dashboards where image presentation matters.

How this Rollup was made provenance & method

A Rollup is drafted by AI from the video's transcript, then reviewed and edited by Tim. Everything used to produce this one is listed below — the model, the exact prompt, and the source video — so the process is transparent and reproducible.

Transcription
On-device — NVIDIA Parakeet v3 for recent videos, OpenAI Whisper large-v3 for earlier ones. The transcript never leaves the machine or gets published.
Drafting
Claude Sonnet 5 in the cloud, from that transcript.
Prompt
The exact Rollup prompt (v2) — the full system prompt, unedited.
Source video
Watch on YouTube
Drafted
5 July 2026 at 09:38
Reviewed & edited
5 July 2026 at 09:41 · by Tim Ngwena

Model + prompt + video is everything you'd need to recreate a Rollup like this yourself. The one thing we don't share is the transcript.

Rights. The video and its transcript are the property of TN Media Ltd. Unauthorised use or download is prohibited. © TN Media Ltd.