Demand Gen logo 150 KB, images 5 MB: check sizes before upload
Demand Gen allows images up to 5 MB but logos only 150 KB. Check bytes on every Sume image before upload, since output compression is not served in v1.

Google's Demand Gen image specs cap image assets at 5 MB but cap a logo at 150 KB, a limit more than 30 times smaller. A generated logo at the recommended size can pass the dimension check and still fail on bytes. Sume's image API does not serve output_compression in v1, so you cannot ask it for a smaller file; the dependable fix is to measure every file before upload and regenerate or convert any that are over.
The limits Google lists
The Demand Gen image page, read on 2026-10-03, gives sizes and ratios for each asset type.
| Asset | Minimum / recommended | Size limit |
|---|---|---|
| Square 1:1 | 300x300 / 1200x1200 | 5 MB |
| Landscape 1.91:1 | 600x314 / 1200x628 | 5 MB |
| Portrait 4:5 | 480x600 / 960x1200 | 5 MB |
| Vertical 9:16 | 600x1067 / 1080x1920 | 5 MB |
| Logo | Not read for this post | 150 KB |
Why a logo is the likely failure
Photographic detail, gradients and noise make files large. A flat logo compresses well, but a model-generated one often carries texture and soft shading that a designer's vector would not. Dimensions and ratio are only half of what Google validates, and the byte limit is the one that does not show up in a preview.
The page also allows up to 20 images per ad and 2 to 10 cards in a carousel, so a batch can contain dozens of files and one oversized logo is easy to miss by eye.
What Sume lets you control
The images docs list output_format as png, jpeg, webp or svg, with each model accepting only what its catalog lists, so read supported_parameters first. They state that output_compression and seed are in the schema but advertised by no model in v1, so sending either returns 400 unsupported_parameter. Aspect ratios include 1:1, 4:5 and 9:16, and the resolution tiers are 512, 1K, 2K and 4K.
Two levers remain: a lower resolution tier, and a different format. The Demand Gen page text read for this post does not list accepted file types, so do not assume webp is accepted for ads without checking the current page.
A byte check that runs before upload
Run this over the URLs a generation batch returned. It reads each file, compares the byte count to the limit for its role, and prints the offenders. It uses only the standard library.
import urllib.request
LIMITS = {"image": 5 * 1024 * 1024, "logo": 150 * 1024}
def check(url, role):
with urllib.request.urlopen(url, timeout=60) as r:
body = r.read()
kind = r.headers.get("Content-Type", "")
ok = len(body) <= LIMITS[role]
return ok, len(body), kind
batch = [
("https://media.sume.com/img/example/0.png", "image"),
("https://media.sume.com/img/example/logo.png", "logo"),
]
for url, role in batch:
ok, size, kind = check(url, role)
print(role, "OK" if ok else "TOO BIG", size, kind)Keep the check in the pipeline
Run the byte check as a gate between generation and upload, not as a manual step at the end. A gate that fails the whole batch on one oversized logo is annoying but cheap, and a rejected asset in an ad account is slower to discover. Log the size next to the job id so you can see which prompts tend to produce heavy files, and adjust the brief for logos accordingly.
If the logo is over
Regenerate at a lower tier before trying anything else, and ask for a flat background and few colors in the prompt, since less detail means fewer bytes. Keep the generation job output, then re-measure. A logo you will use for months is also worth a one-time manual export in a design tool, where file weight can be tuned directly.
Sources
Related posts
More in Use cases
- Demand Gen video ads: four ratios, a 5 s floor and the 4:5 gap
Demand Gen video takes 1:1, 16:9, 4:5 and 9:16, from 5 s. How to render the four-ratio set with Sume, including the 4:5 case the video API does not list.
- EU AI Act Art. 50(2): providers must mark AI outputs; ask your API
Article 50(2) requires providers of generative systems to mark outputs in machine-readable form. A checklist of what to ask an AI video or image API vendor.
- EU AI Act Art. 50(4): AI text on public-interest topics and scripts
Article 50(4) asks deployers to disclose AI text on public-interest matters unless a human reviewed it editorially. What it means for video scripts.
- EU AI Act Article 50 timeline: code of 10 June, duties from 2 August
Article 50 transparency duties apply from 2 August 2026. The final labelling code was published 10 June 2026, with about 190 signatories by end of July.
Written by Sume