Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
1

Exporting Carousels Ruined!!!

Explorer ,
Jan 06, 2025 Jan 06, 2025

I create Instagram carousels DAILY for myself and my clients, some are minimal but most are creative and have seamless designs to make them unique.  This update limited the sizing for exports to 8192px, absolutely destroying my workflow.    Please reverse this or fix it.  Instagram increased carsouel from 10 posts to 20, my canvases are 10800 or 21600, 8192 isn't going to cut it.  

TOPICS
macOS
3.1K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Community Expert , Jan 07, 2025 Jan 07, 2025

@justnickrich 

 

I have created a custom script to save PNG, JPEG, or WEBP "slices" of an Instagram carousel image at 1080px wide,

without relying on the slice tool or Save for Web (Legacy) export functions.
Save Instagram 1080px Carousel Images v1-2.png
/*
Save Instagram 1080px Carousel Images v1-3.jsx
Stephen Marsh
v1.0, 8th January 2025
v1.1, 14th January 2025 - Added doc height checking in addition to the previous width checks
v1.2, 23rd March 2025 - Added a check if the final parent layer is an artboard. Added a check for the folder s
...
Translate
Adobe
New Here ,
Nov 10, 2025 Nov 10, 2025

Script error.jpg

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 10, 2025 Nov 10, 2025

What's the canvas size?

 

Are you running the latest 1.2 version?

 

Have you tried different save locations and or formats?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 10, 2025 Nov 10, 2025

The template canvas is 20 4x5 panels - so 21600 x 1350 px 
The header to the script tells me I'm running 23/3/25 v1.2
Tried JPGs and PNGs with the same error message.
It's weird - as I mentioned I used this maybe three days ago successfully - same version (latest) of PS using the same script and template.
I'm mystified as to what might have changed.

 

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 10, 2025 Nov 10, 2025

What exact version of Photoshop and OS?

 

Have you rebooted and or reset preferences/settings in Photoshop? Backup any unsaved actions or presets before resetting.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 10, 2025 Nov 10, 2025

Windows 11 25H2

PS 27.0

I guess resetting preferences is worth a punt.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 11, 2025 Nov 11, 2025

@Fuzzbass2000 

 

OK, it's not just you, it's broken in my Photoshop 2025 (26.11.0) on Win 11 as well.

 

Going back to Photoshop 2021, it works if I remove the block of code that checks for an artboard. However, it's still broken in Photoshop 2025 even without the artboard check.

 

At this point, I haven't worked out what it is. 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 11, 2025 Nov 11, 2025
LATEST

Ok - thanks for the confirmation. That is super weird, as it was fine a couple of days ago with Win11 / PS 27, and as far as I can see nothing has changed in the time in between. 


 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 07, 2025 Jan 07, 2025

While on the topic of Instagram carousel template creation, I have created a script to create variable width templates from 2-10 slices for either square or portrait layouts. The slice tool will automatically create the required number of slices and a warning will be presented if the canvas size is greater than 8192px.

 

Instagram Carousel Template Creator v1-0.png

 

/*
Instagram Carousel Template Creator v1-0.jsx
Stephen Marsh
v1.0, 8th January 2025
Info: This script creates a new Photoshop document with guides and slices for an Instagram carousel template
Inspired by
https://community.adobe.com/t5/photoshop-ecosystem-discussions/exporting-carousels-ruined/td-p/15073529
*/

#target photoshop

// Create the dialog window
var dlg = new Window('dialog', 'Instagram Carousel Template Creator (v1.0)');
dlg.orientation = 'column';
dlg.alignChildren = 'fill';

// Add radio buttons for format selection
dlg.formatGroup = dlg.add('panel', undefined, 'Select Format');
dlg.formatGroup.orientation = 'row';
dlg.formatGroup.square = dlg.formatGroup.add('radiobutton', undefined, 'Square (1080px x 1080px)');
dlg.formatGroup.portrait = dlg.formatGroup.add('radiobutton', undefined, 'Portrait (1080px x 1350px)');
dlg.formatGroup.square.value = true; // Default to square format

// Add dropdown menu for frame multiplier selection
dlg.framesGroup = dlg.add('panel', undefined, 'No. of Frames');
dlg.framesGroup.orientation = 'row';
//dlg.framesGroup.add('statictext', undefined, 'frames:');
var framesDropdown = dlg.framesGroup.add('dropdownlist', undefined, ['2', '3', '4', '5', '6', '7', '8', '9', '10']);
framesDropdown.selection = 0; // Default to 2

// Add Cancel and OK buttons and align them to the right
dlg.buttonsGroup = dlg.add('group', undefined, '');
dlg.buttonsGroup.orientation = 'row';
dlg.buttonsGroup.alignment = 'right';
dlg.buttonsGroup.add('button', undefined, 'Cancel', { name: 'cancel' });
dlg.buttonsGroup.add('button', undefined, 'OK', { name: 'ok' });

// Show the dialog
if (dlg.show() == 1) {
    var frames = parseInt(framesDropdown.selection.text);
    if (isNaN(frames) || frames < 1) {
        alert('Invalid frames value. Please select a valid number.');
    } else {
        var baseWidth = 1080;
        var baseHeight = dlg.formatGroup.square.value ? 1080 : 1350;
        var docWidth = baseWidth * frames;
        var docHeight = baseHeight;

        // Create the new document
        var newDoc = app.documents.add(docWidth, docHeight, 72, 'New Document', NewDocumentMode.RGB, DocumentFill.WHITE);

        // Add vertical guides and slices
        for (var i = baseWidth; i < docWidth; i += baseWidth) {
            // Add the vertical frame guides
            newDoc.guides.add(Direction.VERTICAL, i);

            // ActionDescriptor and ActionReference string to type ID conversion functions
            var s2t = function (s) {
                return app.stringIDToTypeID(s);
            };

            // Create slices at each 1080px interval
            if (i + baseWidth <= docWidth) {  // Ensure slices do not exceed document width
                var descriptor = new ActionDescriptor();
                var descriptor2 = new ActionDescriptor();
                var descriptor3 = new ActionDescriptor();
                var reference = new ActionReference();
                reference.putClass(s2t("slice"));
                descriptor.putReference(s2t("null"), reference);
                descriptor2.putEnumerated(s2t("type"), s2t("sliceType"), s2t("user"));
                descriptor3.putUnitDouble(s2t("top"), s2t("pixelsUnit"), 0);
                descriptor3.putUnitDouble(s2t("left"), s2t("pixelsUnit"), i);
                descriptor3.putUnitDouble(s2t("bottom"), s2t("pixelsUnit"), docHeight);
                descriptor3.putUnitDouble(s2t("right"), s2t("pixelsUnit"), i + baseWidth);
                descriptor2.putObject(s2t("at"), s2t("rectangle"), descriptor3);
                descriptor.putObject(s2t("using"), s2t("slice"), descriptor2);
                executeAction(s2t("make"), descriptor, DialogModes.NO);
            }
        }
    }

    // Add guides to the canvas edges
    newDoc.guides.add(Direction.HORIZONTAL, 0); // Top edge
    newDoc.guides.add(Direction.HORIZONTAL, newDoc.height); // Bottom edge
    newDoc.guides.add(Direction.VERTICAL, 0); // Left edge
    newDoc.guides.add(Direction.VERTICAL, newDoc.width); // Right edge

    // Check if the document width exceeds 8192px
    if (docWidth > 8192) {
        alert('Warning: Document width exceeds 8192 px!' + '\n' + 'Saving slices via "Save for Web" will incorrectly reduce the exported slice size.');
    }
}

 

  1. Copy the code text to the clipboard
  2. Open a new blank file in a plain-text editor (not in a word processor)
  3. Paste the code in
  4. Save as a plain text format file – .txt
  5. Rename the saved file extension from .txt to .jsx
  6. Install or browse to the .jsx file to run (see below)

 

https://prepression.blogspot.com/2017/11/downloading-and-installing-adobe-scripts.html

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines