---
title: "Instagram"
subtitle: "The grid is a portfolio. Every post is a brand exhibit"
description: "How the brand shows up on Instagram: profile mark, feed ratios and the 3:4 grid crop, Stories and Reels safe areas, and the export rules."
author: "Studio"
section: "Touchpoints"
layer: "core"
subsection: "Social"
order: 1
status: "published"
access: "team"
brand: "internal"
---

Instagram is the brand's most visual channel. The grid reads as a portfolio before anyone opens a single post. The studio team owns it.

## Identity here

- **Logo**: the avatar variant carries the profile photo; it has to survive a circular crop at thumbnail size. Variants and clear space: [4.1 Logo](/brand/logo.html).
- **Colour**: imagery and graphics stay inside the brand palette; no per-post filters or off-palette gradients. Accents: [4.2 Colour](/brand/color.html).
- **Type**: where text is designed into a post, Story, or Reel cover rather than shot in-camera, it uses the brand type roles, not the platform's sticker fonts: [4.3 Typography](/brand/typography.html).

## Formats

Each format's spec sits above its template. Sized blanks (with the safe areas and grid crop marked) are requested from design; a download opens once the template lands. Instagram publishes no exact safe-area or file-size figures, so the margins below are working values, not platform guarantees. The one that catches people: the profile grid crops every post preview to 3:4, so a composition has to hold with the top and bottom of a 4:5, or the sides of a landscape, shaved off.

### Profile photo

1080×1080 · 1:1 · JPG/PNG. Displayed in a circular crop at about 320×320; centre the mark and upload large so it stays sharp on retina. This is the avatar logo variant, taken from the logo kit rather than downloaded as a template here.

<div class="asset-card">
  <div class="asset-card-preview asset-card-preview--light asset-card-preview--contain">
    <img src="/image/1080x1080" width="1080" height="1080" loading="lazy" alt="">
  </div>
  <div class="asset-card-footer">
    <p class="asset-card-title">Profile photo, 1080×1080</p>
    <div class="asset-card-actions">
      <a class="button" data-size="small" data-icon-only href="/brand/logo.html" data-tooltip="Open the logo kit" aria-label="Open the logo kit for the avatar profile photo">{{icon:arrow-top-right}}</a>
    </div>
  </div>
</div>

### Portrait post

4:5 · JPG/PNG. The default feed export and the tallest ratio the feed shows. The grid preview crops to 3:4, so hold the composition centred.

<div class="asset-card">
  <div class="asset-card-preview asset-card-preview--light asset-card-preview--contain">
    <img src="/image/1080x1350" width="1080" height="1350" loading="lazy" alt="">
  </div>
  <div class="asset-card-footer">
    <p class="asset-card-title">Portrait post, 1080×1350</p>
    <div class="asset-card-actions">
      <button class="button" data-size="small" data-icon-only disabled aria-label="Portrait post template, requested from design">{{icon:download}}</button>
    </div>
  </div>
</div>

### Square post

1:1 · JPG/PNG. The grid preview crops to 3:4.

<div class="asset-card">
  <div class="asset-card-preview asset-card-preview--light asset-card-preview--contain">
    <img src="/image/1080x1080" width="1080" height="1080" loading="lazy" alt="">
  </div>
  <div class="asset-card-footer">
    <p class="asset-card-title">Square post, 1080×1080</p>
    <div class="asset-card-actions">
      <button class="button" data-size="small" data-icon-only disabled aria-label="Square post template, requested from design">{{icon:download}}</button>
    </div>
  </div>
</div>

### Landscape post

1.91:1 · JPG/PNG. The grid preview crops to 3:4.

<div class="asset-card">
  <div class="asset-card-preview asset-card-preview--light asset-card-preview--contain">
    <img src="/image/1080x566" width="1080" height="566" loading="lazy" alt="">
  </div>
  <div class="asset-card-footer">
    <p class="asset-card-title">Landscape post, 1080×566</p>
    <div class="asset-card-actions">
      <button class="button" data-size="small" data-icon-only disabled aria-label="Landscape post template, requested from design">{{icon:download}}</button>
    </div>
  </div>
</div>

### Story

9:16 · JPG/PNG or MP4. Keep roughly 250px clear top and bottom; the profile info and reply bar overlay the frame.

<div class="asset-card">
  <div class="asset-card-preview asset-card-preview--light asset-card-preview--contain">
    <img src="/image/1080x1920" width="1080" height="1920" loading="lazy" alt="">
  </div>
  <div class="asset-card-footer">
    <p class="asset-card-title">Story, 1080×1920</p>
    <div class="asset-card-actions">
      <button class="button" data-size="small" data-icon-only disabled aria-label="Story template, requested from design">{{icon:download}}</button>
    </div>
  </div>
</div>

### Reel cover

9:16 · MP4 with a JPG or PNG cover. Keep the top ~250px and bottom third clear; the caption, username, and action rail overlay the frame, and the cover crops to 3:4 in the grid.

<div class="asset-card">
  <div class="asset-card-preview asset-card-preview--light asset-card-preview--contain">
    <img src="/image/1080x1920" width="1080" height="1920" loading="lazy" alt="">
  </div>
  <div class="asset-card-footer">
    <p class="asset-card-title">Reel cover, 1080×1920</p>
    <div class="asset-card-actions">
      <button class="button" data-size="small" data-icon-only disabled aria-label="Reel cover template, requested from design">{{icon:download}}</button>
    </div>
  </div>
</div>

_Specs verified against platform documentation: 2026-07-05._

## Don't

<div class="grid cols-2 gap-m">
  <div class="card dont-card">
    <img class="dont-card-media" src="/image/800x450" width="800" height="450" loading="lazy" alt="">
    <div class="dont-card-icon">{{icon:close-circled}}</div>
    <h4 class="card-title">Don't put text in the overlay zones</h4>
    <p class="card-description">The top and bottom of a Story or Reel belong to the platform UI. Text there sits under the username, caption, or reply bar.</p>
  </div>
  <div class="card dont-card">
    <img class="dont-card-media" src="/image/800x450" width="800" height="450" loading="lazy" alt="">
    <div class="dont-card-icon">{{icon:close-circled}}</div>
    <h4 class="card-title">Don't compose for the full 4:5</h4>
    <p class="card-description">The grid crops every preview to 3:4. A composition that only works at full height falls apart on the profile, where first impressions happen.</p>
  </div>
  <div class="card dont-card">
    <img class="dont-card-media" src="/image/800x450" width="800" height="450" loading="lazy" alt="">
    <div class="dont-card-icon">{{icon:close-circled}}</div>
    <h4 class="card-title">Don't drift off the palette</h4>
    <p class="card-description">Platform filters and sticker colours read as someone else's brand. Designed assets use the brand palette; photography stays true to its grade.</p>
  </div>
</div>

## Voice here

Captions carry the same voice as everywhere else. The platform changes the length, not the register. Lead with the point: the first line is all most people see before "more". The cheat sheet: [3.3 How We Communicate](/brand/tone-of-voice.html).

## Tools

- [Image Placeholder](/tools/image-placeholder.html), draft-stage imagery at exact post and Story dimensions

## Checklist

- [ ] Exported at spec size for the placement, no platform-side upscaling
- [ ] Composition holds inside the 3:4 grid crop
- [ ] Stories/Reels text clear of the overlay zones
- [ ] Colour and type from the brand system; avatar logo variant on the profile
- [ ] Caption passes the voice check, point first
