I have an Illustrator file that contains patterns. I'd like to export each pattern as an individual image to use in this new program that I'm trying called Sketch. Is there a batch processing script that exports layers as PNG or SVG? I'd like to have each geometric pattern available as a PNG, not as one large file.

Any thoughts?



If the patterns are indeed on individual layers, you may be able to use scripting to export each layer as an individual png.

Carlos Canto wrote a script for Illustrator and posted it in the Adobe forums.

In case of link rot, here's Carlos' script:

#target Illustrator

//  script.name = exportLayersAsCSS_PNGs.jsx;
//  script.description = mimics the Save for Web, export images as CSS Layers (images only);
//  script.requirements = an open document; tested with CS5 on Windows. 
//  script.parent = carlos canto // 05/24/13; All rights reseved
//  script.elegant = false;

* export layers as PNG
* @author Niels Bosma
// Adapted to export images as CSS Layers by CarlosCanto

if (app.documents.length>0) {
else alert('Cancelled by user');

function main() {
    var document = app.activeDocument;
    var afile = document.fullName;
    var filename = afile.name.split('.')[0];

    var folder = afile.parent.selectDlg("Export as CSS Layers (images only)...");

    if(folder != null)
        var activeABidx = document.artboards.getActiveArtboardIndex();
        var activeAB = document.artboards[activeABidx]; // get active AB        
        var abBounds = activeAB.artboardRect;// left, top, right, bottom

        var docBounds = document.visibleBounds;
        activeAB.artboardRect = docBounds;

        var options = new ExportOptionsPNG24();
        options.antiAliasing = true;
        options.transparency = true;
        options.artBoardClipping = true;

        var n = document.layers.length;
        hideAllLayers ();
        for(var i=n-1, k=0; i>=0; i--, k++)
            var layer = document.layers[i];
            layer.visible = true;

            var file = new File(folder.fsName + '/' +filename+ '-' + k +".png");

            layer.visible = false;

        activeAB.artboardRect = abBounds;

    function hideAllLayers()
        forEach(document.layers, function(layer) {
            layer.visible = false;

    function showAllLayers()
        forEach(document.layers, function(layer) {
            layer.visible = true;

    function forEach(collection, fn)
        var n = collection.length;
        for(var i=0; i<n; ++i)

Copy and paste this into a text file and save the text file with a .jsx suffix. Then place the .jsx file into Adobe Illustrator CS(x)/Presets/[your language]/Scripts. After relaunching Illustrator, the script should be visible via File > Scripts within Illustrator.

  • FYI, the script posted above doesn't work in Illustrator CC, it gives me: Error 8, Syntax error. Line 1: – user22377 Apr 20 '14 at 21:54
  • 1
    The script works absolutely fine in Illustrator CC here. – Scott Apr 21 '14 at 19:38
  • 2
    I was also getting syntax error on line 1. When I reopened the .jsx there was additional code above the original line 1 from code above. I deleted everything above #target Illustrator saved the .jsx file. I relaunched Illustrator and the script works fine now. I am also using CC – user27604 Jul 23 '14 at 0:24
  • Here's updated version that uses the layer name in the file name instead of a numeric counter (so "mydoc-layername.png" instead of "mydoc-1.png") ... if anyone else needs like I did. gist.github.com/34e54d199de123b8e3c50a305f23115e – Christopher D. Emerson Jun 22 '17 at 17:56

For simplicity and speed of workflow, I would probably use the slice tool to create slices for the individual patterns, then Save for Web, making sure that "All Slices" was selected in the "Export:" dropdown. If I were building from scratch, I'd put each pattern on its own artboard (which you could still do) and use File>Export with the "Use Artboards" option checked.

Not the answer you're looking for? Browse other questions tagged or ask your own question.