LinkedIn Life tab images: 1128x376 main, 900x600 photos

LinkedIn Life tab sizes: main image 1128x376, custom modules 502x282, company photos 900x600 recommended. Request each from Sume at a legal size, then fit.

4 min readSume
All posts

The Life tab of a LinkedIn Page takes a main image of 1128x376, custom modules of 502x282 and company photos of 900x600 (minimum 264x176). All are PNG or JPEG up to 3MB. The main image is exactly 3:1, so a 1536x512 Sume request scales to it with no crop.

The Life tab sizes

LinkedIn notes that Life tab modules exist only if you have enhanced your Page with Career Pages, and that the dynamic cover slideshow needs a Premium Company Page subscription. The sizes below are from the same table as the Page cover.

LinkedIn Page images, Life tab (read 2026-10-04)
ModuleMinimumRecommended
Main image1128x3761128x376
Custom modules502x282502x282
Company photos264x176900x600

Request sizes that scale cleanly

Sume's GPT custom sizes need both edges to be multiples of 16, a longest edge of at most 3840, a ratio of at most 3:1 and 655,360 to 8,294,400 pixels. Each Life image can be requested at a legal size with the same shape, then scaled down.

Sume request size per Life image (computed)
TargetRequestRequest shapeScale factor
1128x3761536x5123:1 exactly0.734375 on both edges
900x6001536x10243:2 exactly0.5859375 on both edges
502x2821280x72016:90.3921875 wide; crops under 1 px of height

Fit all three

1536 times 0.734375 is 1128 and 512 times 0.734375 is 376, so the main image keeps its full frame. The 502x282 module is a hair wider than 16:9 (502 divided by 282 is 1.7801 against 1.7778), so the fit trims less than one pixel of height. ImageOps.fit in Pillow handles all three.

import asyncio
from PIL import Image, ImageOps

TARGETS = {
    "life-main": ("life-main-1536x512.png", (1128, 376)),
    "life-module": ("life-module-1280x720.png", (502, 282)),
    "life-photo": ("life-photo-1536x1024.png", (900, 600)),
}

async def main():
    for name, (src, size) in TARGETS.items():
        img = Image.open(src).convert("RGB")
        out = ImageOps.fit(img, size, Image.LANCZOS)
        out.save(f"{name}.jpg", "JPEG", quality=92, optimize=True)
        print(name, out.size)

asyncio.run(main())

Details from the page

Company photos open larger when a member clicks them. LinkedIn warns that if you follow the minimum guideline rather than the recommended one, the image will likely look small there. Use 900x600, not 264x176.

A video can also fill the main image or a custom module through a Vimeo or YouTube URL, and the still shown comes from that video's own thumbnail.

Checklist

  • Request main at 1536x512 and photos at 1536x1024.
  • Keep each file at most 3,000,000 bytes.
  • Upload company photos at 900x600, not the minimum.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume