Dribbble shot image: 1600 px wide, 10 MB, PNG JPG or GIF

Dribbble recommends images at least 1600 px wide and takes PNG, JPG or GIF up to 10MB. Sizes Sume can generate at 1600 wide, and a script to check the file.

4 min readSume
All posts

Dribbble takes PNG, JPG or GIF images up to 10MB and recommends a minimum width of 1600 pixels for images, GIFs and videos. There is no required ratio or height any more. Sume's GPT Image 2.5 can generate at 1600 wide in several shapes, but it does not list GIF as an output format, so a GIF has to come from elsewhere.

The requirements

The page is the Dribbble Help Center article on creating shots, dated April 10, 2025. It also notes the thumbnail is chosen later in a Final Touches step, so the first block does not have to be the thumbnail.

Dribbble shot image rules (read 2026-10-04)
RuleValue
Recommended minimum width1600 pixels
Ratio and heightno fixed limit
Image typespng, jpg, gif
Maximum image size10MB

Sizes at 1600 wide or more

Both edges must be multiples of 16, the longest edge at most 3840, the ratio at most 3:1, and the pixel count between 655,360 and 8,294,400. All four shapes below pass. The last column is the raw 8-bit RGB size, width times height times 3 bytes, a rough ceiling before compression.

Sume request sizes (computed)
SizeShapePixelsRaw RGB bytes
1600x12004:31,920,0005,760,000
1600x896about 16:9 (1.786)1,433,6004,300,800
1600x16001:12,560,0007,680,000
2048x15364:33,145,7289,437,184

Request it

Ask for output_format png or jpeg on POST /v1/images with model openai/gpt-image-2.5 and image_size set to the size. The docs list png, jpeg, webp and svg, so a GIF is out of scope.

Check the file

import asyncio, os
from PIL import Image

LIMIT = 10_000_000

async def main():
    path = "shot.png"
    img = Image.open(path)
    size = os.path.getsize(path)
    print(img.size, size)
    assert img.width >= 1600, "under the recommended 1600 px width"
    assert size <= LIMIT, "over the 10MB reading"

asyncio.run(main())

Mistakes

  • Treating 1600 as a hard limit. Dribbble says recommend, not require.
  • Assuming the 10MB reading. The page does not define MB, so the script uses 10,000,000.
  • Asking Sume for a GIF output.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume