A Script to Change Layer Visibility of All Instances of a Placed File in InDesign
InDesign’s Object Layer Options feature (found, not surprisingly, in the Object menu) is useful for changing the visibility of layers in placed files. This allows you to create various versions of customized output using one layered file (Illustrator, Photoshop, PDF, INDD, etc). For example, you could create versions of a document in different languages by setting up all language-specific content on separate layers, with artwork or other reusable elements on a “common” layer.

In this layered Photoshop file, the artwork is on a common “photo” layer while the captions for each language are on separate layers.
Unfortunately, Object Layer Options lacks some capabilities that would make it truly great. One such shortcoming is the fact that you can’t set the layer visibility for all instances of a placed file. So if you’re working in a long document and have the same graphic placed on 20 different pages, you’ll have to either visit the Object Layer Options dialog box 20 times, or leave InDesign to change the layer visibility in the placed file, then go back to InDesign and update all the links… which totally defeats the purpose of Object Layer Options.
Happily, there is a free script that can help you get around this limitation. It’s called Batch Layer Visibility, and you can download it here. The script was written and posted in the Adobe InDesign forums by the user CrazyPanda. You can read the original discussion about it here.
To use the script, install it and then in InDesign, select a placed file with layers.
When you run the script you’ll get a dialog box listing all the layers of the selected file. If there are more than 10 layers in the file they’ll be listed on separate pages in the dialog that you can navigate through with the Next Page/Previous Page buttons.
There are handy buttons for selecting all, none, or the inverse of currently selected layers.
Also, if the linked file is modified outside of InDesign, you can choose whether to keep the custom layer visibility or match that of file when the link is updated.
![]() |
It’s a great script, but issue is that it will inevitably break in some future InDesign update, because that’s what always happens to third party addons and plugins for anything Adobe. And while it’s a great booster for my own workflow, I design a lot of templates for clients who aren’t going to get permission from their IT department to install a script. So I guess I’ll just have to ponder just how Adobe always manages to implement similar features across different app in totally different ways, and do something tedious to get around it :)