Facebook Page photos: 320x320 profile, 16:9 and 2.4:1 cover
Facebook recommends a 320 x 320 Page profile picture cropped to a circle and a cover that shows 16:9 on computer, 2.4:1 on mobile. Make one safe-zone cover.

Facebook recommends a Page profile picture of 320 x 320 pixels, shown at 176 x 176 on computer and 196 x 196 on smartphones and cropped to a circle. The cover photo shows at 16:9 on computer and 2.4:1 on mobile, at least 400 x 150 pixels. So make one 16:9 cover with the important content in the centre band that survives both crops. Sume's Image API gives you the 16:9 frame directly.
The figures are from Facebook's help page, read on 2026-10-02.
What are Facebook's numbers?
The page splits profile and cover rules.
| Item | What the page says |
|---|---|
| Profile picture recommended | 320 x 320 px |
| Profile display | 176 x 176 on computer, 196 x 196 on smartphone, cropped to a circle |
| Cover photo shape | 16:9 on computer, 2.4:1 on mobile |
| Cover minimum | 400 px wide and 150 px tall |
| Fastest-loading cover | sRGB JPG, 851 x 315 px, under 100 KB |
| Logos or text | Use PNG |
How do I design for two crops?
A 16:9 image is taller than a 2.4:1 one, so the mobile crop removes the top and bottom. Keep the logo, face or product in the middle third vertically and let the edges carry background only.
Request a 16:9 cover from Sume
Use aspect_ratio 16:9 and ask for open space at the top and bottom. For the profile picture use your real logo as a 1:1 PNG, because a logo should not be regenerated.
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": "Wide cover image of this shop interior, the counter centred, empty space above and below, no text in the image",
"input_references": [
{"type": "image_url", "image_url": {"url": "https://example.com/shop/interior.jpg"}}
],
"aspect_ratio": "16:9",
},
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"])
Sources
Related posts
More in Use cases
- FCC: AI voices in calls are artificial under the TCPA. A checklist
The FCC's February 2024 ruling treats AI-generated voices in calls as artificial under the TCPA, so consent is needed. What to check before a TTS-driven call.
- Find dead air in a voice-agent call recording with STT word gaps
Long silences hurt voice-agent calls. Transcribe a recording with Sume STT and list every pause over a threshold, with times. Python sketch.
- Flow's 50 daily credits don't roll over: plan a production week
Flow refreshes 50 free credits a day after first use and drops what you skip. How to plan a week of clips, and how a Sume USD balance behaves instead.
- Flow monthly credits by Google AI plan: how many clips fit
Flow gives 200, 1,000, 10,000 or 25,000 bonus credits a month by plan. What that buys in Veo 3.1 and Gemini Omni Flash clips, and how a Sume balance differs.
Written by Sume