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?


2 Answers 2


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
    Commented Apr 20, 2014 at 21:54
  • 1
    The script works absolutely fine in Illustrator CC here.
    – Scott
    Commented Apr 21, 2014 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
    Commented Jul 23, 2014 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 Commented Jun 22, 2017 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.