InDesign Script Collection
105 free ExtendScript tools for Adobe InDesign, covering text, images, styles, tables, colour, layers, export, preflight, production automation and more. Cross-platform compatible with InDesign CC 2020 through CC 2026.
What's Included
A production-ready toolkit organised into 11 categories, built by Mapsoft's InDesign development team. Need something beyond the free scripts?
105 Scripts
Covering text, images, styles, tables, colour, layers, export, preflight, production automation and document management.
Cross-Platform
All scripts work on both Mac and Windows without modification. Platform-agnostic file paths and no OS-specific APIs.
Production Ready
ScriptUI dialogs for configuration, error handling, measurement unit safety, and full undo support via Ctrl/Cmd+Z.
Installation
Copy to Scripts Panel Folder
Open InDesign's Scripts panel: Window > Utilities > Scripts
Right-click User and select Reveal in Explorer (Windows) or Reveal in Finder (Mac).
Copy the script folders (01-Text-Typography, 02-Images-Graphics, etc.) into the revealed Scripts Panel directory.
Scripts appear immediately in the Scripts panel, organised by folder. Double-click any script to run it.
Alternative: Direct Paths
Windows: C:\Users\[username]\AppData\Roaming\Adobe\InDesign\Version [X]\[locale]\Scripts\Scripts Panel\
Mac: ~/Library/Preferences/Adobe InDesign/Version [X]/[locale]/Scripts/Scripts Panel/
Alternative: Run Directly
In the Scripts panel, use File > Scripts > Other Script... to browse to and run any .jsx file directly.
Script Catalogue
Browse all 105 scripts organised by category. Each script includes ScriptUI dialogs for configuration.
Text & Typography
15 scripts
Scripts for text manipulation, formatting, typographic features, and text frame management.
| Script | Description | Use Case |
|---|---|---|
ConvertToTitleCase.jsx | Converts selected text to Title Case with smart handling of articles and prepositions | Fixing headline capitalisation across layouts |
RemoveEmptyTextFrames.jsx | Finds and removes all empty text frames with scope selection | Document cleanup after layout changes |
TextFrameAutofit.jsx | Auto-sizes selected text frames to fit content (height, width, or both) | Fitting caption frames and pull quotes to content |
BulletListCreator.jsx | Converts paragraphs into bulleted lists with configurable bullet character and spacing | Formatting lists in newsletters and manuals |
BalanceRaggedLines.jsx | Balances ragged text to prevent short last lines using tracking adjustments | Improving typographic quality in body text |
FindOversetText.jsx | Scans for overset text frames, highlights them, and offers navigation to each | Pre-press QC to catch hidden text |
StripInlineFormatting.jsx | Removes local formatting overrides while preserving applied styles | Cleaning up text pasted from Word |
TextStatistics.jsx | Counts characters, words, lines, paragraphs with reading time estimate | Editorial word count checking |
InsertSpecialCharacters.jsx | Floating palette with buttons for em dash, en dash, non-breaking space, thin space, and more | Quick access to typographic special characters |
ConvertStraightToSmartQuotes.jsx | Converts straight quotes to typographically correct curly quotes via GREP | Fixing documents from plain text sources |
ParagraphSpacingNormalizer.jsx | Normalises space before/after values with optional style filtering | Standardising spacing from multiple sources |
TextWrapBatchApply.jsx | Batch-applies text wrap settings to selected objects or entire pages | Adding text wrap to multiple images at once |
FontUsageReport.jsx | Reports all fonts used: name, style, type, pages, missing status | Pre-press font auditing before packaging |
DropCapEnhancer.jsx | Adds or modifies drop caps with configurable lines, characters, and character style | Adding decorative drop caps to chapter openings |
ThreadTextFrames.jsx | Automatically threads selected text frames in reading order | Quickly linking frames for multi-column articles |
Images & Graphics
12 scripts
Scripts for managing placed images, graphics, links, and visual assets.
| Script | Description | Use Case |
|---|---|---|
RelinkMissingImages.jsx | Scans for missing/modified links and batch-relinks from a target folder | Reconnecting images after moving project folders |
BatchResizeImages.jsx | Resizes all placed images by percentage or fitting method | Uniform scaling after layout size changes |
ImageInfoReport.jsx | Reports effective PPI, format, colour space, file size, and flags low-res images | Pre-press image quality audit |
ConvertAllImagesToCMYK.jsx | Identifies all RGB images and generates a conversion report | Flagging RGB images before going to press |
FitAllImagesToFrames.jsx | Fits images using fill, fit, centre, or content-to-frame methods | Batch-fitting images after placement |
CaptionGenerator.jsx | Auto-generates captions from image filenames with configurable position and style | Photo catalogs and proofing sheets |
ImageFrameFromSelection.jsx | Places images from a folder into selected frames sequentially | Filling photo grids and template layouts |
BatchPlaceImages.jsx | Places multiple images into an auto-generated grid layout | Contact sheets, galleries, product catalogues |
ReplaceWithHighRes.jsx | Swaps FPO images with hi-res versions by matching filenames | Production workflow low-res to hi-res swap |
EmbedAllImages.jsx | Embeds all placed images with file size warning | Creating self-contained documents for archiving |
ExportAllImagesFromDoc.jsx | Copies all linked images to a single output folder | Collecting assets for sharing or archiving |
ImageScaleChecker.jsx | Flags images scaled beyond configurable thresholds with colour-coded frames | QC for over-scaled or under-scaled images |
Document & Pages
12 scripts
Scripts for page management, guides, document setup, and structural operations.
| Script | Description | Use Case |
|---|---|---|
AddBleedMarks.jsx | Draws crop marks and bleed indicators on a dedicated locked layer | Adding visible bleed marks for proofing |
DuplicatePageRange.jsx | Duplicates a range of pages with master page preservation | Creating repeated sections in catalogues |
MasterPageApplicator.jsx | Batch-applies master pages to page ranges like "1-5, 8, 12-20" | Applying masters after restructuring chapters |
PageSizeConverter.jsx | Converts page size with presets (Letter, A4, A5, Tabloid) and content handling options | Converting layouts for international markets |
DocumentGridCreator.jsx | Creates column guides and baseline grid on all pages or master pages | Setting up consistent grids across pages |
PageNumberInserter.jsx | Adds automatic page numbers via master pages with configurable position and font | Adding page numbering to documents |
RemoveBlankPages.jsx | Finds and removes pages with no content beyond master page items | Cleaning up empty pages after revisions |
SpreadInspector.jsx | Reports on spread configurations: page counts, dimensions, island spreads | Troubleshooting gatefold and multi-page spreads |
GuidesManager.jsx | Multi-tab interface: remove, lock/unlock, recolour, create, and move guides | Managing guides in complex layouts |
DocumentCleanup.jsx | Removes empty frames, unused swatches, unnamed colours, empty layers, pasteboard items | End-of-project cleanup before handoff |
PageShuffler.jsx | Move pages, reverse page order, or sort alphabetically by content | Reordering catalogue pages |
SlugInfoAdder.jsx | Adds filename, date, inks, fonts, and custom text to the slug area | Production job identification on proofs |
Styles Management
10 scripts
Scripts for creating, auditing, mapping, and managing paragraph, character, object, and table styles.
| Script | Description | Use Case |
|---|---|---|
StyleUsageReport.jsx | Reports which styles are used/unused with count per style, option to delete unused | Cleaning up accumulated unused styles |
BulkStyleRenamer.jsx | Find/replace on style names across paragraph, character, and object styles | Rebranding style names across templates |
StyleOverrideHighlighter.jsx | Highlights text with local formatting overrides for QC review | Finding manual formatting instead of styles |
ImportStylesFromDoc.jsx | Imports styles from another InDesign document with conflict handling | Bringing styles from a design system |
CreateStyleFromSelection.jsx | Creates a new style based on the current selection's formatting | Capturing ad-hoc formatting as a reusable style |
StyleSheetExporter.jsx | Exports all style definitions to text file or CSV | Documenting style guides for brand compliance |
NestedStyleHelper.jsx | Creates and modifies nested styles with character styles and delimiters | Complex typographic patterns like run-in headings |
GREPStyleManager.jsx | View, add, edit, or remove GREP styles attached to paragraph styles | Managing automatic text formatting rules |
StyleMappingTool.jsx | Maps source styles to target styles and applies the mapping document-wide | Converting content between template systems |
ObjectStyleBatchApply.jsx | Applies object styles to objects filtered by type, layer, or colour | Batch-applying frame formatting |
Tables
8 scripts
Scripts for creating, formatting, importing/exporting, and manipulating tables.
| Script | Description | Use Case |
|---|---|---|
CSVToTable.jsx | Imports CSV and creates a formatted table with configurable delimiter and styles | Importing data from spreadsheets or databases |
TableToCSV.jsx | Exports selected table to CSV, handling merged cells gracefully | Extracting table data for use in spreadsheets |
TableStyler.jsx | Applies alternating row colours, header formatting, and border settings | Professional alternating-row table styling |
SortTableRows.jsx | Sorts rows by column with ascending/descending and numeric/alphabetic options | Alphabetising directories or sorting price tables |
MergeTableCells.jsx | Merges cells with identical values in a selected column | Creating grouped tables from flat data |
TableResizer.jsx | Equalises or proportionally distributes column widths and row heights | Normalising column widths after changes |
SplitTableByRows.jsx | Splits large tables into smaller ones by row count | Controlling table breaks across pages |
TableHeaderRepeater.jsx | Sets first row as repeating header, batch-apply to all tables | Ensuring headers repeat on every page |
Find & Replace
8 scripts
Advanced find/replace scripts using text, GREP, and style-based operations.
| Script | Description | Use Case |
|---|---|---|
MultipleTextReplacements.jsx | Loads find/replace pairs from a tab-delimited text file and runs them in batch | Bulk corrections from a corrections list |
CleanupTypography.jsx | One-click fix: double spaces, smart quotes, em dashes, ellipsis, punctuation spacing | Cleaning up text imported from Word or web |
FindReplaceByStyle.jsx | Finds text in a specific style and changes it to another style | Bulk style changes without modifying text |
RegexFindHighlight.jsx | Highlights GREP matches with colour without changing text | Proofreading review of patterns like dates or numbers |
PhoneNumberFormatter.jsx | Finds phone numbers in various formats and normalises to a chosen format | Standardising phone numbers in directories |
URLFinder.jsx | Finds URLs and optionally converts to hyperlinks or exports a list | URL auditing and hyperlink creation |
WhitespaceNormalizer.jsx | Cleans up multiple spaces, trailing spaces, extra returns, and tab issues | Cleaning up whitespace from various sources |
FindReplaceAcrossDocuments.jsx | Runs find/replace across all open documents or all files in a folder | Corrections across an entire book or magazine |
Colour & Swatches
8 scripts
Scripts for swatch management, colour conversion, and colour consistency.
| Script | Description | Use Case |
|---|---|---|
UnusedSwatchCleaner.jsx | Identifies and removes unused swatches with optional similar-swatch merge | Cleaning up accumulated unused colours |
SwatchInventory.jsx | Full swatch report: name, colour model, values, usage counts, export to file | Colour auditing for brand compliance |
RGBtoCMYKConverter.jsx | Finds RGB swatches and shows CMYK conversion preview with batch support | Preparing documents for print production |
SpotColorReporter.jsx | Lists spot colours with usage locations and option to convert to process | Pre-press spot colour audit |
CreateColorPalette.jsx | Creates swatches from manual entry, text file, or colour harmony generation | Setting up brand colours from a style guide |
SwatchReplacer.jsx | Replaces one swatch with another across all fills, strokes, text, and styles | Rebranding colour swaps |
ColorHarmonizer.jsx | Finds near-duplicate colours within a Delta-E threshold and suggests merging | Merging slightly different versions of same colour |
TintSwatchGenerator.jsx | Creates tint swatches at user-specified percentages from base colours | Building tint systems from brand colours |
Layers
6 scripts
Scripts for layer management, organisation, and version control.
| Script | Description | Use Case |
|---|---|---|
LayerVisibilityToggler.jsx | Floating palette with checkboxes for visibility and lock toggling | Quick layer toggling during design review |
MergeSelectedLayers.jsx | Merges multiple source layers into a chosen target layer | Consolidating layers after a design phase |
LayerCleanup.jsx | Removes empty layers and optionally layers with only hidden items | Cleaning up accumulated empty layers |
DuplicateToLayer.jsx | Duplicates or moves selected objects to a specified layer | Moving elements between layers preserving position |
LayerColorCoder.jsx | Assigns distinct UI colours to layers for visual organisation | Colour-coding layers by function |
VersionLayerManager.jsx | Creates version layers for language variants or design alternatives | Multilingual layouts with per-language layers |
Export & Output
10 scripts
Scripts for exporting, packaging, and outputting documents in various formats.
| Script | Description | Use Case |
|---|---|---|
BatchPDFExport.jsx | Exports each page as a separate PDF with preset, naming, and progress bar | Individual page PDFs for client review |
ExportPagesAsJPEG.jsx | Exports pages as JPEG with configurable quality, resolution, and colour space | Preview images for web or email proofing |
ExportSelectionAsSnippet.jsx | Exports selected objects as InDesign snippet (.idms) files | Creating reusable design elements |
PackageAndArchive.jsx | Packages document with fonts, links, IDML, and optional ZIP archive | Preparing handoffs to printers or clients |
EPUBPrepChecker.jsx | Checks EPUB readiness: alt text, export order, unsupported features | Pre-EPUB export quality check |
PrintReadyChecker.jsx | Comprehensive print checklist: bleed, resolution, CMYK, fonts, overset | Final pre-press check before sending to print |
ExportTextContent.jsx | Exports text to plain text or tagged text with style filtering | Extracting content for web or translation |
SplitDocByPages.jsx | Splits multi-page document into individual .indd files per page | Breaking magazines into page files for collaboration |
CreateContactSheet.jsx | Creates thumbnail grid overview of all pages | Visual overview for pagination planning |
BatchExportArticles.jsx | Exports each defined article as a separate text file | Content management for web publishing |
Preflight & QC
8 scripts
Quality control scripts for catching errors before output.
| Script | Description | Use Case |
|---|---|---|
OversetTextFinder.jsx | Finds overset text frames with navigation, auto-expand, and text shrink options | Catching hidden text before print |
OrphanWidowDetector.jsx | Detects typographic orphans and widows with configurable thresholds | Typographic QC for books and magazines |
MissingFontChecker.jsx | Lists missing fonts with page locations and offers font substitution | Resolving missing fonts from other designers |
LinkStatusChecker.jsx | Comprehensive link audit: missing, modified, embedded with colour-coded frames | Pre-output link verification |
ConsistencyChecker.jsx | Checks tracking, indent, leading, and inset consistency across styles | Finding formatting drift in templates |
SpellCheckReport.jsx | Collects suspected misspellings with context, exportable to text file | Generating reports for editors |
BleedChecker.jsx | Verifies items extend properly into bleed with colour-coded status | Pre-press bleed verification |
AccessibilityChecker.jsx | Checks alt text, reading order, language, tags, and heading structure | Meeting Section 508 / WCAG accessibility standards |
Production & Automation
8 scripts
Scripts for batch processing, data-driven design, and production workflows.
| Script | Description | Use Case |
|---|---|---|
BatchFileProcessor.jsx | Opens every .indd in a folder and runs a selected operation (update links, export PDF, preflight, package) | End-of-project batch processing |
DataMergeHelper.jsx | Enhanced data merge from CSV with placeholder tags, creating a page per record | Variable data printing and personalised materials |
BusinessCardGenerator.jsx | Creates business cards from CSV data using a template page with photo support | Producing card sets from a contact spreadsheet |
BookletImposition.jsx | Rearranges pages for saddle-stitch booklet printing with creep adjustment | Self-printed booklets, zines, and small publications |
WatermarkAdder.jsx | Adds text or image watermarks on a locked layer with full appearance control | Adding DRAFT or CONFIDENTIAL watermarks for review |
DocumentTemplateBuilder.jsx | Creates documents with layers, masters, page numbering, and common styles | Standardised document creation with full infrastructure |
QRCodePageLabeler.jsx | Adds QR codes with page metadata to each page on a dedicated layer | Proofing workflow with digital-physical linking |
FootnoteEndnoteConverter.jsx | Bidirectional conversion between footnotes and endnotes | Switching footnote/endnote styles for publication requirements |
Common Workflows
Combine scripts for end-to-end production workflows.
Print Preparation
- Run
DocumentCleanup.jsxto remove stray frames, unused swatches, empty layers - Run
RGBtoCMYKConverter.jsxto convert colours for print - Run
ImageInfoReport.jsxto audit image resolution - Run
FontUsageReport.jsxto check fonts - Run
OversetTextFinder.jsxto catch hidden text - Run
BleedChecker.jsxto verify bleed - Run
PrintReadyChecker.jsxfor final pre-press check - Run
BatchPDFExport.jsxfor final output
Text Cleanup
- Run
CleanupTypography.jsxto fix quotes, dashes, and spacing - Run
WhitespaceNormalizer.jsxto clean up whitespace - Run
StripInlineFormatting.jsxto remove local overrides - Run
StyleOverrideHighlighter.jsxto verify style consistency - Run
SpellCheckReport.jsxfor editorial review
Digital Publishing
- Run
AccessibilityChecker.jsxto audit alt text and reading order - Run
URLFinder.jsxto create hyperlinks from URLs - Run
EPUBPrepChecker.jsxto validate EPUB readiness - Run
ExportTextContent.jsxfor web content extraction
Style & Colour Cleanup
- Run
StyleUsageReport.jsxto find unused styles - Run
UnusedSwatchCleaner.jsxto remove unused colours - Run
ColorHarmonizer.jsxto merge near-duplicate colours - Run
ConsistencyChecker.jsxto find formatting drift
Compatibility
Tested and supported across modern InDesign versions on Mac and Windows.
Platform: macOS 10.15+ / Windows 10/11
Technical Notes
- Scripts use ExtendScript (.jsx), Adobe's JavaScript implementation for Creative Cloud applications.
- All scripts are wrapped in IIFEs
(function() { ... })()to avoid polluting the global scope. - Document-modifying scripts are wrapped in
app.doScript()withUndoModes.ENTIRE_SCRIPTfor single-step undo. - Measurement units are saved and restored to avoid altering user preferences.
- File I/O operations use
FileandFolderobjects from ExtendScript's cross-platform API. - User interfaces are built with ScriptUI dialogs for consistent cross-platform appearance.
When the Free Scripts Aren't Enough
These 105 scripts cover the everyday. When your publishing workflow needs something bigger — data-driven catalogues, InDesign Server pipelines, custom plugins, deep template systems — that's where Mapsoft's InDesign development team comes in.
Custom InDesign Development
Thirty+ years building InDesign automation for publishers, catalogue houses, and marketing teams. Typical projects we take on:
- Data-driven publishing pipelines — XML, IDML, CSV, JSON, REST APIs into finished pages
- Long-run catalogue, directory, and price-list automation
- InDesign Server deployments and headless production workflows
- Custom ExtendScript toolkits tailored to your in-house templates and brand rules
- Acrobat and InDesign plugin development in C++ for work ExtendScript can't reach
Which InDesign task still costs you hours?
We update this collection regularly. Tell us either a new feature you'd love to see or an existing script that let you down — we'll consider it for the next release, or quote you for a bespoke version.
Prefer email? Write to support@mapsoft.com with the script name and what you'd like improved.
Download the Collection
Get all 105 InDesign scripts in a single download. Free to use, modify, and distribute.