Dashboard Design

Using images, logos and icons in Data Studio

Images in Data Studio split into two different things, and most of the trouble comes from not noticing. The failures are the interesting part.

Lazarina Stoy·

Images, Logos and Icons in Data Studio: The Complete Guide

Images in Data Studio split into two completely different things, and most of the trouble comes from not noticing. There’s the picture you place on the canvas — a logo, an icon, a background. And there’s the image that comes out of your data, a column of product shots or ad creatives rendered inside a table. They’re configured differently, they fail differently, and the failures are the interesting part.

Putting an image on a Data Studio canvas

Insert → Image, then either upload a file or point at a URL.

Data Studio accepts PNG, JPG and SVG. That third one is worth saying loudly, because a currently-ranking tutorial states that the file “must be .jpg” and that PNG can’t be displayed, which is wrong — Google names all three in its own documentation. Use SVG for logos wherever you have one: it stays sharp at any size, it survives a canvas resize, and it’s usually a smaller file than the PNG equivalent.

Two settings on the image worth using every time:

Lock the aspect ratio. A stretched client logo is the fastest way to make a report look careless, and it happens whenever somebody drags a corner handle without holding the constraint.

A logo selected on a Data Studio report canvas, with the Image properties panel highlighted showing the Image File name, a Preserve Aspect Ratio toggle, the Image Link URL field and an Accessibility alt text field reading MLforSEO Logo
Select the image and the whole panel is four fields. Preserve Aspect Ratio near the top, alt text at the bottom — and the one people fill in is neither. View full size

Fill in the alt text. It’s at the bottom of the image’s Setup tab under Accessibility, it shipped in 2025, and almost nobody uses it. A report that gets forwarded to someone using a screen reader currently announces your logo as nothing at all.

What to write in it depends on the image’s job. A client logo wants the organisation’s name and nothing else — “Acme Corp”, not “Acme Corp logo image”. A decorative band or background shape wants it left empty, so a screen reader skips it rather than announcing furniture. And an image that carries information — a legend, a diagram, a screenshot of something — wants a sentence describing what it shows, because nothing else in the report will.

Place the logo once, not on every page

The most common way agencies maintain a logo is to copy it onto each page. Then the client rebrands, and there are eleven copies to find.

Do this instead: place the logo on page one, select it, and use Arrange → Make report-level. It now appears on every page and is maintained in one place.

Then the thing that catches everyone: report-level components sit behind page content by default. If your logo vanishes the moment you add a background shape, that’s why — and the fix is Theme and layout → Report-level component position → Top. The layout and grid guide covers the rest of the Arrange menu.

Why Google Drive image links fail in Data Studio

Drive is where most marketers park a logo, and it’s where most images silently fail.

The share link you copy out of the Drive interface — the drive.google.com/file/d/FILE_ID/view form — does not work as an image URL in Data Studio. It’s a link to a viewer page, not to an image file, so Data Studio gets HTML where it expected a picture.

Two alternative URL forms circulate on Google’s own forums, and I want to be straight about their status: neither is documented by Google, and I haven’t verified either in-product. They are drive.google.com/uc?export=view&id=FILE_ID and lh3.googleusercontent.com/d/FILE_ID, both built by extracting the file ID from the share link. Forum threads report success with each; I’d test rather than trust, and I’ll update this section once I have.

The advice that doesn’t depend on resolving that: don’t host report images on Drive. Put the logo somewhere with a stable public HTTPS URL — the client’s own site, your site, or any static host. It removes a whole category of failure, and it removes the permissions question that comes with it.

Images that come out of your data

The second kind. You have a column of URLs — product images, ad creatives, country flags — and you want the picture in the table rather than the link.

Two routes:

Change the field’s data type to Image. In the data source, find the field and set its type to Image (under URL). The table now renders the picture. This is the simpler route and the one most people want.

Use the IMAGE() function. A calculated field, IMAGE(url, alt_text), which gives you two things the data-type route doesn’t: alt text, and the ability to build the URL conditionally. A CASE statement that returns a green tick or a red cross depending on whether a page passed a check is a genuinely useful status column, and it’s about four lines.

Building a status column with IMAGE() and CASE

The most useful thing the IMAGE() function does, and it’s about four lines. Say you have a table of landing pages and you want a tick or a cross depending on whether each one met its conversion-rate threshold.

Create a calculated field:

CASE
  WHEN Conversion Rate >= 0.03 THEN IMAGE("https://example.com/icons/tick.svg", "Meets target")
  WHEN Conversion Rate >= 0.02 THEN IMAGE("https://example.com/icons/warn.svg", "Near target")
  ELSE IMAGE("https://example.com/icons/cross.svg", "Below target")
END

Add that field to the table as a dimension and you have a status column that updates with the data. Three things make it work in practice:

Host the three icons somewhere stable — the same advice as for logos, and for the same reasons. Three files, uploaded once, used across every report you build.

Use the second argument. IMAGE(url, alt_text) is the only route to alt text on a data-driven image, and a column of ticks with no alt text is meaningless to a screen reader. It’s also what shows on hover.

Put the threshold in the column header, not in the reader’s head. Rename the field to “Status (target 3%)” so nobody has to ask what the tick means.

Where this earns its place in a marketing report: any table long enough that a client scans rather than reads. A forty-row landing-page table with a status column gets acted on; the same table with a conversion-rate column gets skipped. It’s also the cheapest alternative to conditional formatting when what you want is a symbol rather than a fill.

Three documented ways Data Studio image fields break

Three documented ways a Data Studio image field stops working: viewer's credentials, a copied data source, and an untrusted domain — with a note that two are invisible to the report's author
All three look identical to the reader. Two are invisible to you.

These are the ones that cost an afternoon, and none of the ranking pages on this topic mentions any of them.

1. Viewer’s credentials kills them. If the data source uses viewer’s credentials rather than owner’s, image fields stop rendering. The report works perfectly for you and shows broken images to the client — which is the worst possible failure mode, because you won’t see it. The data source guide covers which credential mode to use and why.

2. Copying a data source disables them. When a data source is copied, image fields come across disabled. So a report built from your template renders images fine in the original and shows nothing in the copy, until somebody re-enables the field. If you’re distributing a template with image columns, this belongs in your instructions.

3. The trusted-domain dialog. Images from a domain Data Studio hasn’t seen before can trigger a security prompt the viewer has to accept. On a client report that reads as “something is wrong with this dashboard”, and it’s another argument for hosting images somewhere boring and stable.

Icons in a report, and how to stop them looking assembled

Icons do two jobs in a report: marking sections so the eye can find them, and carrying status in a table.

Standardise the size before you place any of them. Pick one dimension — 24 × 24 works — and export everything at it. Icons collected from three sources at three sizes are the main reason a report looks assembled rather than designed.

Use one family. An outline icon next to a filled one reads as a mistake even to people who couldn’t say why.

For status, use IMAGE() with a condition rather than placing icons by hand. Hand-placed status icons are wrong the moment the data changes, which on a live dashboard is immediately.

Emoji are a legitimate shortcut in field names and chart titles. They need no hosting, no URL and no permissions, they survive a copy, and they render everywhere. For a quick status column or a section marker they’re better engineering than a hosted icon, whatever they do to the tone.

Images as report backgrounds, and when to stop

A background image behind a cover page is fine. A background image behind charts is almost always a mistake — it competes with the data for contrast, and it’s the fastest way to fail the contrast thresholds that the design principles guide argues for.

If you want a branded field rather than white, use a flat colour or a very low-contrast texture, and check a chart’s gridlines are still visible on top of it. If they aren’t, the background wins and the data loses.

An image checklist before a Data Studio report goes out

  • Logo is SVG where possible, aspect ratio locked, alt text filled in
  • Logo is report-level, not copied onto every page
  • Report-level component position checked if anything has a background
  • No images hosted on Google Drive
  • If the data source uses viewer’s credentials, image fields tested as a viewer
  • If the report is a template, a note about re-enabling image fields after copying
  • Icons all one size and one family
  • Status icons driven by a condition, not placed by hand

Frequently asked questions

What image formats does Data Studio support?

PNG, JPG and SVG. Several popular tutorials claim JPG only, which is wrong — Google names all three. Use SVG for logos wherever you have one, because it stays sharp at any size and survives a canvas resize.

Why aren’t my Google Drive images showing in Data Studio?

The share link Drive gives you points at a viewer page rather than an image file, so it can’t render. Alternative URL forms circulate on Google’s forums but none is documented and I haven’t verified them, so the reliable answer is to host report images somewhere with a stable public HTTPS URL instead.

Why do images work for me but show as broken for my client?

Most likely the data source uses viewer’s credentials, which stops image fields rendering. It’s a bad failure mode because you never see it yourself. Check any report with image columns while signed out, or from a second account, before it goes to a client.

Where to go next on report visuals

Scroll to Top