How to Resize Images for Social Media Without Losing Quality
Every platform has its own dimensions and its own compression, and uploading the wrong size means the platform crops, stretches, or re-compresses your image for you — usually worse than doing it yourself. The underlying rules for avoiding quality loss don't change even as platform specs do.
The concepts that actually matter
Pixels, not DPI, for screens. DPI/PPI (dots/pixels per inch) matters for print. For anything viewed on a screen, only the absolute pixel dimensions matter — a 1080×1080 image looks identical on screen whether it's tagged 72 DPI or 300 DPI. If a design tool is fixating on DPI for a web/social image, that setting is irrelevant to how it'll actually display.
Aspect ratio is non-negotiable. A 16:9 landscape photo forced into a 1:1 square either gets stretched (distorted) or needs cropping — there's no third option that preserves both the ratio and the full frame. Crop deliberately to keep the subject centered rather than letting an automated tool decide.
Resize down, never up. Scaling an image larger requires the software to invent pixel data that doesn't exist — a process called interpolation — which produces a soft, blurry result no matter how good the algorithm is. Always start from the largest original you have and scale down; there's no reliable way to add real detail back into an upscaled image.
Format choice for social specifically
- JPEG — photographs, complex gradients. Export at roughly 80-90% quality as a starting point; below that, artifacting becomes visible, especially in skies or smooth gradients.
- PNG — text, logos, sharp lines, transparency. Platforms tend to compress JPEGs containing text harshly, producing visible ringing around letters — PNG avoids this at the cost of a larger file.
- WebP — smaller files with transparency support, though check whether your specific posting workflow/tool accepts it before relying on it exclusively.
A quick resizing script (if you're handling this programmatically)
from PIL import Image
def resize_for_platform(input_path, output_path, target_width, target_height):
img = Image.open(input_path)
target_ratio = target_width / target_height
img_ratio = img.width / img.height
# Crop to match target aspect ratio before resizing, rather than stretching
if img_ratio > target_ratio:
new_width = int(img.height * target_ratio)
left = (img.width - new_width) // 2
img = img.crop((left, 0, left + new_width, img.height))
else:
new_height = int(img.width / target_ratio)
top = (img.height - new_height) // 2
img = img.crop((0, top, img.width, top + new_height))
img = img.resize((target_width, target_height), Image.LANCZOS)
img.save(output_path, quality=88)
resize_for_platform("original.jpg", "instagram_square.jpg", 1080, 1080)
Image.LANCZOS is a higher-quality resampling filter than the default — worth specifying explicitly for anything going out publicly.
Current platform dimensions
These specs change periodically — treat this as a starting point, not a permanent reference, and check each platform's current help documentation before finalizing anything at scale.
- Square post: 1080×1080 (1:1)
- Portrait post: 1080×1350 (4:5) — takes up more feed space
- Landscape post: 1080×566 (1.91:1)
- Stories/Reels: 1080×1920 (9:16)
- Profile picture: displays at 170×170, upload at least 400×400
- Cover photo: 820×312 desktop, 640×360 mobile — design at 820×462 and keep key content in the center "safe zone" so it's not cropped differently across devices
- Feed image: 1200×630
X (Twitter)
- In-stream photo: 1600×900 (16:9)
- Company page post: 1200×627
- Personal profile feed: 1080×1080 square generally works well
Common mistakes
- Over-compressing to chase a small file size, producing visible blocky artifacts — find the point where file size is reasonable (typically under 1-2MB) without visible degradation, rather than maximizing compression
- Ignoring aspect ratio lock when resizing, resulting in stretched or squashed images
- Relying entirely on the platform's in-app crop instead of composing the crop yourself — you lose control over exactly what's visible and how compression interacts with your specific image
Conclusion
The durable fundamentals — correct aspect ratio, never upscaling, matching format to content type — matter more than memorizing exact pixel numbers, since those numbers will eventually change. Get those three right and most platform-specific resizing becomes a matter of checking current dimensions rather than relearning technique.