InDesign in denial or in decline? Then innovate!

At the same time every year when Adobe MAX comes around, I look at the new features in Photoshop and Illustrator and wonder “will the changes in InDesign be as advanced?” and for the last several years, I’m always let down by the new features that InDesign has in comparison to its companion software.

I understand that the engineers can’t implement all suggestions by the users, and when I’ve had a chance to speak to the engineers and developers directly, I’ll give my “top five” requests rather than give my entire laundry list of ideas, fixes etc.

Between 2015 and 2019, I made a point to travel – at my own time and expense – to attend conferences on the other side of the world, where Adobe InDesign’s technicians and decision makers would be in attendance, so that they could hear these suggestions and understand my determination of 24 hours of airline travel to give them my pain-points and ideas.

In defense

To be fair, InDesign has introduced what I would consider ten features since 2018, not counting bug squashing, catching up with operating systems or minor visual tweaks:

  1. 2021 – Capture fonts, color palettes, and shapes from any image, using the new Adobe Capture extension
  2. 2020 – Use HSB values without RGB translation
  3. 2020 – Locate Colors in your document
  4. 2020 – Intelligent subject detection and text wrap
  5. 2020 – Share for Review with text annotations
  6. 2019 – data merge can use semicolon delimiter and now has “use existing” for variable image frame placement
  7. 2019 – SVG Import
  8. 2019 – Column Rules
  9. 2019 – Variable fonts
  10. 2018 – Import comments from PDFs

For transparency, see James Wamser’s full guide of InDesign features.

I also note InDesign’s Uservoice site now incorporates three priority buttons (Not at all; Important; or Critical) so the development team can further focus on immediate needs rather than non-critical wants.

In despair

For the 2021 release of InDesign, I feel the community was disappointed with that it considered to be major features in the release, such as a change of nomenclature that adopted inclusive terminology.

While the change in nomenclature didn’t affect me either way, I understand that users who were offended by the previous terminology would have welcomed the change… though this should be called an improvement rather than a new feature. Unfortunately, that is where the changes to the pages panel ended, and other requested changes to the pages panel hadn’t been implemented, such as:

  • Ability to have vertical facing pages;
  • Facing pages for spiral binding;
  • Applying parent pages to all even or odd pages;
  • Variable parent pages for data merge;

Asides from this, the frustrating part for the community was, at the time of the new features announcement, there were 4062 requests on the InDesign Uservoice, though the three features listed for 2021 shown above were the ones given priority.

In backlog

There are major changes in backlog that have been in the InDesign Uservoice for years such as:

  • Option to split table rows across pages
  • MathML Support
  • Convert PDF to INDD
  • Make text variables/live captions breakable like normal text
  • Improving the various options of footnotes
  • Allow multiple character styles to be applied to characters
  • Actions Panel

These 7 suggestions above have at least 300 votes each.


I’ve been using InDesign for 20 years or so, and came to the conclusion that if I want great features in InDesign, I’ll either have to script them myself, or look to InDesign’s community of users who have written fantastic scripts and have websites full of great scripts that deserve to be in the UI of InDesign itself.

The community features dozens of great scripters, such as:

These scripters (along with many other InDesign scripters too numerous to mention) have written dozens of scripts that should be in all InDesign users toolbox… but many of these scripts were written because the features didn’t exist in InDesign (and still don’t).

In focus

Let’s highlight one area that was once an innovation for InDesign compared to its then main competitor, Quark Xpress: Tables. Let’s look at the tables panel in InDesign while focused on a table.

In contrast, let’s now look at the tables panel within Affinity Publisher while focused on a table.

At first glance, the differences are night and day, but upon closer inspection, InDesign’s panel does have the majority of items that Affinity Publisher’s panel contains, albeit shrunk in size, or represented icons. What InDesign is missing is the ability to easily select the table or cell strokes, something Affinity does quite well.

It’s what comes next – Affinity’s ability to autofit or sort a row or column based on contextual menus in each axis of the table.

If I highlight some cells but only want to merge the highlighted rows, neither application can do this from their panels or contextual menus, but this can be accomplished through scripting. Scripts from both Marc Autret and Dirk Becker accomplish this task, and can be added to the contextual menu (though at the time of writing, Dirk’s site appears to be down).

In fact, many table items in InDesign can be accessible via scripting. The late Thenis de Jong (aka Jongware) wrote a great article about this. Unfortunately, scripting isn’t something that every user can do without some training.

I can improve on both table panels though by using an Elgato Stream Deck: hardware that – in my case – is 15 configurable buttons that can be contextually based.

To save me time setting up the buttons, sideshowfx have an installable InDesign profile for the Stream Deck that has many of the buttons already set up, including features that aren’t in either InDesign or Publisher’s table panels as single click icons, such as select row, insert column, select body rows, etc.

Some “gotchas” with the profile is that it requires using sideshowfx’s keyboard shortcuts, and these may conflict with InDesign’s or users’ already established shortcuts. What is great though is that if the buttons you need aren’t there, Stream Deck allows these to be added, provided a keyboard shortcut to the desired action is added.

Invest in inventors

I note that the Adobe InDesign developers did add a folder in the scripts panel called “Community” where script contributors like myself were encouraged to add scripts to share to the community without charge. While many of the scripts shared by scripters are done so out of philanthropy, the scripts may be there to drive the website traffic of the scripters, perhaps in order to persuade a purchase of one of their paid scripts or software, promote their freelance work, or solicit a donation.  

Bluntly, Adobe InDesign has a team of developers, but scripters are usually sole operators. Speaking for myself, Colecandoo isn’t a team of engineers or developers, I’m it! If the Adobe developers reached out and asked me to include my pro version of the wall planner script to the community tab, I would consider this on a paid commercial basis. Remember, Adobe has a team of developers that could have written a similar feature for InDesign before I did, and they have revenues greater than I’ll ever see.

In Conclusion

InDesign is still the layout software I use on a daily basis, but there are so many innovations that could be made that – in the meantime – have been made by users, third parties or competitors. If the developers are reading this and looking for inspiration, then look no further than:

  • InDesign’s Uservoice site;
  • The InDesign Scripting Community; (i.e. fulfill script requests that haven’t been made; or invest in the inventors who have made scripts the community is using regularly)
  • Other software in the Adobe Creative Cloud; (i.e. look at features that work well in other applications, such as the Actions palette, and port them to InDesign)
  • Competing software; (e.g. the tables feature highlighted in this article)
  • Software innovations in general (e.g. ability to tie into other software using IFTTT or Zapier);

Highlighting the benefit of GREP… literally

I’m a fan of the GREP feature of the Find/Change dialog box in Adobe InDesign as it allows me to search for patterns of characters within text based on regular expressions.

As handy as this feature is, I always require assistance writing my GREP searches, just in case my patterns are either too greedy; or not greedy enough. For example, I have a GREP search to find duplicate entries and remove them, but in InDesign the only way to know if I have this correct is to press the Find Next button in the search.

A better way to identify if I have my GREP search correct is to see it in real-time. Luckily, text editors such as BB Edit have this feature.

InDesign’s latest rival, Affinity Publisher, not only has its own flavour of GREP, but also shows all results in the Find and Replace dialog box, though I have to click on each result in this dialog to see where they are.

But it would be great if InDesign highlight the GREPs ahead of time like these two applications. The good news is that it can, but it requires the GREP editor script from Peter Kahrel that has been featured on Colecandoo before.

Thanks to Peter’s GREP editor, I’m now able to see that in this example there are three search results and they are all highlighted.

This tool comes in very handy as it assists me to write more complicated GREP searches, such as this one that is looking for time formatting. This lets me know in real-time if my selection is selecting too much information, or not enough – and in this example, it isn’t enough as the times without the minutes aren’t getting selected.

As for longer, more complicated chains of GREP code, there are resources out there that have pre-baked search chains that other users have already submitted to sites such as or the Treasures of GREP Facebook group.

Stop Press!

After this article was initially published, I was alerted to another InDesign javascript by Kerntiff Publishing System that has a similar behaviour to Affinity Publisher’s search. The script is called GREP Xtra.

There is also an additional script released in 2013 by Roland Dreger that performs as a combination between Peter Kahrel’s script and the InDesign user interface. That script is called Highlight GREP.

Page Size Lies

UPDATE 2021-10-08: Enfocus Pitstop has released an update that now resolves the error that was brought about by the update of Adobe Acrobat DC. However, I will leave the article posted for posterity.

Have you ever received a client’s InDesign file and sent it to PDF or print, only to measure the document and realise it is a different size to the one that was in InDesign’s document setup?

What could cause this issue to arise?

The page tool has been used

It is likely that at some stage between the initial creation of the file and receiving the file, at least one page size in the document has been changed using the page tool.

Preflight should tell me… right?

Well, that depends. If you are using either of InDesign’s default preflights (i.e. [Basic] or Digital Publishing) then preflight will not flag a warning.

I’ve discussed my frustrations with InDesign’s default preflights in Episode 19 over on the Colecandoo Youtube channel. However, if you are using a more comprehensive preflight such as the VIGC profiles, then this is detected as an issue:

More comprehensive preflights such as the VIGC profiles look for much more than InDesign’s default preflights e.g.:

As a side-note, the Document portion of the Preflight Profiles dialog box is also handy for authors who are making saddle stapled publications that must have page-counts in multiples of four (an issue I’ve faced several times) e.g.:

Or for larger offset publications where folded page signatures are likely to be prepared in minimum multiples of eight e.g.:

There are also scripts to highlight this

I’m working on a startup script that – upon export or print – should provide an alert dialog box warning that there are size discrepancies… but in the meantime there are some other scripts that work by providing alerts to a document’s page sizes, or a script hosted over on Kasyan Servetsky’s curated list that makes a list of the page sizes in a document (look for “Check all pages” once the link loads).

What I think would ultimately help everyone would be if the Document Setup window would change once page sizes in a document were no longer the same, such as this mockup e.g.:

Shortcut to rotate in fractions

A colleague of mine recently had a task of inserting lineart scans into an InDesign file and then rotating the images so that they were straight on the page.

During this process, he’d asked:

What’s the shortcut for rotating an image by a fraction of a degree?

While I can remember many of the shortcuts used in InDesign, I couldn’t remember a shortcut for this item, and after consulting my InDesignSecrets shortcut poster I realised that there isn’t one. There is a shortcut to increase the angle from 1 degree to 5, but not smaller increments… which I thought was something that people would have asked for by now.

For the task he was doing, he definitely needed one, otherwise the workflow was:

  1. Select the item to rotate;
  2. Go to the rotate tool;
  3. Type the fraction and click OK
  4. Check the result and if further adjustment was required, click back into the rotate tool and type a new fraction and try again until acceptable.

A shortcut would definitely make this easier.

Tomaxxi to the rescue

Luckily, one was easy to find online. Scripter Marijan Tompa (whom some may know by the name Tomaxxi) wrote an article on how to write such a script.

In my colleague’s case, the script only needed to be adjusted by changing the angle from 45 in Marijan’s example to 0.1 like so:

var myTrans = app.transformationMatrices.add({counterclockwiseRotationAngle:0.1});
var myObj = app.selection[0];
myObj.transform(CoordinateSpaces.pasteboardCoordinates, AnchorPoint.CENTER_ANCHOR, myTrans);

The script was saved as rotateAnticlockwise.jsx and added to the scripts. A second copy was made but this time adjusted from counterclockwise to clockwise like so:

var myTrans = app.transformationMatrices.add({counterRotationAngle:0.1});
var myObj = app.selection[0];
myObj.transform(CoordinateSpaces.pasteboardCoordinates, AnchorPoint.CENTER_ANCHOR, myTrans);<code>

This too was saved as rotateClockwise.jsx. and added to the scripts.

From here, my colleague could then go to the scripts palette and run the scripts as required.

Similarly, my colleague could make sure that scripts was checked from the quick apply menu.

And from here, go to quick apply by pressing Command + Return and typing the first few letters of the script. This choice would stay in the quick apply so need only be done once.

But the title of the article was a shortcut, so shortcuts had to be applied. That is easily done though by going to the Edit Menu and selecting Keyboard Shortcuts.

In the next dialog box, choose Scripts from the Product Area, navigate to the appropriate script, then place the cursor in the New Shortcut text field in the bottom right and press the keys to become the new shortcut. If the type beneath says [unassigned] it means it won’t interfere with other shortcuts, so click Assign. Do the same for both scripts, choosing different shortcuts for both.

Done. My colleague now had his shortcuts and could rotate the images without having to keep moving his cursor to the rotate panel and manually key in entries.

Given the scripts now had their own shortcuts, these were also visible in the scripts panel, just in case my colleague forgot what the shortcuts were.

But importantly because shortcuts were assigned, they could also be hot-keyed to his ergonomic mouse. Similarly, the commands could be hot-keyed to other inputs such as those discussed in a previous article.

On that note, I thought a shortcut like this would exist, given the amount of other shortcuts that allow for nudging/moving in smaller units. What are your thoughts? Let me know in the comments whether this is a specific use-case, or something to be pursued over at the InDesign suggestions.

Export many PDFs at once… plus security

A recent question on Reddit’s InDesign subreddit was whether two PDFs could be exported at the same time from the same document, but have two different properties – one with trims and one without. The answer is yes, but via a custom script written for the task.

I use such a script on a daily basis so that I can prepare a PDF for client proofing via email; and a separate PDF that has trim and crops that is sent directly to a hot-folder that prints it for me.

I’d submitted my script as a solution (that can be downloaded from the scripts page), but then realised that this concept was not a new idea. Ariel Walden over at ID-Extras had already written a similar script within a blog post of his own.

Similarly, Peter Kahrel’s Batch Convert script can perform the same task, with the added advantage that it can also do this for all open InDesign documents;

Or if no documents are open, a specified folder (and subfolders if desired) of InDesign files.

Can’t make these secure

One feature that all three scripts have in common is that the exports are based on the PDF presets available on the user’s machine. One feature that can’t be added to a PDF preset is security – this can only be done when a request to export the document is made, as security settings aren’t saved into PDF presets.

This is a problem if there are lots of documents that need to be exported with security settings as it requires the user to enter the security details each time a PDF is exported.

I’ve made an additional script

For this purpose, I thought I would make a script that not only makes several PDFs, but can also add password security to one version. The script can be downloaded from the scripts page.

When the script is run, it will generate two PDFs using different PDF export settings, but one will have the suffix “_secure” added to the filename, and a dialog box will appear once the export is finished:


The script can also be adjusted by opening the script in any text editing application and making the necessary changes, such as.

Use the same password for every document

Look for the line

    openDocumentPassword = myPassOpen; // requires a password to open the document

and change the myPassOpen to the desired password in quotations. For example:

    openDocumentPassword = "OpenSesame"; // requires a password to open the document

Similarly, do the same thing for the line underneath, making sure that the open password and edit password are not the same.

    changeSecurityPassword = myPassWrite; // requires a password to change the document

change to

    changeSecurityPassword = "EditSesame"; // requires a password to change the document

then search for the lines;

and swap the forward slashes in the lines around so that the lines now read like this.


Only require a password to edit the document

Look for the following line:

    openDocumentPassword = myPassOpen; // requires a password to open the document

and add two forward slashes to the start of the line.

//    openDocumentPassword = myPassOpen; // requires a password to open the document

Adding two forward slashes to a line in a javascript tells the script to ignore the rest of the line and go to the next line of code.

Don’t show the “done” message

The default script has a dialog at the end for showing what the opening and editing passwords are, but if you want to edit the script so it makes a PDF that applies security to edit the document but does not provide the password (e.g. for the purpose of handing PDFs over to parties who may seek to deconstruct them in other applications) then make the adjustment mentioned a moment ago to restrict passwording to editing only, and then search for the lines;

and swap the forward slashes in the lines around so that the lines now read like this.


Add more PDF exports

Look for the line

app.activeDocument.exportFile(ExportFormat.pdfType, File(resultsFolder + "/" +".indd")[0] + ".pdf"), false, "[High Quality Print]");

make a copy of the line and make the appropriate changes:

  • Replace the “[High Quality Print]” to the desired PDF preset exactly as it is written in the PDF export dialog box and put it in quotes. For example, if your PDF preset is called My Export then type “My Export”
  • Replace the “.pdf” with a suffix that denotes that this is an additional PDF. For example, if the pdf is a high res print, perhaps replace this with “_hi-res.pdf” so that the resulting file has _hi-res.pdf at the end of its filename.

Otherwise if you are after specific changes to the script to suit your needs, contact me via the contact page.

Things to know about the script

Opening and editing passwords must be different

One condition of preparing a secure PDF from Adobe InDesign is that the password required to open the PDF must be different to the password to edit the PDF, so if editing the script to replace the randomly generated password to a known one, the opening and editing passwords must be different. If the passwords are the same, the PDF will be made without security.

PDF Standard in the preset must be set to “None”

PDFs that use a PDFX standards can’t have security applied to them as the security panel of the PDF export box is greyed out, preventing security to be applied. The standards dropdown box in the desired PDF preset must be set to None.

Only password security is applied

When exporting a PDF from InDesign, only password security can be applied, unlike Adobe Acrobat’s choices of security that it can offer (as shown below).

While password security may deter or prevent a layperson from editing the PDF, the security can be broken through some effort. Several websites offer services where users can drag and drop a PDF to the site, and within moments the PDF will have the PDF password removed.

Similarly, there are desktop applications that can also be purchased to remove the security (as one of their many features), such as PDFsam Visual.

Small tips to save big time

I often find it interesting to watch the different ways that my colleagues and I may perform the same task. Take the InDesign command Paste in Place for example. I’ll typically use the keyboard shortcut, but I’ve noticed that one colleague will go to the edit menu and select it from there; another will right-click and access it through the contextual menu, while another has an ergonomic mouse that has the shortcut hot-keyed to an additional button (No-one used InDesign’s quick apply panel).

While there are many ways to accomplish the same task, they all take different amounts of time and hand travel. A two-handed keyboard shortcut takes less time than navigating through the menus and – if using a mouse – leaves the cursor in its last position; but takes one hand off of the mouse briefly. In my situation, I’m using a Wacom tablet, so after using a keyboard shortcut, I then have to reposition the cursor as I’m usually still holding the stylus in my right hand. I’m also not a fan of the gymnastics my hands have to often do to in order to execute a task, and recently I’ve been hot-keying eight of my commonly used shortcuts to the contextual menu of my stylus.

Luckily in the Paste in Place example, there is more than one way to accomplish the task, and there’s no right way to use this – it is whatever is most comfortable for the user. What I would like to highlight in today’s article is how to accomplish common tasks more efficiently.

It is worth pointing out that this isn’t an exhaustive list and doesn’t get into details that might require the purchase of dedicated software such as Digital Asset Management software, or the creation of hot folders from software such as EFI Fiery Command Workstation, but is a few tips that anyone of any skill level can take advantage of to save a minute here and there from their workflows.

Within InDesign

Add your own interface items

The option to edit Keyboard Shortcuts and Menus can be found from the Edit menu

Keyboard Shortcuts (KBSC)

From the keyboard shortcuts menu, it is possible to assign keyboard shortcuts to items that do not have shortcuts assigned by default, as well as redefine shortcuts from the defaults. Shortcuts can also extend to scripts in the scripts panel as well.

Add own menu items

It is possible to make your own set of menu items using InDesign’s own menu customisation, but this only allows users to create their own menu sets based on the default set – you can’t make your own new items… without scripting. Indiscript’s Marc Autret has an article where he explains an overview of how this can be done, and provides examples as well.

Add own contextual menu items

Adding the Draw Measurement Arrows script to the contextual menu.

Silicon Publishing’s Ole Kvern wrote an article about making a contextual menu startup script that adds functionality to the contextual menu available via the right mouse button. However, I’ve since added my own functionality based on his script by editing the script in a text editor and adding my own items.

Improve on viewing the current items

Customise workspaces

Does every tool need to be visible or docked all at once? Perhaps consider making workspaces more appropriate to the workspace that is actually being used. InDesign ships with some defaults that behave this way, but it is worth experimenting.

Using Bart van de Wiele’s CreativePro 2020 tip to make a custom links palette separate to the usual links palette.

An extreme (and clever) example was demonstrated at the CreativePro 2020 Online Conference by Adobe’s Bart van de Wiele. In the 3 minutes max session, he demonstrated a way of customising the Links palette and saving it as its own workspace – allowing more information about a link to be viewed briefly, and then navigating back to the regular workspace.

Improvement on the scripts panel

Peter Kahrel’s runscript user interface

InDesign’s default script panel literally mirrors how the scripts are filed in finder/explorer, but is missing many features such as a search facility and could really use an overhaul, given its appearance hasn’t changed since InDesign was released. Luckily, Peter Kahrel has made his own launcher that allows scripts to be filtered by name.

Within any application

Not all tips are specific to Adobe InDesign. One Adobe application in particular – Adobe Acrobat – has long been criticised for its lack of customisation, so any opportunity to improve its use is appreciated.

Better navigation

Use dictation

For users that hunt and peck the keys rather than touch-typing, it is worth considering using the real-time dictation features in Mac and Windows operating systems (and some specific software) as word recognition is on par with typing speeds up to 90 words per minute or more.

Learn the new OS features

Each time the operating system is updated, it is worth paying attention to the changes made by the platform for any time-saving features. One example from my own circumstances is using spotlight to access applications rather than the dock.

Default Folder X

I was introduced to this paid Mac plug-in from St Clair Software several years ago and I’ve been using it since. It extends the functionality of save as dialogs which provides recent folders, open folders and favorites.

Controller specific shortcuts

While keyboard shortcuts were mentioned earlier in the article, it is worth noting that they can usually be applied as buttons to controllers that are beyond the usual two-button mice that can be found in an office.

Wacom Stylus

The default radial menu accessed via the Wacom Desktop Center

I’ve used the base-model stylus for years. In addition to the buttons on the stylus, there are four more buttons on the tablet; and the ability to call upon a contextual menu with one of the stylus buttons that allows more tasks to be carried out.

Gaming mice

Mapping custom keys to the Logitech G300S gaming mouse.

I was introduced to this tip once again at CreativePro 2020 online, and it seemed like such a simple idea that I’d wondered why it hadn’t been implemented in my workplace. For example, a base-model gaming mouse such as the Logitech G300S has nine programmable buttons.

Touch portal

A simulated appearance of an iPad using sideshowfx’s Photoshop shortcuts via Touch Portal.

Long-known to live-stream performers on Twitch and Youtube is a product called the Elgato Streamdeck. Put simply, it is an additional keyboard that is customizable to quickly access shortcuts via one button instead of the keyboard gymnastics that can come with some keyboard shortcuts.

A cheaper alternative is software called Touch Portal, and this turns a smartphone or tablet into a streamdeck-like device – ideal for anyone who has an old smartphone or tablet that isn’t otherwise in daily use. The free version is limited to two screens with eight icons each, but a paid version is offered with far more extensibility at a price that is affordable for any pocket.

While this does require its own customisation, SideShowFX has boxed up a collection of Photoshop, Illustrator, After Effects and Premiere shortcuts that are ready to install. Their youtube page has a great explanation of how it all works.

Have it your way

Ultimately, these are solutions that I find helpful, but I like to keep an open mind to new techniques and strategies to get my work done efficiently and accurately. If you have any techniques or strategies you would like to share, please leave a comment or get in touch directly via the contact page.

Data Merge to Single Records Pro: Now Available

Since 2016, Colecandoo has provided the free version of the Data Merge to Single Records script for Adobe InDesign – a script that allows single records to be exported from Data Merge with unique filenames available from the Data Merge database itself. This improves Adobe InDesign’s default – naming each file Untitled-N and is only available for InDesign files, not PDFs.

On that note, the PRO version of this script is now available!

This script improves upon the free original by:

  • Exporting to various additional file formats, such as interactive PDF, EPS, PNG, JPG, direct to print, or PDF via InDesign first;
  • Add a primary key to either the start or the end of a filename;
  • When exporting to certain file formats – the ability to run a user-selected additional script before the export.

The script can be purchased for A$15 from the Buy Now button below.

The original Data Merge to Single Records script offered by Colecandoo remains free and can be downloaded from the scripts page.

GREPgraphing – Beyond 2000

In 2016, I developed a concept of creating bar graphs using GREP styles. Put simply, when a number was typed such as 1423, several different GREP styles would kick in to transform the number into a bar graph. In the above example:

  • if there’s a one for the 1 followed by three digits, make the one character 1000% wide;
  • If there’s a 4 followed by two digits, make the four character 400% wide;
  • If there’s a 2 followed by one digit, make the two character 20% wide;
  • If there’s a 3 as the last character, make the three 3% wide.

To successfully work with any whole number between 1-1999, this technique requires creating 29 different types of GREP styles and character styles. It uses a fixed width font and takes advantage of GREP styles to adjust the width of the numbers to represent them as their appropriate value as a bar graph. I’ve written about this technique in more detail over at InDesignSecrets.

In 2018, I expanded upon this idea and made a script so that anyone wishing to use the technique without typing the 29 character and GREP styles could simply run a script:

Beyond 2000

One catch with this technique is that it stops at 1999 as the character style to represent 2000 can’t be made by creating a 2000% width as the maximum character width is 1000%. However, there is a workaround – create a new character style called 2000, based on the 1000 style, but give it a tracking of 600.

Adjust the GREP graph paragraph style and underneath the 1000% GREPstyle, make a new one using the new 2000% character style that was made and give it the following pattern:


To test this, I have two different GREPgraph styles containing the 1000 figure and have put them side by side. In the text frame underneath, if I type 2000 into the text frame with the GREPgraph beyond 2000 style applied to it, it should be the same width, right?

Absolutely. If I make an additional 3000% character style based on the 2000% style but changed its tracking to 1200, and added a GREPstyle to the paragraph style to apply the 3000% character style to the pattern 3(?=\d\d\d\b), this will work too.

From here, a pattern can now be seen: to get to the next 1000 in width, add another 600 to the tracking of that thousand’s character style and add a new GREP style pattern to the GREPgraph style. This will work until the tracking hits its maximum of 10,000.

Doing all this in less GREP steps

As stated earlier, the original technique required 29 GREP styles to create a GREPgraph, but what if I said it was possible to achieve the numbers 1-1999 (actually a few more – 2047) using 12 GREP styles? This can be done too, but requires a technique in Excel, and that is to convert the original base-10 number into a 16-bit binary number. I’d actually described this technique back in 2011, but it was implemented differently and with more complications: this method is far simpler.

First, convert the desired base-10 number to a 16-bit binary number in Excel using the following formula:


Now that the number is displayed in binary, copy the binary number into InDesign.

The technique basically works the same way as the original GREPgraph technique but has a slightly different implementation. First, the character styles need to be created that will change the widths, but instead of making 1-9, 10-90, 100-900 and 1000, only the character styles 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 and 1024 need to be created. For example, the character style 32 will only contain the width of 32%, and this pattern will apply to the other numbers mentioned.

Zero and 1024 are the exceptions. Zero will have a character style featuring a .1pt size, no fill or stroke, and 1% width. 1024 will have a character style of 1000% and a tracking of 14.

This will create a total of 12 character styles.

Now to make the paragraph style. To keep it simple, the appearance of the bar graph will controlled by the paragraph rule (though more advanced methods can be made using combinations of rule above, below, underlines and strikethroughs).

Here is where the magic happens – the GREP styles. Here are the styles and how they are implemented in the GREP style panel of the Paragraph style.

And here is the result:

So what’s happening here?

It’s important to understand how binary numbers are written compared to base-10 numbers. The following site gives a really good explanation, and that’s all that’s happening here – the GREP styles are being applied to the 1s in the binary number, based on their position in the binary number, and applying the appropriate GREP widths.

It can go larger

Just like the regular GREP graph, this too can be expanded to numbers larger than 2000 by creating an additional character style that has an added tracking applied. In this case, to represent the numbers 1-4095, a further character style can be added: 2048.

An advantage of this technique is that instead of creating an additional 9 character/GREP styles for each power of 10 using the base-10 GREP styles, the binary method will require a new style every time the total doubles e.g. 14th GREP style would be 4096, 15th GREP style would be 8192…

The obvious disadvantage with this technique: the numbers to be displayed as bar graphs have to be written out in binary first.

Is this something I would use? Probably not myself, as GREPgraphs are normally enough for my purposes, but I often hear the question “what if you need more than 1999 in a graph” so I felt that it was worth answering the question: It can be done, but it’s a lot of effort to get there.

Add a “Night” mode to InDesign

In the same way that different political or religious views can polarise a group of people, so can one specific InDesign feature: Light or Dark interface.

Introduced into InDesign CC in 2013, this change brought InDesign in line with other Creative Cloud products that had a dark interface. That said, I was not a fan and chose to remain a user of the light interface.

Many years later and Apple released the macOS Mojave with its Dynamic Desktop and Dark mode. The Dynamic Desktop feature shows a bright desktop during daylight hours and a dark desktop during the dark hours. In addition, popular apps also followed suit allowing users to switch from the usual view to a “night mode”.

In addition, I have found myself working late into the night on projects, and have found that a darker interface during these hours is easier on my eyes. That said, I still like to use a light interface when working in daylight hours.

With this in mind, I wondered if it was possible to create an InDesign startup script that – upon performing a common task such as opening a file – would check the time of day and if it was beyond a certain time of the day, would invoke the dark interface… and it was.

I’ve now added this script to the site and it can be downloaded from here or the scripts/download pages. As this is a startup script, it has to be added to the Startup Scripts folder (see Ole Kvern’s excellent instructions for doing so here).

The script can also be modified to suit by going into any text editor such as textedit or notepad and editing the following lines of the script:

if (hours <= 7 || hours >= 18)

This indicates the hours of the day. In the script, 7 = 7:00 am, and 18 = 6:00 pm.

app.generalPreferences.uiBrightnessPreference = 0.0;

This refers to how dark the interface should be. 0.0 is totally dark, 1.0 is bright, but values from 0.1-0.9 can be used as well.

app.generalPreferences.pasteboardColorPreference = 1; 

This refers to the color of the pasteboard. The number 1 will match the pasteboard color to the interface, whereas 0 will leave the pasteboard white.

So technically it’s not a night-mode per se, but for those who like the light interface until the night-time hours, this script may be something to consider.

The wall planner script cometh!

In the article “My Calendar Caffuffle“, I’d mentioned that I was working on a wall planner script for a Christmas release, but due to many factors I was unable to release this script and instead opted for a smaller script that – for many regulars to this site – didn’t really feel like much of a Christmas gift.

To this end, I felt like I let my supporters down and had to make sure that amends were made in the new year. On that note, I was able to work through the issues that held back the script, and I can now release the script free to the public:


This script will create a twelve month planner based on a start month and year, and to an output size in millimetres. There are one of four ways to display the planner based whether the months should appear in rows or columns, and whether the planner should be condensed or expanded. For example:


Before you say “I don’t like the colour” or “the type doesn’t fit”, note that the script creates the necessary styles so that the wall-planner can be tailored to your needs:


Don’t fancy starting the calendar in January? That’s no longer an issue either, the planner can start on any month:


UPDATED 2020-06-20 Need the planner in a language other than English? You can now choose from one of several other languages such as:

  • dansk (Danish)
  • deutsch (German)
  • español (Spanish)
  • ελληνικά (Greek)
  • français (French)
  • italiano (Italian)
  • Nederlands (Dutch)
  • norsk (Norweigan)
  • polski (Polish)
  • português (Portuguese)
  • Русский (Russian)
  • suomi (Finnish)
  • svenska (Swedish)

UPDATED 2020-06-20 Need a user interface in your language? This version of the script features three additional language interfaces: German, French and Portuguese, with more languages planned to be added. If you would like your language added, please contact me via the contact page.

So that’s the free version of the script that can be downloaded from the scripts page now.

Want more? Well, I’m also working on a pro-version of the wall-planner script that will have additional features such as:

  • highlight school days from known dates, a customised range, OR a text file;
  • add events from a text file that contains the dates and events;
  • (in expanded format) begin the planner on any day, not just Monday;
  • highlight cells based on Find/Change or GREP searches;
  • additional formatting options (appearance of months and days).
Screen Shot 2018-03-03 at 22.46.50

Lastly, speaking of pro-versions, I’ve also been busy improving my long-popular Data Merge to Single Record script that is now available for purchase from the scripts page. Don’t panic, the free version will remain, but to access features shown in the pro-version’s dialog box below is a paid release.


Of interest: New Data Merge techniques and quote bug

In the latest Colecandoo Youtube episode, four Data Merge specific features are covered, namely:

  • Adding faux-returns to a data merge field to split over lines, and subsequent limitations of this technique;
  • Using GREP styles to swap a character for a glyph during a Data Merge;
  • Highlighting field codes so that they are easier to see when not showing live data; and
  • A bug that occurs when a double-quote is at the start of any field in a Data Merge text file.

Faux returns within a field

The faux-returns technique is written about elsewhere, so rather than spoil their presentations, please read the articles directly from the appropriate sources:

I’m a fan of this trick, but emphasise that this is a workaround rather than a long-term solution, given that formatting is limited and there are more appropriate ways of accomplishing this task such as dedicated plug-ins or an XML workflow.

Swap characters for glyphs

Daniel Solis also features a clever trick to swap phrases with glyphs during a Data Merge that uses both GREP styles and ligatures. Again, rather than simply repeat the technique, please see his original video here.

A similar method can be employed using Indiscripts’ Indyfont script, but rather than swapping phrases with glyphs, will swap single characters.

Highlight Field Codes

The video also shows a method for highlighting field-codes when Data Merge is not in the preview mode. It relies on the [Basic Paragraph] style using a GREP style that contains a large highlight, and that any other styles in the document are based off of the [Basic Paragraph] style. It also means the document has to be styled correctly.

I’d demonstrated this technique following a real-world example of a live file where fields were very hard to see, and the file had to have an offset shell printed with variable data printed afterwards, so making sure the shell had no variable data on it was crucial. Using this technique would make finding the field codes much easier to see.

Double Quote bug

Also featured in the video was an issue that once again arose from a real-world example where a customer had provided a database that had double-quotes at the beginning of fields, but no closing quotes, resulting in rather unusual results.


Housekeeping Scripts

You finally have an approval on that print project you’ve been working on for the last few months. All that’s left to do is make a PDF for the printer and be done with it, right?

Nope. It’s time to do some housekeeping on the file. Let me use this metaphor, once you’ve made dinner, you don’t leave your dirty pots and pans in the sink, do you?

It’s time to do some housekeeping, and in this episode of “must haves” on the Colecandoo Youtube channel, we’ll look at several scripts to keep your files nice and tidy.


One word of caution with any of the scripts shown in the video. They are all destructive in nature. That is, they intentionally remove items from a document. Make sure you save your work prior to running these scripts, just in case they have a catastrophic impact on your artwork. I’m showing these scripts for educational purposes only, this is not a tutorial on how to use these scripts.

Images and Frames

Cleanup Pasteboard

The first script removes items from the pasteboard. Run the script and select the distance from the trim edge and importantly whether threaded text on the pasteboard should be removed.

I can hear some of you now saying “but what if I’ve left important notes on the pasteboard for the next person who works on the artwork”? Well, either don’t use this script, or put your notes on after you’ve run this script.

Empty Frame Remover

This script removes any purely empty frames, that is no fill or stroke that have no special settings applied such as text wrap or text on a path. Once run, it scans the document and removes all of these empty frames.

Trista DPI

The next script resamples all images over a given resolution to a more appropriate resolution. It’s great for projects such as yearbooks where the resolution of images is often far greater than it needs to be.

Now, I was in two minds to whether I show this script or not. Out of the scripts being shown in this video, this is both the most powerful and potentially most destructive of them. Ultimately, read the instructions before using this script, and make sure you have access to backups in case things go wrong.


Next, let’s address some colour issues that may have come about from selecting registration by mistake, or left-over swatches from a Microsoft Word import.

Unlike many scripts I’ve shown previously, most of these scripts are buried in forum posts, so it’s a matter of reading the post, finding the script, copying and pasting into a text editor and saving as a .jsx file.

It’s worth noting that all of these scripts only affect colours generated within InDesign, so won’t fix colour issues in links such as PDFs or photoshop files.

Add unnamed colours

Let’s start off with this easy one-line script that adds all unnamed colours to the swatches palette. True, it’s just as easy to select this from the swatches menu. Regardless how it’s run, this should be the first step to cleaning up the swatches. You can cut and paste it from below:

app.menuActions.item("$ID/Add All Unnamed Colors").invoke();

Reduce Colors

This script launches a prompt that allows you to search for colours that are a given percentage different from each other and merge them to the swatch that appears higher in the swatches panel.

If you’re using a special knockout black swatch and don’t want it to become the default black, perhaps make it a spot colour while running these scripts.

I explain the differences between these colours in more depth in Episode 14.

Registration Fix

This script converts all registration colour applied by InDesign to its respective tint of Black.

RGB/LAB GREY swatches to Shades of Black

I’ve written a script that converts RGB and LAB values that appear as shades of grey to equivalent shades of Black, while leaving other swatches alone to be dealt with by another script.

RGB/LAB swatches to CMYK

There’s another RGB/LAB converter, though this script converts all RGB/LAB swatches to CMYK values.

Faux Black fixers

There are two scripts that can take faux black values and convert them either to 100% black or rich black. The faux black is determined by CMYK values beyond certain percentages. In this case, any swatch that is over 70 Cyan, 60 Magenta, 60 Yellow and 90 Black will be converted to either 100% black or rich black. You can dig into the script if you like, and redefine what constitutes a rich black or faux black.

Remove unused swatches

This will remove any swatches not used in the artwork.

Styles, Master Pages and Layers

Let’s make sure that we only have the necessary styles, master pages and layers that are required for the artwork.

Remove unused masters

This script removes any master pages that have not been used in the artwork.

Remove unused layers

Next is this script that removes any layers that contain no artwork.

Remove unused styles and groups

This is a series of scripts that removes any styles not used in the artwork, as well as unnecessary style groups that may have been left, whether deep in folders or not. In the video it is combined into one “catch-all” script for convenience, but it is the work of many authors, so it’s not right for me to host it. Links to the originals can be found here, here, here, here and here.

Delete guides

Lastly, this script removes all guidelines in a document. I can see that there would be some use for guidelines to remain in a document, but felt it was worth demonstrating.


To be sure that the artwork is completely free of issues, we want to make sure that there are no prepress issues. To make sure that the artist complied with the preflight that was associated with the document, there’s the preflight enforcer.

As shown on the Colecandoo Youtube channel before, I’ve prepared two scripts that will either warn or prevent a user from printing or exporting to PDF until all preflight issues are resolved.

So there you have it, over ten scripts that will help make housekeeping of InDesign files a lot easier. If there’s any that I’ve missed or you feel would be worthy of a future video, let me know via my contact page.

%d bloggers like this: