Skip to main content
Participating Frequently
January 29, 2026
Question

Hey there, does anyone know of a script to writes the size to the description. Not sure that can still be done in bridge

  • January 29, 2026
  • 2 replies
  • 87 views

This process would save me alot of time,  I know I used to use a similar script.  If not, if yall could send me in the direction of how to make my own at this point.

    2 replies

    Stephen Marsh
    Community Expert
    Community Expert
    February 4, 2026

    Define size… Pixels, Inches, CM etc.

     

    This script writes the dimensions in pixels and the resolution:

     

    /*
    https://community.adobe.com/t5/photoshop-ecosystem-discussions/script-to-add-image-size-to-description-field-to-include-in-printing-marks/td-p/14597499
    */

    #target bridge

    ///// NOTE: PNG files will return the incorrect dimension and resolution values, ignore them!

    if (BridgeTalk.appName == "bridge") {
    FT = MenuElement.create("command", "Add Dimensions & Resolution to Description", "at the end of Tools");
    }

    FT.onSelect = function () {
    //var thumbs = app.document.selections;
    var thumbs = app.document.getSelection('jpg, jpeg, tif, tiff, psd, psb, webp'); // Don't include PNG!
    if (!thumbs.length) return;
    if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
    for (var a in thumbs) {
    var selectedFile = thumbs[a].spec;
    ///// Not for PNG
    var theRes = thumbs[a].core.quickMetadata.xResolution;
    ///// Rounded to 1 decimal place
    var theWidth = (thumbs[a].core.quickMetadata.width / thumbs[a].core.quickMetadata.xResolution).toFixed (1);
    var theHeight = (thumbs[a].core.quickMetadata.height / thumbs[a].core.quickMetadata.xResolution).toFixed (1);
    var theDims = theWidth + "in x " + theHeight + "in @" + theRes + "ppi";
    /////
    var myXmpFile = new XMPFile(selectedFile.fsName, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_UPDATE);
    var myXmp = myXmpFile.getXMP();
    var Desc = [];
    var count = myXmp.countArrayItems(XMPConst.NS_DC, "description");
    for (var i = 1; i <= count; i++) {
    Desc.push(myXmp.getArrayItem(XMPConst.NS_DC, "description", i));
    }
    myXmp.deleteProperty(XMPConst.NS_DC, "description");
    myXmp.appendArrayItem(XMPConst.NS_DC, "description", theDims, 0, XMPConst.ALIAS_TO_ALT_TEXT);
    myXmp.setQualifier(XMPConst.NS_DC, "description[1]", "http://www.w3.org/XML/1998/namespace", "lang", "x-default");
    if (myXmpFile.canPutXMP(myXmp)) {
    myXmpFile.putXMP(myXmp);
    myXmpFile.closeFile(XMPConst.CLOSE_UPDATE_SAFELY);
    }
    }
    }

     

    Legend
    January 30, 2026

    Writing metadata to the description field is easy. Below is a sample script for editing description, you can skip the dialog window and just do it directly. Get the dimensions using the following:

    var fileW = myFile.core.quickMetadata.width;
    var fileH = myFile.core.quickMetadata.height;
    #target bridge
    if(BridgeTalk.appName == 'bridge'){
    var descCmd = MenuElement.create('command', 'Edit Description...', 'after Thumbnail/Open', this.menuID); //add to Contextual menu
    }

    descCmd.onSelect = function(){
    descMain();
    }

    descMain = function(){
    try{
    var descThumbs = app.document.selections; //get selected thumbnails
    if(!descThumbs.length) return; //nothing selected
    var descr = '';
    if(!descThumbs[0].hasMetadata) return; //no metadata
    var descMeta = descThumbs[0].synchronousMetadata;
    var descXMP = new XMPMeta(descMeta.serialize());
    if(descXMP.doesPropertyExist(XMPConst.NS_DC, 'description')){
    descr = descMeta.read(XMPConst.NS_DC, 'description');
    descr = descr.toString();
    }
    else{
    descr = '';
    }
    descWindow = new Window ('palette', 'Edit Description', undefined);
    descPanel = descWindow.add('panel', undefined, '');
    descPanel.orientation = 'column';
    descPanel.alignChildren = ['left', 'top'];
    descPanel.lbl1 = descPanel.add('statictext', undefined, 'Description:');
    descPanel.lbl1.graphics.font = 'palette-bold';
    descPanel.txt1 = descPanel.add('edittext {justify:"left"}', undefined, '');
    descPanel.txt1.preferredSize = [350, 80];
    descPanel.txt1.text = descr;
    descPanel.grp1 = descPanel.add('group', undefined, '');
    descPanel.grp1.preferredSize = [350, 50];
    descPanel.grp1.orientation = 'row';
    descPanel.grp1.alignment = ['fill', 'fill'];
    descPanel.grp1.margins = [30, 20, 0, 0];
    descPanel.grp1.button1 = descPanel.grp1.add('button', undefined, 'Cancel', {name: 'cancel'});
    descPanel.grp1.button2 = descPanel.grp1.add('button', undefined, 'Apply Changes', {name: 'ok'});
    descPanel.grp1.button2.enabled = false;

    descPanel.txt1.onChanging = function(){
    descPanel.grp1.button2.enabled = true;
    }

    descPanel.grp1.button1.onClick = function(){
    descWindow.close();
    }

    descPanel.grp1.button2.onClick = function(){
    descr = descPanel.txt1.text;
    descWindow.close();
    for(var a in descThumbs){ //loop through thumbs
    if(!descThumbs[a].container){
    try{
    descMeta = descThumbs[a].synchronousMetadata;
    descXMP = new XMPMeta(descMeta.serialize());
    descXMP.deleteProperty(XMPConst.NS_DC, 'description');
    descXMP.setLocalizedText(XMPConst.NS_DC, 'description', null, 'x-default', descr);
    var descUpdatedPacket = descXMP.serialize(XMPConst.SERIALIZE_OMIT_PACKET_WRAPPER | XMPConst.SERIALIZE_USE_COMPACT_FORMAT);
    descThumbs[a].metadata = new Metadata(descUpdatedPacket); //write to file
    }
    catch(e){
    Window.alert(e + e.line);
    }
    }
    }
    }
    descWindow.layout.layout(true);
    descWindow.show();
    descPanel.txt1.active = true;
    }
    catch(e){
    Window.alert(e + e.line);
    }
    }