Your files never leave your device. All processing happens locally in your browser.
How do I split a photo into an Instagram grid?
Upload one image, pick a grid (3×3, 3×2, 3×1, 3×4 portrait or 2×3), and the tool slices it on a canvas into equal square tiles — sized to an exact 1080 px if you want — then downloads them individually or as a ZIP. Each tile is numbered in UPLOAD order, because Instagram puts every new post top-left: you post the bottom-right tile FIRST (post #1) and the top-left tile LAST, so the pieces reassemble into one seamless picture across your profile grid. Everything runs in your browser; the photo is never uploaded, and you still post the tiles to Instagram yourself, in order and ideally in one sitting.
Presets: 3×3 (9 tiles), 3×2, 3×1, 3×4 portrait, 2×3, plus a custom rows×columns
Tiles numbered in UPLOAD order — post #1 (bottom-right) first, top-left last
Exact 1080 / 1440 px tiles with pica-quality downscaling, or native resolution
Download tiles one by one or as a name-sorted ZIP (post-01, post-02…)
100% in your browser — nothing uploaded; you post the tiles to Instagram yourself
What is
Instagram Grid Maker
An Instagram grid maker (also called an image splitter or grid splitter) is a tool that cuts one picture into equal tiles — usually 9 for a 3×3 block, 6 for 3×2, or 3 for a single row — so that when the pieces are posted individually they reassemble into one large image across the three-column profile grid, the “puzzle feed” look. The defining detail is posting order: Instagram places each new post at the top-left of the grid and pushes the rest right and down, so the tiles must be uploaded in reverse — bottom-right first, top-left last. This tool is a client-side canvas splitter: it computes the centred crop rectangle for every cell, renders each tile at exact pixels (optionally normalised to 1080 px), numbers them in upload order, and lets you download them one by one or as a ZIP. It does NOT post to Instagram and is not an AI or design tool — it slices and numbers, and you upload the tiles yourself.
Post the bottom-right tile first and the top-left tile last. Instagram adds each new post to the top-left, so the reverse order rebuilds the picture. This tool numbers the tiles in that exact upload order.
Instagram fills the profile grid newest-first: every post you publish lands in the top-left slot and shifts everything else one place to the right and down. So to make a split image reassemble, you upload the pieces in REVERSE reading order — the bottom-right tile goes up first, then along the bottom row, up the rows, and the top-left tile goes up last. For a 3×3 that means posting tile 9, 8, 7… down to 1. This tool labels every tile with its upload number (post #1 = the first one you publish) and names the ZIP files in that order (post-01, post-02…), so you just upload them in sequence. Do the whole run in one sitting — any Reel or normal photo posted in between drops into the grid and breaks the picture.
1080 px is the recommended tile width, so a 3×3 grid comes from a roughly 3240×3240 px source. This tool can normalise every tile to exactly 1080 (or 1440) px with quality downscaling.
Instagram displays feed images up to 1080 px wide, so 1080 px square is the standard tile. A seamless 3×3 grid therefore comes from a source around 3240×3240 px (3 tiles × 1080), a 3×2 from ~3240×2160, and so on. This tool can slice at your image’s native resolution or normalise every tile to an exact 1080 or 1440 px width, using pica for a crisp downscale. Note that since 2025 the profile GRID thumbnail centre-crops each tile to roughly 3:4 portrait, so a square tile shows only its middle on the grid (the full square is visible when the post is opened) — keep faces and text away from tile edges, and use the built-in 3:4 crop guide to preview what gets hidden. These are current best estimates; Instagram changes specs without notice.
No. The image is decoded and sliced on a canvas in your browser, and each tile is written locally with canvas.toBlob. There is no server, upload or CDN in the path.
Privacy is structural. Your image is read from an in-memory object URL, drawn onto an HTML canvas, and cut into tiles entirely on your device — there is no server, upload, database, logging or CDN anywhere in the processing path. Each tile is produced locally with canvas.toBlob and held as an object URL that is revoked when you load a new image, reset, or leave the page, so nothing lingers. The tool works offline once cached, closing the tab discards everything, and the only optional network use anywhere on the site is consent-gated advertising, which never sees your photo.
No. It slices and numbers the tiles; you download them and upload each one to Instagram yourself, in the numbered order. It has no access to your Instagram account.
This is a splitter, not a scheduler or an Instagram integration — it has no access to your account and cannot publish anything. It gives you a ZIP (or individual tiles) named in upload order, and you post them yourself from the Instagram app: bottom-right first (post #1) through top-left last. It is also not an AI or design tool: it does not generate, retouch, deskew or reflow your image — it cuts a straight equal grid. A gap/gutter trims pixels from the shared edges of neighbouring tiles (it does not add blank space), and the exported tile dimensions depend on your source resolution unless you pick a fixed tile width. Treat the layouts and 1080 px sizing as current best practice and verify on a real post.
Detailed Explanation
📖How It Works
What the Instagram Grid Maker Is
The Instagram Grid Maker is a 100% client-side image splitter that cuts ONE photo into a grid of equal tiles so that, posted individually, they reassemble into a single large picture across the three-column Instagram profile grid — the “seamless” or “puzzle” feed. You upload an image, choose a feed grid (3×3, 3×2, 3×1, 3×4 portrait or 2×3) or a custom rows×columns, and the tool slices it on an HTML canvas into exact-pixel tiles. Its defining feature is UPLOAD-ORDER numbering: because Instagram drops every new post into the top-left slot, the tiles are numbered so post #1 is the bottom-right piece you publish first and the highest number is the top-left piece you publish last. It shares its code with the general /image-splitter route and is route-aware — the same page shows Instagram presets, copy and numbering when opened at /instagram-grid-maker.
Splits one photo into equal tiles for a seamless 3-wide Instagram feed
Tiles numbered in UPLOAD order — post #1 = bottom-right, published first
Route-aware shared page; also serves the general /image-splitter tool
⚙️Methodology
How It Slices and Numbers the Tiles
A pure engine (imageSplitEngine.ts) does the geometry: computeCells() divides the decoded image into rows×columns cells, giving each one a centred source crop rectangle (inset by half the chosen gap on shared edges) and a final output size. Every cell carries two labels — a gridIndex (row-major, 0 = top-left) and a postNumber computed as total − gridIndex, which is the Instagram upload sequence (1 = bottom-right, published first). renderTileBlob() draws each cell’s source rectangle to a full-resolution canvas and, if you asked for a fixed tile width (1080 or 1440 px), downscales it with pica for a crisp result before writing the tile with canvas.toBlob. The React page draws a live preview — the image, the grid lines, the gutter and the tile numbers rendered straight onto a scaled canvas — and an optional 3:4 crop guide that shades the region each square tile loses on the profile grid. Files are named by upload order (post-01, post-02…) so a sorted ZIP is already in posting sequence.
computeCells() → centred crop rect + output size per cell (pure geometry)
postNumber = total − gridIndex — the exact Instagram upload order
renderTileBlob() uses pica to downscale to exact 1080 / 1440 px tiles
ZIP files named post-01… so name-sorting equals posting order
🔧Technical Details
Instagram Grid Specs & Posting Order (2026)
Instagram’s profile grid is 3 columns and fills newest-first: each new post lands top-left and pushes the rest right and down, so a split picture only lines up if you upload the pieces in REVERSE reading order — bottom-right tile first, top-left tile last (for a 3×3, post 9, 8, 7…1). Feed images render up to 1080 px wide, so 1080 px square is the standard tile and a seamless 3×3 comes from a roughly 3240×3240 px source. Since 2025 the profile GRID thumbnail centre-crops each post to about 3:4 portrait, so a square tile shows only its middle on the grid (the full square appears when the post is opened) — keep key content away from tile edges, and use the 3:4 crop guide to preview what is hidden. Post the whole set in one sitting: any Reel or normal photo published in between drops into the grid and breaks the picture. These are current best estimates; Instagram changes specs without notice.
3-column grid, newest top-left — upload bottom-right first, top-left last
1080 px square tiles; a 3×3 seamless grid needs a ~3240×3240 source
Since 2025 the grid centre-crops each tile to ~3:4 portrait
Post the full set in one sitting so nothing shifts the grid
⚠️Limitations
Honest Limitations
This tool SLICES and NUMBERS — it does not post. It has no access to your Instagram account and cannot publish or schedule anything; you download the tiles and upload each one yourself, in the numbered order, from the Instagram app. It is not an AI or design tool: it does not generate, retouch, deskew or reflow your image, and it does not stitch tiles back together — it cuts a straight, equal grid. A gap/gutter TRIMS pixels from the shared edges of neighbouring tiles rather than adding blank space, so raising it slightly shrinks each piece. Exported tile dimensions depend on your source resolution unless you pick a fixed tile width. And because the profile grid centre-crops to ~3:4, a square tile is partly hidden on the grid view (fully visible only when opened). Treat the presets and 1080 px sizing as current best practice and verify on a real post — Instagram changes specs and re-compresses uploads.
Slices and numbers only — you upload the tiles to Instagram yourself
No AI, retouch, deskew or re-stitching; a straight equal grid
A gap trims shared edges (shrinks tiles); it does not add blank space
Grid centre-crops squares to ~3:4 — verify on a real post
🔒Privacy & Security
Private by Design
Everything happens on your device. Your image is read from an in-memory object URL, drawn onto an HTML canvas and cut into tiles locally — there is no server, upload, database, logging or CDN anywhere in the processing path. Each tile is produced with canvas.toBlob and held as an object URL that is revoked when you load a new image, reset, or leave the page, so nothing lingers in memory or on disk. The live preview and the exported tiles come from the same local canvas pipeline. The tool works offline once cached, closing the tab discards your work, and the only optional network use anywhere on the site is consent-gated advertising, which never sees your photo.
Image decoded and sliced on a local canvas; tiles via canvas.toBlob
Tiles are object URLs revoked on new image / reset / unmount
No server, upload, database, logging or CDN in the processing path
Works offline once cached; closing the tab discards everything
Instagram grid specs & posting order (2026, current best estimates)
Item
Value
Why it matters
Grid columns
3
The profile grid is always three tiles wide
Tile size
1080×1080 px
Standard feed width; the export target here
3×3 source
~3240×3240 px
Three 1080 px tiles across and down
Posting order
Bottom-right first
New posts land top-left and push the rest
Grid crop
~3:4 portrait center
Squares are partly hidden on the grid view
Timing
Post in one sitting
Anything posted between tiles breaks the picture
This tool
Slices + numbers only
You upload the tiles to Instagram yourself
Upload the tiles bottom-right → top-left in one session. Sizes are current best estimates and change without notice; verify on a real post.