Thanks for coming to, the world's #1 resource for all things InDesign!

The Ultimate Contact Sheet

The other day one of my clients told me he wanted to create a contact sheet from his archive of images, but he also wanted to add extra metadata to every image. And of course he wanted to do this using only InDesign. Now that made me think of the way we used to create contact sheets. I remember that I used to do this in Photoshop (back in the pre-Bridge period, long time ago), later I used Bridge to create an InDesign contact sheet, but today that option has been discontinued leaving us all to fend for ourselves.

And it’s not only the contact sheet that sometimes leaves people with a big question mark hanging above their heads, the metadata part isn’t simple either. Sure, you could invest in a few handy scripts that do all the work for you, but there actually is a perfect workflow that you can use within InDesign.

The Tools
First of all, let’s take a look at our available tools? what can we use today to accomplish this? Well, our job requires things:

  1. Find a way to automatically place an entire folder of images, page per page, in a new InDesign document
  2. Find a way to automatically create the necessary metadata and place this information under our image thumbnails

The metadata part might be something you’ve heard before: Yes, we will be using the Captions option in InDesign — more on that in a minute. But first, how to get all the images in? One option is to use the Gridify feature. But remember that we have a very large folder of images and Gridify requires that you place the grid one page at a time. Another option might be to use Data Merge, but that requires other setup.

However, there is a free script included with InDesign (yes, you already have it!) that allows you to import all the images — it’s called ImageCatalog.jsx!

Let’s Get Started
First of all it is very important to know how much metadata you want to use on your page. Because adding more metadata means having smaller images on each page. So let’s do a quick test. Choose Window > Utilities > Scripts (to open the Scripts panel) and there you can open the Application > Samples > JavaScript folder in the panel. In this folder you will find the ImageCatalog.jsx script.

The Scripts panel with the highlighted ImageCatalog script

Double click the script to run it, and select a folder with images, then choose Open. (You probably want to choose a folder that has just a few dozen images — not hundreds or thousands — as this is just a test.) After having selected a folder you can set up the specifics of your contact sheet. Choose your preferred amount of rows and columns but don’t change anything else at this point and just click OK to create your contact sheet.

The basic setup in the ImageCatalog script dialog window.

The basic result.

Notice that the graphic frames have different proportions and  not all the image names are visible on the page. This is because these file names are too long and thus result in overset text frames.

Setting up the Captions
Now it’s time to see how much room we need for our captions. Delete the filename of one of the images on your page, then select that corresponding image and choose Object > Captions > Caption Setup.

I would like to use three metadata fields in my contact sheet: filename, ICC profile and image dimensions. So click the (+) symbol at the right of the window to add two more metadata fields. Here you choose Image ICC and Dimensions from the dropdown list.

I will keep most of the Position and Style options at the bottom of the window as they are but only want to change the Offset value, there I choose 8 points. This will be the distance between the image and the actual caption text. Click OK when you’re done to close the window.

Now apply the caption by selecting your image and choosing Object > Captions > Generate Static Caption. (Note: if the resulting text frame says <Multiple intersecting links> then this means the text frame is probably touching other images, and you’ll need to move the other images away.)

Now let’s measure the total amount of space that is needed to position the caption. For this I use the Measure tool and measure the total height. Notice that the Info panel will pop-up automatically and tell you the total distance (about 72 points in my case). Now that we have all the needed ingredients it’s time to close our test file and start building the actual contact sheet.

Use the Ruler tool to measure the much needed space for adding captions.

Putting it all together
Double click the ImageCatalog.jsx script again and choose your image folder. But this time we’ll be changing a few of the script settings.

  1. Choose the same number of rows and columns as before.
  2. Type in your measured height in the Vertical Offset field, in my case 72. This will add enough space in the contact sheet for us to add the captions later
  3. Also deselect the Frame to Content checkbox if you want the image frames to be a uniform size.
  4. I also deselected the Labels checkbox because we will be adding the filename later as part of our captions, so we will deselect this to avoid a double entry.

Click OK when you’re done.

Now we end up with a contact sheet that has evenly spaced images but is still missing the captions:

Now at this point you might be thinking “hmm you need to select images if you want to add captions, so I guess I will be selecting all the images page per pa?” WRONG! Instead, there is one place in InDesign that allows you to target all the images in the file at the same time and apply captions to them? but where…?

Give up? The correct answer is the Links panel. There you get a list of all the images in your file but also allows you to add captions to all these images. So you are actually crossing over to different pages using one simple command.

First set up the captions for this document using the exact same method as before (choosing Object > Captions > Caption Setup). Now open the Links panel (Window > Links) and select all your links (you can click on one and Shift-click on the last one). Finally, choose Captions > Generate Static Caption from the Links panel menu!

Apply the captions from the Links panel, not the Object menu.

The finished contact sheet.

So now we have a finished contact sheet with added metadata!

Adding Finishing Touches

  • In case you do end up with overset text somewhere you can always enlarge your text frames automatically by double clicking the [Basic Text Frame] object style and activating the Auto Frame option inside of the Text Frame Options area.
  • If you want to fill your frames proportionally you can also edit the [Basic Graphics Frame] object style and choose Fill Frame Proportionally inside of the Frame Fitting Options area.

Use Frame Fitting Options to fill your frames.

The same contact sheet with filled graphic frames.

  • If you wish to change your document dimensions to a different page size you can always use the Layout Adjustment and Liquid Layout options.
Bart Van de Wiele

Bart Van de Wiele

Bart started his career as a graphic designer in 2001, specialising in print production and image retouching. After this he became an Adobe Certified Instructor, doing classroom training for various companies and covering a broad range of Adobe solutions. He's a renowned speaker at conferences in Europe, Australia and the United States and has written many articles on Adobe's print and e-publishing solutions. Bart recently joined Adobe Systems as a Solutions Consultant where he continues his passion for creative software.
Bart Van de Wiele

Latest posts by Bart Van de Wiele (see all)

  • - November 30, -0001
Related Articles

47 Comments on “The Ultimate Contact Sheet

  1. I’ve been using a modified ImageCatalog script since CS3. I adjusted it for those rare instances that the extension was in all caps; and I also included Scitex CT (.sct). If I recall correctly, only one line of code needs to be edited, and it’s pretty easy to tell which line of code it is.

    I do have two tips:
    First, at the very end of the post David mentions ways to adjust the document dimensions after running ImageCatalog, but there is a way to adjust that BEFORE running the script. It’s not made evident anywhere–and it took me days to figure it out–but the script will use the LAST, USER-DEFINED document preset. I usually use Tabloid in Landscape orientation, so I have a preset for that and for Portrait orientation. Since the script will create a new document, start by creating a new document. If the desired preset is already displayed, just cancel. If not, choose the preset and let InDesign create a blank document. As aforementioned, the script will create a new document based on the preset.

    The other tip is simple: Take note of the number of images in the folder. The script displays how many images will be placed on the contact sheets. If the numbers don’t match up, look for possible problems. Sometimes it’s as simple as other folders within the primary folder.

    Though I use Live Caption frequently, it hadn’t crossed my mind to combine the two features.

    Thanks David,

    • Hi Bob,
      Every time I run the script, it makes the page vertical 612PX x 792px. Even if I have a blank landscape page set in inches open, it always generates the contact sheet to the size I mentioned. Do you know how i can create a contact sheet on a landscape page set in inches?
      thanks so much!

  2. Thanks for the tips.

    Note: “I used Bridge to create an InDesign contact sheet, but today that option has been discontinued”…

    It was resurrected in CS6! Select images in Bridge, then Tools > Photoshop > Contact Sheet II.

  3. Our company usually skips a version on CS so we had just gotten used to having the contact sheet/InDesign ability in Bridge and we were so sad it disappeared.

    I’ve never understood creating larger files of files just so you could see them all together. (in Photoshop). :)

    This workflow is fabulous. Thanks so much.

  4. @Bob thanks for the feedback! I wasn’t aware that indesign uses the last used user defined preset, I’ll try that one later.

    @contact sheetII lives What I meant by saying that was that the INDESIGN contact sheet from Bridge was discontinued, but that was’t really clear in the article.

  5. I’m missing something. I’m using CS6 and I do not have Photoshop/Contact Sheet II under Tools. I’m running the windows version. Am I not seeing something or does the Windows version not have it?

  6. Bridge does have a very basic built-in function to create PDF contact sheets without having to install any plug-ins. In the upper right choose the Output workspace (also available via Window > Workspace > Output or keyboard shortcut Cmd/Ctrl + F4). It does not give you access to any metadata other than the filename, so it’s not nearly as robust as the other solutions mentioned, but it’s good for quick-and-dirty contact sheets.

  7. “Note: ?I used Bridge to create an InDesign contact sheet, but today that option has been discontinued??

    It was resurrected in CS6! Select images in Bridge, then Tools > Photoshop > Contact Sheet II.”

    Uh, no. Photoshop Contact Sheet II is not the same thing as creating InDesign contact sheets from Bridge.

    From what I remember, a freelancer convinced Adobe to drop InDesign contact sheets from Bridge and that freelancer is now selling it as a plugin.

  8. Thanks for outlining the process in such detail!

    I usually use Bridge “Output” workspace, and do contact sheets/metadata that way, but I like the option to have everything spaced evenly on the page :O)

  9. Would it be possible to tweak this tool a bit? I’m hoping to be able to use it to print one image per page (figured that part out), with the images at 100%, with the caption displaying the file name, the file type, and the image dimensions (in picas).

    I did a test run and was able to get the script to place one image per page but not sized at 100%. Also, I was unable to get the captioning to work. I could setup the captions in the “caption setup” dialog box but when I went to add the caption using “Object > Captions > Generate Static Caption”, the generate static caption option was greyed out.

    Any advice?


  10. Its just completely crazy that this is so fussy to do. It should be super easy and none of the methods (Bridge, PS script, ID script, or even Lightroom output) work well at all. It should be as easy as File > Script > Create PDF contact sheet. Options of row and column, resolution, captions, compression/PDF settings > RUN and Save. Done.
    PS CSII just makes a huge PS file for EACH PAGE, the script in ID is so clunky and ugly…
    The capability was already there in the past – its an obvious thing for designers and photographers to need to do. What bury and wreck a simple capability?

  11. Thank you SO SO much for taking the time to post this! It saved me 3 hours today when I needed to create a document with all of our photos from Try-Ons. THANK YOU!

  12. hi is there a way doing this with pdf file with multiple pages placing it in to one new indesign sheet? (e.g. I have 151page pdf and need to impose it in to 19 pages in indesign?? manually it takes ages :(

    • Jana-

      Have you tried using InDesign’s Gridify feature?

      You can place a multi-page PDF and as you drag to draw the frame, use your right and up arrow keys to add columns and rows.

      But here’s the trick: you can’t use Gridify if you just select the PDF. You have to either turn on Create Static Captions in the Place dialog box or select a second file along with the PDF (you can just discard the second file after you’ve created the grid of PDF pages). Then Gridify will work with a multi-page PDF.

      Here’s a post David wrote on the static captions method:

  13. I’m using this guide to impose 478 images 2-up on US letter-sized pages. Everything works fine, except for the order in which the script places the images. I cannot figure out why they are not placed alphabetically (by file name). InDesign is using some kind of consistent order, because each time I run the Image Catalog script on the folder, it places the images in the same (wrong) order. Any tips?

  14. Two points:

    Windows used to have a program called Picture Manager that did all of this so easily and included some basic photo editing capabilities too. Unfortunately it is no longer offered with Office 2013. Dumb move.

    Second, I am using CS5.5 for Mac and cannot figure out how to adjust the size of the caption text. I followed everything in your excellent post up to the last part about Finishing Touches. Nothing I do makes any kind of change in the text. Any suggestions?

  15. Are there special codes on how to format metadata like the date and time stamps? Specifically looking to get seconds in the live Caption.

  16. First, I want to thank you for this excellent tutorial and script to go with it, it has saved me hours of work.

    There is one problem I’ve encountered when importing the images into inDesign and that’s the sort order they import, I would like the images to sort by filename on the template as they appear in Bridge i.e. cc1.jpg, cc2.jpg, cc3.jpg etc and not cc1.jpg, cc10.jpg, cc11.jpg and so on.

    I have tried a number of different forums for a solution, unfortunately no luck.

    Look forward to hearing from you


    • Hi Paul,

      What I find helpful is to number images as 001, 010 thru 516. As in CC001 thru CC010. By adding the extra zeros in front of the single and double digits numbers, you should be able to sort in the order you need.

      Hope that is helpful in your situation too.


  17. I can’t speak for previous versions of Lightroom, but the current version (Lightroom 5) makes very short work or creating contact sheets (via templates), while allowing a lot of customization for anyone with specific sizing needs. It does take quite a while for larger contact sheets, but that’s to be expected.

    • I’ve never had it place the images in anything except the same order they were in the source folder. How are the files named?

    • Rename files “alphabetical”. “Dog -1.tif” should be followed by “Dog-11.tif,” then “Dog-12.tif,” and so on to “Dog-19.tif” and then “Dog-2.tif,” “Dog-20.tif,” “Dog-21.tif,” etc.

      One solution to this would be to have them numbered as 01, 02, 03. . . 09, 10, 11, etc.

      • I have the photos named as 1.1, 1.2, 1.3, 2.1, 3.1, etc. They’re still coming out as random order, any other suggestions?

  18. A problem: Actually, Image Catalog script make a new document, but when InDesign creates a new document, assigns it the default size. If, instead, as we wish, use the current document, so you can simply create a new document and run the script.
    To make sure that the script does not create a new document must change the line 237.
    Change line 237 of script (make a backup first, just in case)
    var myDocument = app.documents.add();
    var myDocument = app.documents[0];

    Personally I duplicated the script and changed the line. Now the modified script works as I want!

  19. Hi, I’ve been using this however when indesign imports the images they’re not sorted via file name. Any suggestion how I could fix this? I might be missing something. Thanks!

  20. Hi,
    would there be any way to modify this script to make random pages of images? so that each page would pull from the same group of images, but every page would be different. I’d like to use this for a bingo card game I’m working on. Thanks.

  21. I’m having some problems with this issue for one project. I have some eps files where I’ve had to crop things out using the artboard in illustrator. When this script places them in indesign it doesn’t show the objects that are outside of the artboard but the bounding box is extended to where those items are. Any ideas?

Leave a Reply

Your email address will not be published. Required fields are marked *