Web Prep

JavaScript for Adobe InDesign
Latest update 4/26/2021, version 2.7

Projects designed for print include formatting not suitable for websites, requiring adjustments to the document prior to, or editing HTML after, exporting or pasting content from the document. This script automates common adjustments, and is equally useful when converting documents to e-books. Unwanted formatting is resolved in one operation rather than repeated visits to the InDesign Find/Change dialog.

  • Apply to entire document or selected story
  • Confirmation to proceed, undo, or skip each change
  • Remove zero-width characters
  • Remove forced line breaks
  • Remove column/frame/page breaks
  • Change tabs to spaces
  • Remove excess spaces
  • Remove excess at end of paragraphs and stories
  • Remove empty paragraphs
  • Fix flopped apostrophes
  • Fix foot and inch marks
  • Remove forced capitalization/change letter case
  • Save and restore all settings
  • User-configurable localization
Web Prep screen 1
Web Prep

You decide. Reward the author an
amount the solution is worth to you.

How-to Video

Instructions for use

The interface is divided into three sections: Search, Options, and Settings. Enable desired options and click the OK button to begin. Each task (option selected) is performed in the order listed on screen.

The Scripts panel is closed to give a clear view of the layout, and the display is magnified to better show the changes to confirm. Also, Show Hidden Characters is enabled and the display mode is changed to Normal.

The first match discovered is selected in the layout and a confirmation dialog appears on screen. A description of the proposed change is displayed above a series of buttons:

Web Prep screen 2

Confirm — the selected text is changed and displayed. The button Confirm becomes OK and the former button OK becomes Undo. The remaining buttons other than Cancel are disabled. Click OK to continue as described below. Undo reverts the change and restores the prior confirmation dialog, where Skip may be chosen instead, if desired.

Web Prep screen 3

OK — (for either confirmation dialog) the selected text is changed as indicated, and the next proposed change is selected.

OK all — the selected text and all remaining matching instances are changed without further user intervention. This applies only to the current task (tasks defined as options selected). When processing of the next task begins, the confirmation dialog is again displayed. This repeats until all selected tasks are completed.

Skip — the selected text is not changed, and the next proposed change is selected.

Skip all — the selected text is not changed and all remaining matching instances are ignored. Processing resumes with the next task and again the confirmation dialog is displayed.

Cancel — processing ceases without further changes. Any changes previously accepted remain. If desired, the Edit menu item Undo restores the document to its state prior to launching the script.

The confirmation dialog appears centered on screen and near the top of the window. If the dialog obscures the layout, it may be moved to another location on screen, even to a secondary display. The dialog will maintain its new position until the next launch of the script.

If any story has overset text, it is not possible to show the proposed change because it is hidden off-screen in the overset text. In this case, a warning is displayed and the user has the option to continue regardless, or decline and remedy the overset text before trying again, the recommended choice. Then each change is visible and can be confirmed.

The user is notified when processing is complete, or if processing is canceled.

Section 1: Search

Document — changes apply to the entire document that is currently open and the top-most window if multiple documents are open.

Story — changes apply to the selected story. If no story is selected, the choice is disabled. The user may also choose Document to increase the scope of text affected.

Zoom — the percentage to which the display is magnified when processing begins. This allows the user a closer look at selected text to better judge if changes are acceptable. Note: this value is not used when removing forced capitalization, which uses auto-zoom to ensure the entire text frame is visible.

Section 2: Options

Remove zero-width characters — removes various marker characters, such as index, joiner/non-joiner, and others evident only when Show Hidden Characters is enabled. For text imported from a word processing program, these usually have a different meaning and once brought into InDesign, they are excess. Furthermore, these characters do not apply to web pages or e-books, and in fact may become characters of a width greater than zero, upsetting dynamic text. Therefore it is wise to remove them all.

Remove forced line breaks — forced line breaks are removed, which otherwise add ‘<br />’ tags to HTML output. If the tag is desired, skip the change. The script determines if a space character or a hyphen precedes or follows each line break, and for instances where both are absent, the line break is changed to a space to prevent words from crashing together.

Remove column/frame/page breaks — removes these break characters, which have no meaning to a web page or e-book.

Change special spaces to normal space — special space characters are changed to normal space characters. Examples of special space characters are non-breaking, thin, en, and em spaces, among others.

Change tabs to space — tab characters are changed to a space character.

Change multiple spaces to single space — two or more consecutive space characters are reduced to a single space. Excess spaces otherwise add ‘&nbsp;’ tags to HTML output.

Remove spaces at beginning of paragraphs — space characters at the beginning of paragraphs are removed. This also applies to table cells.

Remove excess at end of paragraphs and stories — spaces and tabs at the end of paragraphs are removed. This also applies to table cells. It is assumed that unwanted forced line breaks have been removed by the previous task, therefore any remaining are treated as paragraph ends and excess preceding them is removed. For the end of stories, in addition to spaces and tabs, forced line breaks and paragraph ends are removed. If one or more paragraph ends exist at the end of a story, one paragraph end will remain, otherwise the story concludes with a story end marker.

Remove empty paragraphs — empty paragraphs are removed, which otherwise add ‘<p>&nbsp;</p>’ to HTML output.

Remove hyphens (must confirm) —hyphens are selected for removal. Unique to this option, when the confirmation dialog appears, OK and OK all are disabled, as every case of hyphen removal should be confirmed. Usually hyphens are part of the content (i.e. ‘well-lit’) but also hyphens can be used to force hyphenation and break a line in the layout. If undetected and the document is repurposed for a website, cases of forced hyphenation become errors (i.e. ‘win-dow’). This option helps spot them. Confirm and remove any hyphens that do not belong.

Fix flopped apostrophes — InDesign and word processing programs feature auto-correct that converts single and double quotation marks to “typographer’s quotes.” In most cases this is helpful, but in the rare case a word begins with an apostrophe, this auto-correct feature errantly changes the apostrophe to an opening (left) single quotation mark. For example, go get ’em or summer of ’88 are changed to an opening single quotation mark, the mirror image of an apostrophe (in other words, flopped). This option detects such cases and lets the user change to the correct closing (right) mark, which doubles as an apostrophe.

Fix foot and inch marks — like flopped apostrophes, InDesign and word processing programs errantly change foot and inch marks to typographer’s quotes. This option detects single or double quotation marks that follow a digit or fraction glyph, and provides changing these to a single or double straight quotation mark, the proper symbol for feet or inches.

Remove forced capitalization/change letter case — text assigned All Caps or Small Caps is changed to Normal capitalization. Unique to this option, the confirm button displays additional buttons to change letter case of the selected text.

Web Prep screen 4

For example, native text ‘thE tiTLe’ when assigned All Caps, obscures the fact the case is mixed. To resolve this flaw, click the button for the desired letter case. As well, selected text may need adjustment to title or sentence case based on context. The added buttons allow the user to adjust each instance as needed, at the same time forced capitalization is being removed.

Section 5: Settings

The current options may be saved and restored later. Select from the Load drop-down list to choose saved settings, which then updates the current options. Click the Delete button and the saved settings selected in the Load drop-down list are permanently removed. Click the Save button, provide a name for the settings, and the current options are preserved. If the name already exists, the user may choose to replace the saved settings.

The script provides default saved settings named [Default]. These settings cannot be deleted but may be updated to any desired values by saving settings and providing the name [Default], which then overwrites the default settings.

Each time processing begins, the current options are preserved, and the next time the script is launched, options are restored to the last values used. Zoom value is not included in saved settings, but is preserved so that each launch of the script, the last value used is restored.


The script provides user-configurable localization. By default the script language is US English, which does not require further download or configuration. For other languages, download the Language Pack and copy the i18n file for the desired language to the script folder alongside the script file. When launched, the script detects the i18n file and the interface displays the language. If the desired language is not present in the language pack, edit the English i18n file to translate to the desired language, and copy the edited i18n file to the script folder alongside the script file. For details of how to edit and install i18n files, read How to Localize Scripts.

Web Prep

License details included in download

For help installing scripts, see How to Install and Use Scripts in Adobe Creative Cloud Applications.

IMPORTANT: by downloading the script you agree that the software is provided without any warranty, express or implied. USE AT YOUR OWN RISK. Always make backups of important data.


Version 2.7 (210426)

  1. Improved error handling.

Version 2.6.1 (210412)

  1. Change in InDesign GREP now sees newline as paragraph end.
    Triggers excess at end of story for space before forced line break.
    Changed Regex '$' end of line to '\r' to make more specific.

Version 2.6 (210322)

  1. Implement redraw function forces screen update.

Version 2.5 (210321)

  1. Re-order options.

Version 2.4.1 (210321)

  1. Alert and confirm supply all arguments.

Version 2.4 (210319)

  1. Option forced capitalization, zoom to 100%.
  2. Add title to alert and confirm dialogs.
  3. Remove legacy settings code.

Version 2.3.2 (201013)

  1. UI consistency.
  2. Miscellaneous.

Version 2.3.1 (201006)

  1. Miscellaneous.

Version 2.3 (191220)

  1. Fix window button return value problem with Windows close button.
  2. Put preserve/restore preferences inside doscript call so all part of undo.
  3. No longer restore prior zoom and display preferences.

Version 2.2 (191007)

  1. Remove restore typographers quotes after process wrapped in undo.

Version 2.1 (190902)

  1. Miscellaneous.

Version 2.0 (190624)

  1. Revise settings.
  2. Restore altered app preferences on completion.
  3. Miscellaneous.

Version 19.3.8 (1.11)

  1. Add license.

Version 19.3.1 (1.10.1)

  1. Cancel button click handler wrap in function.

Version 19.2.24 (1.10)

  1. Update settings file error handling.
  2. Restore OK all select and show to give user feedback of processing.
  3. Internationalization.
  4. Optimize function removeZeroWidth().
  5. Miscellaneous.

Version 19.2.21 (1.9.1)

  1. Miscellaneous.

Version 18.12.9 (1.9)

  1. Fix typo "error has occured."
  2. Settings file named by title instead of app.activeScript.
  3. Revise settings.
  4. Revise listSettings object, add settings.lock property.
  5. Miscellaneous.

Version 18.11.12 (1.8)

  1. Store settings in user data folder.
  2. Style replace change minimum zoom to 100%.

Version 18.11.6 (1.7)

  1. Check active window for story editor and alert user.
  2. Apply desired zoom each time text is selected so it centers on screen.
  3. Option remove forced capitalization use auto-zoom so entire text frame always shows.

Version 18.9.26 (1.6.2)

  1. Miscellaneous.

Version 18.9.22 (1.6.1)

  1. Fix flaw in fix apostrophes code.
  2. Fix flaw, delete setting confirmation removes setting from UI when responding 'no.'

Version 18.8.19 (1.6)

  1. Remove option to search selection. Too many situations result in error and solutions are too convoluted.
  2. To improve performance, OK all no longer selects and displays remaining changes while performing them.
  3. Notify user when operation is canceled.
  4. Fix flaw when removing excess at end of story and excess is found in table cells.
  5. Add separate function to remove excess at end of table cells.
  6. UI verbiage change "... ends" to "end of...".
  7. Add glyphs for fractions to option Fix foot/inch marks.

Version 18.7.20 (1.5)

  1. Revise settings.
  2. Miscellaneous.

Version 18.6.17 (1.4)

  1. Add try/catch around closing scripts panel to fix unhandled exception in foreign languages.

Version 18.6.4 (1.3)

  1. Add option Remove zero-width characters.
  2. Add option Remove column/frame/page breaks.
  3. Add option Fix foot and inch marks.

Version 18.5.15 (1.2)

  1. Remove excess at end of stories, fix error when story is a single character.
  2. Remove empty paragraphs, fix flaw when story is a single character.
  3. Remove empty paragraphs, exclude frame and page breaks.
  4. Remove empty paragraphs, revise program logic.
  5. Remove excess at end of stories, re-enable inclusion of table content.
  6. Remove excess at end of stories, fix error when text is within table cell.
  7. Remove excess at end of stories, disable option when searching a selection.
  8. Catch processing errors and alert user.
  9. Add option Fix flopped apostrophes.

Version 18.4.30 (1.1)

  1. Remove excess at end of stories, ignore table content (as of this version does not process tables correctly).