Quick answer: organic TikTok photo posts and carousels export at 1080×1920 pixels (9:16), JPG or PNG, and a carousel can hold up to 35 photos. Ads use different sizes — square and landscape placements are still in the spec — and those files want to stay under roughly 100 KB.

Organic photo posts

The native photo format is the same vertical canvas as video: 1080 pixels wide and 1920 tall. If you upload a square or landscape photo, TikTok letterboxes it with blurred bars, which looks like an accident. Design on the full 9:16 canvas and keep any text well inside the edges — the right side holds the like, comment, and share icons, and the bottom strip holds the caption and sound bar.

A detail people miss: a carousel is not a separate format. You select multiple photos on the same 1080×1920 canvas, and viewers swipe through. The spec allows up to 35 photos per post, but swipe analytics consistently drop off after six to eight slides, so anything longer needs a reason to keep going — a tutorial, a before/after sequence, a numbered list.

Paid placements have their own table because the same image can land in a vertical feed, a square card, or a horizontal banner slot.

Placement Dimensions Ratio Format / limit
Organic photo / carousel 1080×1920 9:16 JPG or PNG
Vertical image ad 720×1280 9:16 JPG/PNG, ~100 KB
Square image ad 640×640 1:1 JPG/PNG, ~100 KB
Horizontal image ad 1200×628 1.91:1 JPG/PNG, ~100 KB
Carousel ad card 2–35 images (2–20 shown) varies JPG/PNG, ~100 KB

The practical takeaway: design the master at 1080×1920, then export a deliberate 1:1 crop for square placements rather than letting the ad system auto-crop. Auto-crop on a 9:16 image usually cuts faces and CTAs in half.

Safe zone for photos

The vertical canvas has permanently occupied UI. For organic photos, keep text and faces out of the bottom 250 pixels and the rightmost 160 pixels. For ads, the platform's overlay is bigger — reserve the bottom 330 pixels for the call-to-action and keep the central 60% of the frame for your message.

Profile pictures are small on TikTok: the display tile is roughly 96–100 pixels, so export at a 200×200 or larger square and treat it like a circle crop. Tiny words in a logo are unreadable there.

Export settings that survive upload

TikTok recompresses everything, so the goal is to give it a clean, high-quality source rather than fight the compressor:

  • Export JPG at quality 80–85, or PNG for flat graphics with text and solid colors.
  • Keep the source file modest — the ad platform's 100 KB guideline is stricter than organic upload, but lean files process faster everywhere.
  • Use RGB color, not CMYK.
  • Avoid thin borders at the very edge; they get clipped by the phone UI.

For a fuller cross-platform reference, the social media image sizes hub has every network in one table, and the Story safe zone guide covers the 9:16 overlay in detail.

Building a set rather than a single image

Most TikTok photo work is not one image — it is a launch set of carousel slides, a profile tile, and often a matching ad crop. That is a case where batch generation is genuinely faster than resizing by hand, and it is what Neatico was built for: one product description produces the vertical carousels plus the square and landscape ad crops in one pass.

Frequently asked questions

Can I upload 1080×1350 (4:5) photos to TikTok? They upload, but TikTok fits them onto the 9:16 canvas with blurred bars or cropping. 1080×1920 is the only ratio that fills the screen cleanly, so design vertical from the start.

How many photos can a TikTok carousel have? Up to 35 per post. Treat that as the platform's limit, not the target — six to eight slides hold attention better for most launches.

What is the minimum image size for TikTok ads? The vertical spec is 720×1280, square is 640×640, and horizontal is 1200×628. Uploading at the minimum is fine; above it, the ad manager compresses anyway.

Does TikTok support PNG images? Yes, PNG works for photos and carousels, and it is the better choice for flat text graphics. Use JPG for photographic images to keep the file small.