Square item images: 2000x2000, 15 MB, 1:1 from AI
Square recommends item images of at least 2000 x 2000 px at 1:1, up to 15 MB. Use the Sume Image API 2K tier with a 1:1 ratio and check the pixel size.

Square accepts JPG, JPEG, PNG and GIF item images up to 15 MB, and recommends at least 2000 x 2000 pixels at a 1:1 ratio. Images added to the item library sync across your point of sale and online store. With Sume, request aspect_ratio 1:1 and resolution 2K, then check the output size before you upload, because the Image API serves resolution tiers, not exact pixels.
The figures are from Square's help article, read on 2026-10-02.
What are Square's item image numbers?
The article is short and concrete.
| Item | Value |
|---|---|
| Formats | JPG, JPEG, PNG, GIF |
| Max file size | 15 MB |
| Recommended size | At least 2000 x 2000 px |
| Recommended ratio | 1:1 |
| Where it appears | Synced across Square POS and Square Online |
How do I request a Square-ready image?
The Image API lists 1:1 among its aspect ratios and 2K as a resolution tier. Pass the real product photo as an input_references image, and ask only for a cleaner background so the item stays true to life. A café menu or shop counter sells on what the item looks like, so keep the product itself unchanged.
import os, requests
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json={
"model": "sume/auto",
"prompt": "Place this exact croissant on a clean white plate, plain light background, soft side light, do not change the croissant",
"input_references": [
{"type": "image_url", "image_url": {"url": "https://example.com/menu/croissant.jpg"}}
],
"aspect_ratio": "1:1",
},
timeout=60,
)
body = r.json()
if r.status_code == 200:
print(body["data"][0]["url"])
else: # 202: poll the job
print(body["data"]["status_url"])
Check the pixels before uploading
Do not assume 2000 x 2000. Open the file and compare it with the recommendation. If it is smaller, Square still accepts it, since 2000 x 2000 is a recommendation, but it may look soft on large screens. The 15 MB limit is only likely to bite on PNG output; ask for output_format jpeg if a file is too large.
Sources
Related posts
More in Use cases
- Substack free portion of a video: cut the public teaser clip
Substack lets publishers pick a free portion of an episode. Cut a matching public teaser for social with Sume's video trim and caption it for sound-off feeds.
- Substack video in email is a clickable image: pick the still
Substack plays video on the web but shows a clickable image in email. Pull candidate stills from your clip with Sume's video frames: unbilled, up to 24.
- Suno lawsuits still pending: a risk checklist for ad music
Suno v6 is trained on licensed data, yet TechCrunch reports suits from Sony, UMG and artists continue. A checklist for using any AI music in an ad.
- Replace an ad read in a podcast episode: one concat job, no editor
Swap a 30-second ad in a finished podcast file by concatenating three parts with source_in and duration on Sume Timeline audio. $0.01 flat, wav or mp3.
Written by Sume