Arrange up to 18 tiles here in the order you want them to read, then publish in reverse. Instagram fills the profile grid newest-first from the top-left, so the tile you want in position 1 is the last thing you post. Thumbnails are centre crops, so a 4:5 portrait loses its top and bottom. The planner also arranges tiles for you, slices a panorama across a row, reads the palette, and exports the grid, a checklist and the individual tiles.
The one thing that trips everyone up
A profile grid is three tiles across and reads the way a page reads: left to right, top to bottom. Publishing does the opposite. Every new post is inserted at the top-left and pushes everything else one slot right, wrapping down a row at the end. The grid is a stack, not a queue.
The consequence is easy to get wrong: your posting order is the exact reverse of your reading order. If you have planned nine tiles and you want tile 1 sitting top-left when you are finished, tile 9 has to go out first and tile 1 has to go out last. Plan forwards, publish backwards.
This is where hand-drawn grid plans fall apart. People arrange a nine-square layout in a design tool, post it top-left first because that is how they read it, and end up with the layout mirrored vertically. The planner removes the arithmetic: the posting-order list underneath is already reversed, each filename mapped to the row and column it lands in.
| Publish this | Lands in grid position | Row, column |
|---|---|---|
| 1st (earliest) | 9 | Row 3, column 3 |
| 2nd | 8 | Row 3, column 2 |
| 3rd | 7 | Row 3, column 1 |
| 4th | 6 | Row 2, column 3 |
| 5th | 5 | Row 2, column 2 |
| 6th | 4 | Row 2, column 1 |
| 7th | 3 | Row 1, column 3 |
| 8th | 2 | Row 1, column 2 |
| 9th (latest) | 1 | Row 1, column 1 |
Planning against a profile that already has posts
Most grids are not built from an empty profile. The already-posted control takes a count and a position: mark the last n tiles as live, or the first n if they are what the grid shows today. Marked tiles are dimmed, greyed in the exported PNG and left out of the checklist — so the list you copy holds only what you still have to publish, in the order you have to publish it.
What Instagram does to the image itself
A grid tile is not your post; it is a thumbnail derived from it. Whatever ratio you published at, the grid renders a crop into a fixed tile shape, taken from the centre by default. A 1080 x 1350 portrait post loses a band off the top and bottom even though the full frame is intact in the feed — a caption burned into the bottom of a 4:5 image can be absent from the grid entirely. The sizes guide works through what each surface keeps.
The tile shape itself has changed. The square tile was the constant for most of Instagram’s history; the grid has since moved to a taller portrait tile, with the proportions adjusted more than once. This planner models the 1:1 centre crop, the conservative choice: everything visible in a square is also visible in a taller tile of the same width. Centre the subject and the composition survives both.
Planner specification
| Setting | Value | Why it is that |
|---|---|---|
| Columns | 3 | The grid has been three across for as long as it has existed. |
| Maximum tiles | 18 (6 full rows) | Roughly two screens of profile. |
| Thumbnail crop | 1:1 centre crop | The default grid crop, and the conservative subset of a taller tile. |
| Stored thumbnail | 400 x 400 px JPEG, quality 0.82 | Sharp enough to judge a composition, small enough that 18 fit in storage |
| Export cell | 540 x 540 px | Half of 1080 — a clean fraction of an upload. |
| Export gutter | 6 px | Reads as separation without claiming to be Instagram’s spacing. |
| Grid PNG width | 1644 px | Three 540 px cells plus four 6 px gutters. |
| Grid PNG height | 1644 px at 3 rows, 3282 px at 6 rows | Rows x 540, plus one gutter more than the row count. |
| Single-tile export | 1080 x 1080 px PNG | Full upload size, one file per tile in the ZIP. |
| Per-tile note | 400 characters | Enough for a hook and a shot list. |
| Saved-plan budget | 4,200,000 characters of localStorage | Under the roughly 5 MB ceiling browsers impose per origin. |
The five arrangement patterns
Dragging eighteen tiles into order by hand is slow, and the useful shortcut is not “make it pretty” but “give me a starting point I can argue with”. The pattern selector sorts by the colour measured from each tile; you then drag whatever looks wrong.
- As dropped — the order you added the files.
- Checkerboard — splits the set into a lighter half and a darker half by measured brightness, then alternates them so no two of a kind sit adjacent. The classic chessboard grid, done arithmetically rather than by eye.
- Row by row — sorts every tile by hue, so colour walks around the wheel as the grid fills and reads as a gradient sliding upward.
- Column — the same hue sort, dealt down the columns instead of across the rows, so each vertical stripe holds one part of the spectrum.
- Panorama rows — hoists any panorama triples onto rows of their own, keeping their three pieces adjacent and in order.
Panorama triples are protected in every pattern: the sorter pulls them out, arranges the singles, then places the triples back on whole rows. Shuffle does not protect them, so the tool warns you when a shuffle has split a panorama.
Panorama: one image across a row
Drop a wide image into the panorama zone and it is cover-cropped to a 3:1 strip and cut into three exact squares, so the tiles read as one picture across a row. Rendering the strip once and cutting from it keeps the joins clean; resizing three slices separately leaves a visible step at each seam.
The tool warns if your source is narrower than 1.6:1, because a grid row is 3:1 and anything squarer gets cropped hard. It needs three free slots and says so rather than adding a broken pair. Start the pieces in the left column — a panorama beginning mid-row wraps onto two rows and reads as noise.
Notes, dates and the colour read
Select any tile and you get a 400-character note and a planned date. Both are saved with the arrangement, both appear in the copied posting order and the downloadable checklist, and a tile carrying either is marked with a dot. The date is a planning field and nothing more: this tool cannot schedule or publish anything and has no connection to Instagram.
Underneath the grid sits a colour harmony read. The tool samples a dominant colour from each tile, converts to hue, saturation and lightness, and scores cohesion out of 100 from three things: how tightly the hues cluster (a circular average weighted by saturation, so grey tiles do not drag the result around), how wide the brightness spread is, and how wide the saturation spread is. Above 72 it reports “reads as one set”, above 50 “loosely related”, below that “scattered”, alongside hue agreement as a percentage and plain-word readings of the four spreads.
Cohesion is an aesthetic read, not a ranking factor
Instagram does not measure the colour agreement of your grid, and a scattered palette is not penalised in reach. The tool says so on screen and the exported checklist repeats it. A low score only matters if a consistent look is something you want — for a news, meme or reaction account, “scattered” is the correct answer. What it is genuinely useful for is spotting the one tile whose swatch sits nowhere near the others.
The three exports
- Grid PNG — the whole plan as one 1644 px wide image with 6 px gutters, already-posted tiles greyed. The reference you keep open while working through the queue.
- Posting checklist (.txt) — a numbered list in publish order with a tick box per line, each naming the grid position, row and column, with the planned date and note indented underneath. Already-live tiles are listed separately, and the last line states which file ends up top-left.
- Tiles ZIP — every tile as a 1080 x 1080 PNG named
pos-01-…upward, with the checklist included. Useful when someone else is doing the posting.
A workflow that works
- Feed it your finished exports, not your camera roll. Colour grading is most of what makes a grid cohere.
- Arrange for the row, not the tile. Only three tiles are ever seen together on the top line, so the useful question is whether each row of three balances.
- Use Shuffle as a stress test. If a random arrangement looks as good as your careful one, your images are too similar.
- Reorder without the mouse. Tab to a tile, arrow keys to move, space or enter to pick up, arrows to carry, space to drop, Delete to remove, Escape to cancel.
The honest limits
Reverse order is the trap. The list under the grid is already in publishing sequence: the first line goes out today, the last goes out last and ends up top-left. Post in reading order instead and your plan is flipped upside down, with no fix but to delete and repost.
Your saved plan lives in one browser and can vanish. The arrangement is written to localStorage under the key stealthgram.grid-planner.v1, which is per-browser and per-origin: another laptop, another browser or a private window shows an empty grid. There is no account and no server copy — that is the trade for never uploading your photos. Clearing site data, a browser evicting storage under pressure, or private browsing will all take it. If the thumbnails exceed 4,200,000 characters the tool refuses to persist them and says so, and the status line shows how much of the budget you are using. If you need the plan elsewhere, export the PNG and the checklist.
Restored tiles are 400 px thumbnails. That is all localStorage can hold, so a plan reopened from storage carries thumbnails rather than originals. Enough to judge the arrangement, but exporting the tiles ZIP from a restored plan upscales 400 px to 1080 px and the files will be visibly soft. The tool warns when any tile came from storage.
The preview is an approximation of a moving target. It models square tiles with a 6 px gutter, and Instagram’s real grid has changed shape and spacing over time. What the planner is good at is relative arrangement — which image sits next to which — and that survives every redesign.
Practical ceilings. Eighteen tiles, files up to 80 MB each, sources up to roughly 80 megapixels. Anything skipped is named in an error box with the reason rather than dropped silently. There is no scheduling, no publishing and no Instagram connection: this tool never asks for your password and could not use it if you gave it one. Whether the grid is doing anything for you is a question for your own insights — the analytics guide covers which numbers are worth watching.
This runs in your browser
No sign-in, no Instagram password, no account connection. Images you open here are read by your own browser with the Canvas API from a local object URL. There is no upload endpoint on this site, so there is nowhere for the file to go. Open your browser’s network tab and watch: after the page loads, there are no further requests.
Frequently asked questions
In what order do I post to get the grid I planned?
Backwards. Instagram inserts each new post at the top-left, so the tile you want in grid position 1 is the last one you publish. The planner prints the sequence already reversed, mapping each file to the row and column it lands in. The grid holds 18 tiles, six full rows of three.
Can I plan around posts that are already live?
Yes. Enter how many tiles are already published and whether they sit at the top of the grid or the bottom of your plan. Those tiles are dimmed in the preview, greyed in the exported PNG and left out of the checklist, so the list you copy contains only what you still have to publish.
What do the arrangement patterns do?
They sort by the dominant colour measured from each tile. Checkerboard alternates lighter and darker tiles so no two of a kind touch; row by row and column sort by hue across rows or down columns; panorama rows puts each panorama on a row of its own. All are starting points — drag anything afterwards.
How does the panorama splitter work?
It cover-crops one wide image to a 3:1 strip, renders that once, and cuts three exact squares out so the joins line up. It needs three free slots and warns if your source is narrower than 1.6:1, because a grid row is 3:1.
Does the cohesion score affect my reach?
No. Instagram does not measure the colour agreement of your grid and a scattered palette is not penalised. It is an aesthetic read only, useful for spotting a tile whose colour sits nowhere near the others, and worth nothing if a consistent look is not what you are after.
Will my saved grid appear on my other devices?
No. The plan lives in your own browser’s localStorage, which is per-browser and per-origin. There is no account and no server copy, so another laptop, another browser or a private window will show an empty grid. Export the PNG and the checklist if you need it elsewhere.
Why do tiles from a restored plan export soft?
Because localStorage can only hold 400 px thumbnails, so a plan reopened from storage no longer has your originals. Fine for judging the arrangement, but exporting the tiles ZIP upscales 400 px to 1080 px. Re-drop the originals before exporting anything you intend to publish.
Are Instagram grid thumbnails square?
They were square for most of Instagram’s history and the profile grid has since moved to a taller portrait tile, with the proportions adjusted more than once. This planner previews the 1:1 centre crop, which is the conservative view: anything visible in a square is also visible in a taller tile of the same width.
Why does my portrait post look cropped on my profile?
Because the grid renders a centre crop of your post, not the whole frame. A 1080 x 1350 image loses a band off the top and bottom in the tile even though the feed shows all of it. Keep the subject and any text well inside the centre.
What can I export?
Three things: the grid as a 1644 px wide PNG, a numbered checklist as a text file with dates and notes, and a ZIP of every tile at 1080 x 1080 px with the checklist included. Nothing is scheduled or sent anywhere.