Photoshop Script Collection
100 free ExtendScript tools for Adobe Photoshop, covering layers, text, export, batch processing, color adjustment, selection, retouching and more. Cross-platform compatible with Photoshop CS6 through CC 2025.
What's Included
A production-ready toolkit organized into 10 categories, built by Mapsoft's Photoshop development team. Need something beyond the free scripts?
100 Scripts
Covering file operations, layers, text, export, color adjustment, selection, document setup, smart objects, retouching and utility operations.
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 for edge cases, and unit-safe operations that preserve your workspace preferences.
Installation
Copy to Scripts Folder
Locate your Photoshop Scripts folder:
Windows: C:\Program Files\Adobe\Adobe Photoshop [version]\Presets\Scripts\
Mac: /Applications/Adobe Photoshop [version]/Presets/Scripts/
Copy the script folders (File Operations, Layer Management, Text, etc.) into the Scripts directory.
Restart Photoshop. Scripts will appear under File > Scripts.
Alternative: Run Directly
Go to File > Scripts > Browse..., navigate to the .jsx file and click Open. The script runs immediately without needing to restart Photoshop.
Tip: Keyboard Shortcuts
For frequently used scripts, assign keyboard shortcuts via Edit > Keyboard Shortcuts > Shortcuts For: Application Menus > File > Scripts.
Getting Started with Photoshop Scripting
A short orientation if you’re new to ExtendScript — what it is, when it beats clicking, and how to write your first script.
What is ExtendScript?
ExtendScript is Adobe’s scripting language for Creative Cloud applications — a dialect of ECMAScript 3 with Adobe-specific extensions for talking to Photoshop, Illustrator, InDesign, and the rest of the suite. A script is a plain-text .jsx file. You don’t need to compile anything, install a build chain, or set up a project — just save the file and run it from the Scripts panel or via File > Scripts > Browse…
If you already write JavaScript, the syntax will feel familiar. The main quirks are that let and const aren’t available (use var), arrow functions don’t exist, and console.log is replaced by $.writeln for output to the ExtendScript debug console.
When scripting beats clicking (and when Actions are better)
Photoshop is unusual among Adobe applications because it has three automation tiers, not two: Actions for recorded GUI sequences, Scripts for programmatic logic, and UXP plugins for persistent panel UI. The simple test:
- Actions — one repeated operation per file, no conditional logic, no external data. Recordable from the GUI in minutes.
- Scripts — folder loops, conditional logic ("if the image has an alpha channel, do X"), reading external CSV/JSON, multi-format export, anything that needs decisions.
- UXP plugins — persistent UI users keep open while working, asynchronous web service calls, modern panel experiences.
The full landscape of Photoshop extension technologies is covered in our guide to Photoshop extension technologies; the Actions-vs-Scripts split specifically lives in Photoshop automation.
Your first script: batch resize and save as JPEG
Here’s a complete script that opens every image in a folder, resizes it to 1200px wide, and saves it as a JPEG to a destination folder. Save it as batch-resize.jsx and run it from the Scripts panel:
// batch-resize.jsx — resize every image in a folder to 1200px wide, save as JPEG
(function () {
var srcFolder = Folder.selectDialog('Choose source folder');
if (!srcFolder) return;
var dstFolder = Folder.selectDialog('Choose destination folder');
if (!dstFolder) return;
var files = srcFolder.getFiles(function (f) {
return /\.(jpg|jpeg|png|tif|tiff|psd)$/i.test(f.name);
});
app.displayDialogs = DialogModes.NO;
for (var i = 0; i < files.length; i++) {
var doc = app.open(files[i]);
doc.resizeImage(UnitValue(1200, 'px'), null, 72, ResampleMethod.BICUBIC);
var out = new File(dstFolder.fsName + '/' +
doc.name.replace(/\.[^.]+$/, '') + '.jpg');
var jpgOpts = new JPEGSaveOptions();
jpgOpts.quality = 10;
doc.saveAs(out, jpgOpts, true, Extension.LOWERCASE);
doc.close(SaveOptions.DONOTSAVECHANGES);
}
alert('Processed ' + files.length + ' files.');
}());
Three things worth pointing out: the IIFE wrapper keeps your variables out of Photoshop’s global scope; app.displayDialogs = DialogModes.NO suppresses Photoshop’s warning dialogs (missing fonts, ICC profile mismatches) so the batch doesn’t halt waiting for human acknowledgement; and the JPEGSaveOptions at quality 10 is roughly equivalent to "Maximum" in the Save As dialog.
ScriptUI dialogs for user input
Most production scripts need to ask the user something — a folder, an export quality, a watermark text. ScriptUI is the framework for those dialogs. The 100 scripts in the catalog below all use ScriptUI for their configuration dialogs; the patterns there are a good reference.
Debugging
The reliable approach is the VSCode "Adobe ExtendScript Debugger" extension — breakpoints, step-through, watch expressions, all attached to a running Photoshop. For quick checkpoints, drop $.writeln('value: ' + x); calls into the script and view output in the ExtendScript debug console.
When to graduate from a script
The signs that ExtendScript has hit its limit: you need a panel that stays visible while users work; you need to call a web API or do anything async; you need modern JavaScript features. At that point, UXP is the recommended modern path for new Photoshop panel work — the most mature UXP implementation in the suite. ExtendScript still wins for one-off automation and folder-level batch — the two will coexist for years — but persistent panels in 2026 should be UXP.
Script Catalog
Browse all 100 scripts organized by category. Each script includes ScriptUI dialogs for configuration.
File Operations
13 scripts
Batch processing for files, folders, and bulk image operations.
| Script | Description | Use Case |
|---|---|---|
BatchAddBorder.jsx | Adds colored borders and frames to all images in a folder | Preparing images for print framing or gallery display |
BatchApplyAction.jsx | Runs a Photoshop Action on every image in a folder | Automating repetitive edits across hundreds of files |
BatchConvertFormat.jsx | Converts images between JPEG, PNG, TIFF, and PSD formats | Format standardization for asset pipelines |
BatchCropToSelection.jsx | Crops all images to a specified pixel area from edges | Consistent cropping of screenshots or scans |
BatchMetadataInjector.jsx | Embeds IPTC metadata (author, copyright, keywords) into files | Copyright protection and image cataloging |
BatchRenameFiles.jsx | Renames files with prefix, sequential numbering, and date stamps | Organizing photo shoots or stock image libraries |
BatchResize.jsx | Resizes images by percentage, pixel dimensions, or longest edge | Preparing thumbnails or web-resolution images |
BatchRotateImages.jsx | Rotates images by 90/180/270 degrees or a custom angle | Correcting orientation for scanned or imported images |
BatchTrimAndSave.jsx | Trims transparent or white edges and saves each file | Cleaning up rendered assets with excess whitespace |
BatchWatermark.jsx | Adds text or image watermarks with positioning control | Protecting proofs and preview images |
FileInfoReport.jsx | Generates a CSV report of all image properties in a folder | Asset auditing and cataloging |
MultiFormatSave.jsx | Saves the current document in multiple formats at once | One-click export for web, print, and archive copies |
RecursiveFolderProcessor.jsx | Processes images in nested subfolders recursively | Batch operations across complex directory structures |
Layer Management
13 scripts
Layer organization, manipulation, and bulk operations for complex PSD files.
| Script | Description | Use Case |
|---|---|---|
BulkRenameLayers.jsx | Renames layers with find/replace, prefix, suffix, and numbering | Organizing layers for developer handoff or animation |
CollectSimilarLayers.jsx | Groups layers by type (text, shapes, raster, smart objects) into folders | Auto-organizing messy PSD files |
CopyLayerStyles.jsx | Copies layer effects from one layer to selected others | Applying consistent styling across multiple elements |
DeleteEmptyLayers.jsx | Finds and removes empty or fully transparent layers | Reducing file size and cleaning up layer panels |
DistributeLayersEvenly.jsx | Spaces layers evenly across the canvas horizontally or vertically | Creating evenly spaced layout compositions |
DuplicateLayerStructure.jsx | Duplicates the group/layer hierarchy without pixel content | Creating template structures for new projects |
DuplicateToAllOpenDocs.jsx | Copies the active layer to all other open documents | Distributing watermarks or logos across multiple files |
ExportLayersToFiles.jsx | Exports each layer as a separate image file | Extracting assets from layered compositions |
FindSelectLayers.jsx | Searches layers by name, type, or blend mode | Finding specific layers in complex documents |
FlattenSelectedGroups.jsx | Flattens specific layer groups while preserving others | Selective flattening to reduce complexity |
LayerVisibilityManager.jsx | Toggle, solo, and manage layer visibility states | Quickly isolating layers for review or export |
RandomizeLayerOrder.jsx | Shuffles the stacking order of layers randomly | Creating randomised compositions and collages |
SortLayers.jsx | Sorts layers alphabetically, by type, or by size | Maintaining consistent layer ordering conventions |
Text & Typography
11 scripts
Text editing, formatting, extraction, and typographic manipulation tools.
| Script | Description | Use Case |
|---|---|---|
AddTextWatermarkLayer.jsx | Creates a text watermark layer with positioning and opacity | Adding copyright or draft notices to documents |
ChangeAllFonts.jsx | Changes all text layers to a new font in one click | Brand font updates across an entire design |
ConvertPointToParagraph.jsx | Converts between point text and paragraph (area) text | Reformatting text for responsive or print layouts |
ExportTextToCSV.jsx | Exports all text layer contents and styles to a CSV file | Content extraction for translation or review |
FindReplaceText.jsx | Find and replace text across all text layers | Batch updating dates, names, or terms |
ImportTextFromCSV.jsx | Updates text layers with content from a CSV file | Data-driven design and personalisation |
LoremIpsumGenerator.jsx | Generates placeholder text layers of various lengths | Filling mockups and wireframes with dummy text |
ScaleTextToFit.jsx | Auto-scales text to fit within specified pixel bounds | Fitting headlines and labels to fixed-size containers |
TextOutlineCreator.jsx | Creates outlined/stroked text effects as separate layers | Adding outline effects for titles and headings |
TextStyleCopier.jsx | Copies font, size, color, and style from one text layer to all others | Enforcing consistent typography across a document |
TextStyleReport.jsx | Generates a report of all text styles used in the document | Typography auditing and style guide documentation |
Export & Format
11 scripts
Specialized export workflows, format conversions, and asset generation.
| Script | Description | Use Case |
|---|---|---|
AnimatedGIFFromLayers.jsx | Creates an animated GIF using layers as frames | Quick animation from layered compositions |
ContactSheetCreator.jsx | Generates a contact sheet/thumbnail grid from a folder | Photo cataloging and client review sheets |
ExportDocumentMetadata.jsx | Exports EXIF/IPTC metadata to CSV for cataloging | Asset management and archival documentation |
ExportLayerComps.jsx | Exports each Layer Comp as a separate image file | Presenting design variations to clients |
ExportWithBackgroundVariants.jsx | Exports document with different background colors | Generating assets for light/dark themes |
IconSetGenerator.jsx | Creates icon sets at multiple sizes (favicon, iOS, Android) | App icon generation for all platforms |
LayerCompExporter.jsx | Exports layer comps with naming and format options | Automated comp export for presentations |
MultiResolutionExport.jsx | Exports at 1x, 2x, 3x for responsive/retina design | Multi-resolution asset pipelines for web and mobile |
PDFExportOptions.jsx | Exports to PDF with quality and compatibility settings | Print-ready or screen-optimized PDF generation |
SaveForWebPresets.jsx | One-click save with optimized web presets | Quick web-optimized export without dialog navigation |
SpriteSheetGenerator.jsx | Combines layers into a CSS sprite sheet with coordinates | Game development and web sprite generation |
Color & Adjustment
10 scripts
Color correction, profile conversion, and creative color effects.
| Script | Description | Use Case |
|---|---|---|
BatchAutoLevels.jsx | Applies Auto Levels, Auto Contrast, and Auto Color to a folder | Quick tonal correction for event photography |
BatchColorProfileConvert.jsx | Converts color profiles (sRGB, Adobe RGB, CMYK profiles) | Print/web workflow transitions |
CMYKSafetyChecker.jsx | Highlights out-of-gamut colors that may not print correctly | Pre-press color verification |
ChannelMixerPresets.jsx | Creative presets: B&W, vintage, cross-process, cinematic teal & orange | One-click creative color grading |
ColorPaletteExtractor.jsx | Extracts dominant colors and creates a swatch layer | Generating color palettes from photographs |
HarmonizeColors.jsx | Applies color grading for unified warm, cool, or vintage looks | Unifying color across mixed-source image sets |
InvertColorsSelective.jsx | Inverts individual R/G/B channels selectively | Creative effects and channel-specific corrections |
ReplaceColorAcrossLayers.jsx | Replaces a specific color with another across all layers | Brand color updates in multi-layer designs |
SplitToningAutomation.jsx | Adds split toning with different colors for highlights and shadows | Adding mood and style to photography |
WhiteBalanceCorrection.jsx | Adjusts white balance by temperature presets or custom values | Correcting color casts from mixed lighting |
Selection & Masking
8 scripts
Selection creation, modification, and masking tools for precise editing.
| Script | Description | Use Case |
|---|---|---|
ChannelBasedSelection.jsx | Creates luminosity masks and channel-based selections | Advanced compositing and targeted adjustments |
CreateMaskFromSelection.jsx | Creates layer masks, alpha channels, or quick masks from selection | Non-destructive masking workflows |
ExpandFeatherRefine.jsx | All-in-one selection modification: expand, contract, feather, smooth | Refining selections without multiple menu trips |
MarchingAntsToPath.jsx | Converts selection to a work path or clipping path | Creating vector paths from pixel selections |
PathToSelectionConverter.jsx | Converts paths to selections with feathering and operation options | Using vector paths for precise pixel selection |
SelectByColorRange.jsx | Color-range selection with adjustable fuzziness | Isolating specific colors for editing or removal |
SelectSimilarLayers.jsx | Finds layers matching type, blend mode, opacity, or name pattern | Bulk operations on layers with similar properties |
SelectionFromTransparency.jsx | Creates selection from a layer's transparency | Generating selections from existing artwork edges |
Document & Canvas
9 scripts
Document setup, canvas manipulation, and layout tools.
| Script | Description | Use Case |
|---|---|---|
AddGuideGrid.jsx | Creates column/row grids with gutters, margins, rule of thirds, and golden ratio | Layout design with professional grid systems |
CanvasResizeWithOptions.jsx | Resizes canvas with anchor position, fill color, and relative sizing | Precise canvas adjustments for print or web |
CropToAspectRatio.jsx | Crops to standard ratios (1:1, 16:9, 3:2, 4:5, and more) | Preparing images for social media or video formats |
DuplicateAndFlatten.jsx | Quick flattened duplicate of the current document | Creating a flat preview without affecting the original |
NewDocumentFromPreset.jsx | Creates documents from web, print, social media, and mobile presets | Starting projects with correct dimensions and DPI |
PrintReadyWithBleed.jsx | Sets up bleed area, trim marks, and safety zone with visual guides | Print preparation for professional output |
RotateStraighten.jsx | Rotates canvas by presets or custom angles with auto-crop | Straightening crooked scans and photos |
SplitDocumentIntoTiles.jsx | Splits large images into a grid of smaller tile images | Printing large format or creating image maps |
TrimTransparentPixels.jsx | Trims transparent edges with optional padding | Cleaning up rendered assets for tight bounding boxes |
Smart Objects
6 scripts
Smart Object management, replacement, and manipulation tools.
| Script | Description | Use Case |
|---|---|---|
CreateSmartObjectFromLayers.jsx | Converts layers or groups into a Smart Object | Non-destructive editing and reusable components |
EditSmartObjectInPlace.jsx | Opens Smart Object contents for editing with a guided workflow | Quick Smart Object editing without manual navigation |
MockupGenerator.jsx | Creates device mockups (phone, laptop, tablet) with design placement | Presenting designs in realistic device contexts |
RasterizeAllSmartObjects.jsx | Rasterizes all Smart Objects to reduce file complexity | Preparing files for delivery or reducing file size |
ReplaceSmartObjectContent.jsx | Batch replaces Smart Object content for mockup templates | Generating multiple mockup variations automatically |
SmartObjectReport.jsx | Lists all Smart Objects with dimensions, position, and properties | Auditing Smart Object usage in complex documents |
Retouching & Filters
7 scripts
Photo retouching workflows, sharpening, noise reduction, and creative filter effects.
| Script | Description | Use Case |
|---|---|---|
BatchNoiseReduction.jsx | Applies Dust & Scratches or Median noise reduction to a folder | Cleaning up high-ISO or scanned images |
BatchSharpenForWeb.jsx | Sharpens images with web-optimized Unsharp Mask or High Pass | Output sharpening for web publication |
DodgeBurnSetup.jsx | Creates non-destructive 50% gray dodge & burn layers | Professional retouching layer setup |
FrequencySeparationSetup.jsx | Sets up low/high frequency layers for skin retouching | Separating color/tone from texture for precision editing |
HDRToneMapping.jsx | Simulates HDR tone mapping with multiple blend mode layers | Adding dynamic range to flat or single-exposure images |
SkinRetouchScaffold.jsx | Creates a complete retouching layer stack (healing, D&B, color, sharpen) | Professional portrait retouching workflow setup |
VignetteEffect.jsx | Adds customisable vignette (elliptical, circular, rectangular) | Drawing attention to the center of an image |
Utility
12 scripts
General-purpose tools, diagnostics, and productivity scripts.
| Script | Description | Use Case |
|---|---|---|
BatchFileRenamer.jsx | Renames image files with sequential numbering and date stamps | Organizing photo libraries and asset folders |
BatchResolutionChanger.jsx | Changes DPI with or without resampling | Switching between web (72 ppi) and print (300 ppi) |
CloseAllDocuments.jsx | Closes all open documents with save/discard options | Quick session cleanup after batch editing |
CreateColorSwatches.jsx | Creates a visual swatch document from a list of hex colors | Design documentation and style guide creation |
DocumentInfoReporter.jsx | Shows dimensions, color mode, layers, channels, and profile info | Quick document diagnostics and pre-flight checks |
FindReplaceInLayers.jsx | Find/replace in layer names with bulk rename options | Organizing and standardizing layer naming conventions |
FlattenAndSaveAs.jsx | Flattens the document and saves a copy in any format | Preserving the layered original while saving flat copies |
HistogramAnalyzer.jsx | Analyzes histogram: mean, median, clipping, and exposure assessment | Evaluating exposure and tonal range before editing |
LayerCounter.jsx | Quick layer statistics by type, blend mode, and visibility | Understanding document complexity at a glance |
PreferencesBackupRestore.jsx | Backs up and restores Photoshop preference settings | Preserving workspace setup across reinstalls |
QuickExportCurrentLayer.jsx | One-click export of the active layer as a trimmed PNG | Rapid asset extraction during design work |
StampVisibleToNewLayer.jsx | Merges all visible layers to a new layer (Stamp Visible) | Creating a composite snapshot without flattening |
Common Workflows
Combine scripts for end-to-end production workflows.
Photo Retouching
- Run
FrequencySeparationSetup.jsxto separate texture from color - Run
DodgeBurnSetup.jsxto create D&B layers - Run
SkinRetouchScaffold.jsxfor a complete layer stack - Run
BatchSharpenForWeb.jsxfor output sharpening
Web Asset Pipeline
- Run
MultiResolutionExport.jsxfor @1x/@2x/@3x assets - Run
SaveForWebPresets.jsxfor optimized web images - Run
SpriteSheetGenerator.jsxto create CSS sprites - Run
IconSetGenerator.jsxfor multi-platform icons
Print Preparation
- Run
BatchColorProfileConvert.jsxto convert to CMYK - Run
CMYKSafetyChecker.jsxto verify color gamut - Run
PrintReadyWithBleed.jsxto add bleed and trim marks - Run
BatchResolutionChanger.jsxto set 300 ppi - Run
PDFExportOptions.jsxfor final output
Batch Processing
- Run
BatchResize.jsxto standardize dimensions - Run
BatchAutoLevels.jsxfor auto tonal correction - Run
BatchWatermark.jsxto add copyright notices - Run
BatchConvertFormat.jsxfor final format
Compatibility
Tested and supported across all modern Photoshop versions on Mac and Windows.
Platform: Mac OS X 10.12+ / Windows 10/11
Technical Notes
- Scripts use ExtendScript (.jsx), Adobe's JavaScript implementation for Creative Suite/Cloud applications.
- All scripts are wrapped in IIFEs
(function() { ... })()to avoid polluting the global scope. - Ruler units and dialog modes are saved and restored to preserve workspace preferences.
- Action Manager descriptors are used for operations not exposed in Photoshop's DOM API (layer masks, Smart Object editing, layer effects).
- File I/O operations use
FileandFolderobjects from ExtendScript's cross-platform API.
Batch Jobs That Still Eat Your Day?
These 100 scripts cover the routine — the retouching, export, and clean-up that every studio needs. When you need image pipelines that process thousands of files, e-commerce asset generators, or bespoke retouching automations, that's what Mapsoft's Photoshop team builds.
Custom Photoshop Development
We've been writing Photoshop automation for photographers, e-commerce teams, and production studios for years. Typical projects:
- Bulk product-imagery pipelines — background removal, resizing, color correction, multi-format export
- E-commerce asset generation from CSV or PIM data feeds, one file per SKU
- Retouching automation using Action Manager and Smart Object orchestration
- Watermarking, metadata, and IPTC/XMP tooling for large photo libraries
- Photoshop droplets, scheduled hot-folder workers, and Adobe Bridge integrations
Which Photoshop batch task eats your day?
We refresh 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.
Need a script we don’t ship? Or one of ours customized?
The 100 scripts above cover the routine — the retouching, export, and clean-up that every studio needs once a week. Bespoke automation, e-commerce image pipelines, hybrid plugins, and production-grade retouching systems are what Mapsoft’s consultancy and custom development teams do day-to-day. If the free collection nearly fits but doesn’t quite, that’s the gap we close.
Download the Collection
Get all 100 Photoshop scripts in a single download. Free to use, modify, and distribute.