Who this is for: designers and growth operators who ship profile grids, teaser carousels, and launch “nine-grid” teasers as crisp PNGs from macOS. You need one agreed master canvas, predictable safe zones so logos and faces survive in-app chrome, explicit @2x / @3x rules, and a byte budget for the whole nine-tile set—not just a single hero file. A remote Mac mini M4 is the practical place to run identical exports, ImageMagick/sips splits, and manifest-backed QA without melting a laptop.
What you get: a comparison matrix, PM-ready acceptance criteria, ops-friendly naming, a batch path with tool parameters, and an FAQ on alpha seams and ICC. Cross-check Retina math in the SVG → @2x/@3x PNG matrix, color policy in the sRGB / Display P3 checklist, and watch-folder automation via OpenClaw batch social PNG patterns.
Table of Contents
2026 Platform Matrix (Nine-Grid & Single-Tile)
Nine-grid work starts from one square master sliced 3×3 into equal PNGs. The table lists per-cell export size, the full master to design, and safe zones inside each cell (overlay guides from the cell edge in Figma/Sketch). Figures are 2026 defaults for organic posts—confirm against legal and live previews.
| Surface | Cell export (W×H px) | 3×3 master (W×H px) | Safe zone (per cell) | @2x / @3x rule | 9-tile cumulative budget (PNG) |
|---|---|---|---|---|---|
| Instagram profile grid (square) | 1080×1080 | 3240×3240 | Keep hero type & logos ≥90 px from cell edges; avoid faces in outer 8% rim | Design at @3×1080 (3240) for sharpest grid; allow @2×1080 (2160) master only if ops upscales with a documented AI/sharpen policy | ≤9.0 MB total for all nine cells after lossless pass (≈1.0 MB avg/cell); hard cap 1.8 MB any single cell on mobile-first accounts |
| Instagram carousel (square tiles) | 1080×1080 | 3240×3240 (same slice workflow) | Reserve top 11% for username/stacking UI on first tile; bottom 12% for caption overlap in preview | Export final cells at 1×1080 for upload; master remains @3× for detail | ≤10.5 MB per nine uploaded frames (slightly higher if first tile carries heavier gradients) |
| Facebook / Meta feed (1:1 batch) | 1080×1080 | 3240×3240 | Outer 72 px padding minimum for text; center-weight subject for cropping tolerance | Match IG master; downscale to 1080 with Lanczos or Photoshop “Bicubic Sharper” once | ≤11 MB nine-tile set; flag any cell >1.2 MB before paid boosting |
| X (Twitter) large card companion | 1600×900 (16:9 single) | — (not a square nine-grid) | Keep critical copy inside 1200×680 centered box on the 1600 canvas | Design @2× of 800×450 logical if you pair web + app previews | N/A for nine-grid; cap 5 MB per PNG for fast timeline decode |
| LinkedIn feed (single) | 1200×627 | — | Left/bottom UI safe: keep logo & CTA inside 1040×520 | Master at 2400×1254 (@2×) then export 1200×627 | ≤3.5 MB per asset for executive mobile feeds |
| TikTok in-feed still (9-up style) | 1080×1920 vertical slices uncommon; use 1080×1080 cells in a 3240×3240 grid only for cross-post | 3240×3240 when reusing IG grid | Assume 150 px top/bottom UI; never place legal in bottom 18% | Prefer dedicated 1080×1920 masters for TikTok; do not stretch square cells | If reusing nine squares: same 9 MB grid budget; vertical-native sets tracked separately |
@2x/@3x column: uploads are often 1080 px wide; the master should still be Retina-aligned—@3× ⇒ 3240 px width before slicing. Lighter @2× (2160 px) masters need a documented downscale and a single sharpen pass to limit halos.
Requirements Breakdown & Acceptance Criteria
Give PMs and ops a binary checklist so “done” means measurable files, not subjective taste.
- Geometry: Master width and height divisible by 3; post-slice cells identical within ±0 px (no off-by-one from odd totals).
- Color: Embedded sRGB IEC61966-2.1 on every PNG unless marketing signed a Display P3 exception (rare for social PNG).
- Alpha: Binary decision—either full-bleed opaque cells or documented transparency with matte color for networks that flatten oddly.
- Text legibility: Minimum 42 px cap height on 1080 cells for body promo copy; 60 px for hero words after slice.
- Byte thresholds: Per-matrix row above; additionally reject any nine-tile campaign if combined decode pixels > 9×(1080×1080) with supersized upscales.
- Traceability: Manifest row per cell:
campaign_id,slice_index,preset_version,sha256,exported_at_utc.
Sign-off flow: design locks the master → automation slices → lossless optimize (e.g. oxipng level 4) → script verifies dimensions + ICC + hash → ops uploads in index order 0_0 top-left through 2_2 bottom-right. Anything that fails a row blocks upload and rolls back the manifest.
Slice Rules & Naming Template
Grid indexing: Rows increase downward, columns left to right: r{row}c{col} with r0c0 = top-left. This matches how most viewers read a profile grid and avoids “reverse Instagram order” debates.
Slice math: For master width W and height H, cell width = W/3, cell height = H/3. Use integer division only when W and H are multiples of 3; otherwise fix the master—do not distribute remainder pixels silently.
Naming template (regex-friendly, lowercase):
{brand}_{campaign}_{yyyyMMdd}_grid3x3_r{row}c{col}_w{width}px_h{height}px_srgb_v{preset}.png
preset— e.g.figma_export_v3oraffinity_photo_2_6; bump when slice script or ICC policy changes.- Optional suffix
_nocropfor archival masters and_uploadfor post-optimized finals to prevent ops mixing paths. - Never hand-rename after QA; regenerate and re-hash.
Batch Export & Consistency Checks (Remote M4)
Run heavy grids on a remote Mac M4 so fan noise, sleep, and VPN drops on designer laptops do not corrupt overnight jobs. Standardize folders: inbox/master/, out/slices/, out/opt/, logs/run-{timestamp}.jsonl.
ImageMagick 7 (equal 3×3 split): from a PNG master that is already sRGB and exact multiple of 3:
magick master.png -crop 3x3@ +repage +adjoin out/slices/cell_%d.png
Rename outputs with your script to the template above; %d enumerates tiles in left-to-right, top-to-bottom order for ImageMagick’s default tiling—confirm order once per install.
macOS sips quick audit loop: verify each cell’s pixel dimensions and profile presence:
for f in out/opt/*.png; do
sips -g pixelWidth -g pixelHeight -g profile "$f"
done
Lossless squeeze (example parameters): oxipng -o 4 --strip safe out/opt/*.png after confirming legal metadata policy—many social PNGs can strip non-critical chunks when compliance agrees.
Scripted checks: identical cell dimensions; total bytes under matrix budget; ICC name contains sRGB; optional pngcheck -v; edge diff vs. master to catch 1 px gaps. Log to JSONL.
FAQ: Transparent Edges & Color Profiles
Will transparent PNG edges show seams between grid cells?
Yes, if networks flatten alpha against unexpected backgrounds or if compression introduces semi-transparent fringe. For nine-grids, prefer opaque cells with baked backgrounds. If you must use alpha, test on white, #111, and brand gradient headers; add a 1 px inner matte matching the dominant background and avoid slicing through soft shadows.
Should we embed ICC profiles in social PNGs?
For cross-platform predictability, embed sRGB and disable “assign profile only” exports that drop the ICC chunk. Some optimizers strip profiles—configure them to keep ICC or re-embed with sips --embedProfile after optimization if your checklist requires it. For P3 masters, convert to sRGB for social unless the team owns a monitored P3 pipeline; see the linked color checklist.
Why not design directly at 1080 and scale up?
Up-scaling 1080 to 3240 for “quality” almost always adds halos and brittle type. Design at the intended master, slice down to 1080 once, and let the CDN deliver the smaller file. If ads need 4K masters, keep them in a separate archive path, not mixed with organic nine-grid uploads.
Rent Remote Mac M4 Design Compute for Nine-Grid Batches
Run ImageMagick splits, oxipng passes, and manifest-backed QA on a dedicated Mac mini M4 node—stable presets, fast SSD, and SSH/VNC access from your team’s time zones. Browse plans and pricing on the public site without signing in, then scale up when campaigns stack.