Skip to main content
jimf16377877
Known Participant
December 29, 2025
Open for Voting

P: Support show/hide blend if effects on a layer

  • December 29, 2025
  • 3 replies
  • 260 views

I wish that it were possible to show/hide blend if effects similar to how you can show/hide other layer style effects. Sometimes I have several copies of a layer each with different blend if effects and it would be helpful if I could turn the effects off and on to see how they interact with each other.

3 replies

Stephen Marsh
Community Expert
Community Expert
December 30, 2025

@jimf16377877 

 

Until such a thing exists as a native feature, you can use the following two scripts that I created:

 

Remove Blend If - 1 of 2.jsx

 

/*
Remove Blend If - 1 of 2.jsx
https://community.adobe.com/t5/photoshop-ecosystem-ideas/request-an-eyeball-icon-in-layers-panel-for-blending-options/idi-p/14046871
v1.0, 30th August 2023, Stephen Marsh
*/

#target photoshop

// Check for active layer by jazz-y
s2t = stringIDToTypeID;
(r = new ActionReference()).putProperty(s2t('property'), p = s2t('targetLayers'));
r.putEnumerated(s2t("document"), s2t("ordinal"), s2t("targetEnum"));
if (executeActionGet(r).getList(p).count) {

    // Save selected layer name to an active session environment variable
    $.setenv(theLayer_3f5au82v = activeDocument.activeLayer.name);

    // Copy the active layer properties to a layer style
    copyLayerEffects();

    // Reset the blend if sliders
    if (activeDocument.mode === DocumentMode.GRAYSCALE || activeDocument.mode === DocumentMode.DUOTONE) {
        resetGRAYblendif(0, 0, 255, 255, 0, 0, 255, 255);
    } else if (activeDocument.mode === DocumentMode.RGB) {
        resetRGBblendif(0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255);
    } else if (activeDocument.mode === DocumentMode.LAB) {
        resetLABblendif(0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255);
    } else(activeDocument.mode === DocumentMode.CMYK) {
        resetCMYKblendif(0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255);
    }


    /* Functions */

    function resetGRAYblendif(srcBlackMin, srcBlackMax, srcWhiteMin, srcWhiteMax, destBlackMin, destBlackMax, destWhiteMin, desaturate) {
        function s2t(s) {
            return app.stringIDToTypeID(s);
        }
        var descriptor = new ActionDescriptor();
        var descriptor2 = new ActionDescriptor();
        var descriptor3 = new ActionDescriptor();
        var list = new ActionList();
        var reference = new ActionReference();
        var reference2 = new ActionReference();
        reference.putEnumerated(s2t("layer"), s2t("ordinal"), s2t("targetEnum"));
        descriptor.putReference(s2t("null"), reference);
        reference2.putEnumerated(s2t("channel"), s2t("channel"), s2t("black"));
        descriptor3.putReference(s2t("channel"), reference2);
        descriptor3.putInteger(s2t("srcBlackMin"), srcBlackMin);
        descriptor3.putInteger(s2t("srcBlackMax"), srcBlackMax);
        descriptor3.putInteger(s2t("srcWhiteMin"), srcWhiteMin);
        descriptor3.putInteger(s2t("srcWhiteMax"), srcWhiteMax);
        descriptor3.putInteger(s2t("destBlackMin"), destBlackMin);
        descriptor3.putInteger(s2t("destBlackMax"), destBlackMax);
        descriptor3.putInteger(s2t("destWhiteMin"), destWhiteMin);
        descriptor3.putInteger(s2t("desaturate"), desaturate);
        list.putObject(s2t("blendRange"), descriptor3);
        descriptor2.putList(s2t("blendRange"), list);
        descriptor.putObject(s2t("to"), s2t("layer"), descriptor2);
        executeAction(s2t("set"), descriptor, DialogModes.NO);
    }

    function resetRGBblendif(srcBlackMin, srcBlackMax, srcWhiteMin, srcWhiteMax, destBlackMin, destBlackMax, destWhiteMin, desaturate, srcBlackMin2, srcBlackMax2, srcWhiteMin2, srcWhiteMax2, destBlackMin2, destBlackMax2, destWhiteMin2, desaturate2, srcBlackMin3, srcBlackMax3, srcWhiteMin3, srcWhiteMax3, destBlackMin3, destBlackMax3, destWhiteMin3, desaturate3, srcBlackMin4, srcBlackMax4, srcWhiteMin4, srcWhiteMax4, destBlackMin4, destBlackMax4, destWhiteMin4, desaturate4) {
        function s2t(s) {
            return app.stringIDToTypeID(s);
        }
        var descriptor = new ActionDescriptor();
        var descriptor2 = new ActionDescriptor();
        var descriptor3 = new ActionDescriptor();
        var descriptor4 = new ActionDescriptor();
        var descriptor5 = new ActionDescriptor();
        var descriptor6 = new ActionDescriptor();
        var list = new ActionList();
        var reference = new ActionReference();
        var reference2 = new ActionReference();
        var reference3 = new ActionReference();
        var reference4 = new ActionReference();
        var reference5 = new ActionReference();
        reference.putEnumerated(s2t("layer"), s2t("ordinal"), s2t("targetEnum"));
        descriptor.putReference(s2t("null"), reference);
        reference2.putEnumerated(s2t("channel"), s2t("channel"), s2t("gray"));
        descriptor3.putReference(s2t("channel"), reference2);
        descriptor3.putInteger(s2t("srcBlackMin"), srcBlackMin);
        descriptor3.putInteger(s2t("srcBlackMax"), srcBlackMax);
        descriptor3.putInteger(s2t("srcWhiteMin"), srcWhiteMin);
        descriptor3.putInteger(s2t("srcWhiteMax"), srcWhiteMax);
        descriptor3.putInteger(s2t("destBlackMin"), destBlackMin);
        descriptor3.putInteger(s2t("destBlackMax"), destBlackMax);
        descriptor3.putInteger(s2t("destWhiteMin"), destWhiteMin);
        descriptor3.putInteger(s2t("desaturate"), desaturate);
        list.putObject(s2t("blendRange"), descriptor3);
        reference3.putEnumerated(s2t("channel"), s2t("channel"), s2t("red"));
        descriptor4.putReference(s2t("channel"), reference3);
        descriptor4.putInteger(s2t("srcBlackMin"), srcBlackMin2);
        descriptor4.putInteger(s2t("srcBlackMax"), srcBlackMax2);
        descriptor4.putInteger(s2t("srcWhiteMin"), srcWhiteMin2);
        descriptor4.putInteger(s2t("srcWhiteMax"), srcWhiteMax2);
        descriptor4.putInteger(s2t("destBlackMin"), destBlackMin2);
        descriptor4.putInteger(s2t("destBlackMax"), destBlackMax2);
        descriptor4.putInteger(s2t("destWhiteMin"), destWhiteMin2);
        descriptor4.putInteger(s2t("desaturate"), desaturate2);
        list.putObject(s2t("blendRange"), descriptor4);
        reference4.putEnumerated(s2t("channel"), s2t("channel"), s2t("grain"));
        descriptor5.putReference(s2t("channel"), reference4);
        descriptor5.putInteger(s2t("srcBlackMin"), srcBlackMin3);
        descriptor5.putInteger(s2t("srcBlackMax"), srcBlackMax3);
        descriptor5.putInteger(s2t("srcWhiteMin"), srcWhiteMin3);
        descriptor5.putInteger(s2t("srcWhiteMax"), srcWhiteMax3);
        descriptor5.putInteger(s2t("destBlackMin"), destBlackMin3);
        descriptor5.putInteger(s2t("destBlackMax"), destBlackMax3);
        descriptor5.putInteger(s2t("destWhiteMin"), destWhiteMin3);
        descriptor5.putInteger(s2t("desaturate"), desaturate3);
        list.putObject(s2t("blendRange"), descriptor5);
        reference5.putEnumerated(s2t("channel"), s2t("channel"), s2t("blue"));
        descriptor6.putReference(s2t("channel"), reference5);
        descriptor6.putInteger(s2t("srcBlackMin"), srcBlackMin4);
        descriptor6.putInteger(s2t("srcBlackMax"), srcBlackMax4);
        descriptor6.putInteger(s2t("srcWhiteMin"), srcWhiteMin4);
        descriptor6.putInteger(s2t("srcWhiteMax"), srcWhiteMax4);
        descriptor6.putInteger(s2t("destBlackMin"), destBlackMin4);
        descriptor6.putInteger(s2t("destBlackMax"), destBlackMax4);
        descriptor6.putInteger(s2t("destWhiteMin"), destWhiteMin4);
        descriptor6.putInteger(s2t("desaturate"), desaturate4);
        list.putObject(s2t("blendRange"), descriptor6);
        descriptor2.putList(s2t("blendRange"), list);
        descriptor.putObject(s2t("to"), s2t("layer"), descriptor2);
        executeAction(s2t("set"), descriptor, DialogModes.NO);
    }

    function resetLABblendif(srcBlackMin, srcBlackMax, srcWhiteMin, srcWhiteMax, destBlackMin, destBlackMax, destWhiteMin, desaturate, srcBlackMin2, srcBlackMax2, srcWhiteMin2, srcWhiteMax2, destBlackMin2, destBlackMax2, destWhiteMin2, desaturate2, srcBlackMin3, srcBlackMax3, srcWhiteMin3, srcWhiteMax3, destBlackMin3, destBlackMax3, destWhiteMin3, desaturate3) {
        function s2t(s) {
            return app.stringIDToTypeID(s);
        }
        var descriptor = new ActionDescriptor();
        var descriptor2 = new ActionDescriptor();
        var descriptor3 = new ActionDescriptor();
        var descriptor4 = new ActionDescriptor();
        var descriptor5 = new ActionDescriptor();
        var list = new ActionList();
        var reference = new ActionReference();
        var reference2 = new ActionReference();
        var reference3 = new ActionReference();
        var reference4 = new ActionReference();
        reference.putEnumerated(s2t("layer"), s2t("ordinal"), s2t("targetEnum"));
        descriptor.putReference(s2t("null"), reference);
        reference2.putEnumerated(s2t("channel"), s2t("channel"), s2t("lightness"));
        descriptor3.putReference(s2t("channel"), reference2);
        descriptor3.putInteger(s2t("srcBlackMin"), srcBlackMin);
        descriptor3.putInteger(s2t("srcBlackMax"), srcBlackMax);
        descriptor3.putInteger(s2t("srcWhiteMin"), srcWhiteMin);
        descriptor3.putInteger(s2t("srcWhiteMax"), srcWhiteMax);
        descriptor3.putInteger(s2t("destBlackMin"), destBlackMin);
        descriptor3.putInteger(s2t("destBlackMax"), destBlackMax);
        descriptor3.putInteger(s2t("destWhiteMin"), destWhiteMin);
        descriptor3.putInteger(s2t("desaturate"), desaturate);
        list.putObject(s2t("blendRange"), descriptor3);
        reference3.putEnumerated(s2t("channel"), s2t("channel"), s2t("a"));
        descriptor4.putReference(s2t("channel"), reference3);
        descriptor4.putInteger(s2t("srcBlackMin"), srcBlackMin2);
        descriptor4.putInteger(s2t("srcBlackMax"), srcBlackMax2);
        descriptor4.putInteger(s2t("srcWhiteMin"), srcWhiteMin2);
        descriptor4.putInteger(s2t("srcWhiteMax"), srcWhiteMax2);
        descriptor4.putInteger(s2t("destBlackMin"), destBlackMin2);
        descriptor4.putInteger(s2t("destBlackMax"), destBlackMax2);
        descriptor4.putInteger(s2t("destWhiteMin"), destWhiteMin2);
        descriptor4.putInteger(s2t("desaturate"), desaturate2);
        list.putObject(s2t("blendRange"), descriptor4);
        reference4.putEnumerated(s2t("channel"), s2t("channel"), s2t("b"));
        descriptor5.putReference(s2t("channel"), reference4);
        descriptor5.putInteger(s2t("srcBlackMin"), srcBlackMin3);
        descriptor5.putInteger(s2t("srcBlackMax"), srcBlackMax3);
        descriptor5.putInteger(s2t("srcWhiteMin"), srcWhiteMin3);
        descriptor5.putInteger(s2t("srcWhiteMax"), srcWhiteMax3);
        descriptor5.putInteger(s2t("destBlackMin"), destBlackMin3);
        descriptor5.putInteger(s2t("destBlackMax"), destBlackMax3);
        descriptor5.putInteger(s2t("destWhiteMin"), destWhiteMin3);
        descriptor5.putInteger(s2t("desaturate"), desaturate3);
        list.putObject(s2t("blendRange"), descriptor5);
        descriptor2.putList(s2t("blendRange"), list);
        descriptor.putObject(s2t("to"), s2t("layer"), descriptor2);
        executeAction(s2t("set"), descriptor, DialogModes.NO);
    }

    function resetCMYKblendif(srcBlackMin, srcBlackMax, srcWhiteMin, srcWhiteMax, destBlackMin, destBlackMax, destWhiteMin, desaturate, srcBlackMin2, srcBlackMax2, srcWhiteMin2, srcWhiteMax2, destBlackMin2, destBlackMax2, destWhiteMin2, desaturate2, srcBlackMin3, srcBlackMax3, srcWhiteMin3, srcWhiteMax3, destBlackMin3, destBlackMax3, destWhiteMin3, desaturate3, srcBlackMin4, srcBlackMax4, srcWhiteMin4, srcWhiteMax4, destBlackMin4, destBlackMax4, destWhiteMin4, desaturate4, srcBlackMin5, srcBlackMax5, srcWhiteMin5, srcWhiteMax5, destBlackMin5, destBlackMax5, destWhiteMin5, desaturate5) {
        var s2t = function (s) {
            return app.stringIDToTypeID(s);
        };
        var descriptor = new ActionDescriptor();
        var descriptor2 = new ActionDescriptor();
        var descriptor3 = new ActionDescriptor();
        var descriptor4 = new ActionDescriptor();
        var descriptor5 = new ActionDescriptor();
        var descriptor6 = new ActionDescriptor();
        var descriptor7 = new ActionDescriptor();
        var list = new ActionList();
        var reference = new ActionReference();
        var reference2 = new ActionReference();
        var reference3 = new ActionReference();
        var reference4 = new ActionReference();
        var reference5 = new ActionReference();
        var reference6 = new ActionReference();
        reference.putEnumerated(s2t("layer"), s2t("ordinal"), s2t("targetEnum"));
        descriptor.putReference(s2t("null"), reference);
        reference2.putEnumerated(s2t("channel"), s2t("channel"), s2t("gray"));
        descriptor3.putReference(s2t("channel"), reference2);
        descriptor3.putInteger(s2t("srcBlackMin"), srcBlackMin);
        descriptor3.putInteger(s2t("srcBlackMax"), srcBlackMax);
        descriptor3.putInteger(s2t("srcWhiteMin"), srcWhiteMin);
        descriptor3.putInteger(s2t("srcWhiteMax"), srcWhiteMax);
        descriptor3.putInteger(s2t("destBlackMin"), destBlackMin);
        descriptor3.putInteger(s2t("destBlackMax"), destBlackMax);
        descriptor3.putInteger(s2t("destWhiteMin"), destWhiteMin);
        descriptor3.putInteger(s2t("desaturate"), desaturate);
        list.putObject(s2t("blendRange"), descriptor3);
        reference3.putEnumerated(s2t("channel"), s2t("channel"), s2t("cyan"));
        descriptor4.putReference(s2t("channel"), reference3);
        descriptor4.putInteger(s2t("srcBlackMin"), srcBlackMin2);
        descriptor4.putInteger(s2t("srcBlackMax"), srcBlackMax2);
        descriptor4.putInteger(s2t("srcWhiteMin"), srcWhiteMin2);
        descriptor4.putInteger(s2t("srcWhiteMax"), srcWhiteMax2);
        descriptor4.putInteger(s2t("destBlackMin"), destBlackMin2);
        descriptor4.putInteger(s2t("destBlackMax"), destBlackMax2);
        descriptor4.putInteger(s2t("destWhiteMin"), destWhiteMin2);
        descriptor4.putInteger(s2t("desaturate"), desaturate2);
        list.putObject(s2t("blendRange"), descriptor4);
        reference4.putEnumerated(s2t("channel"), s2t("channel"), s2t("magenta"));
        descriptor5.putReference(s2t("channel"), reference4);
        descriptor5.putInteger(s2t("srcBlackMin"), srcBlackMin3);
        descriptor5.putInteger(s2t("srcBlackMax"), srcBlackMax3);
        descriptor5.putInteger(s2t("srcWhiteMin"), srcWhiteMin3);
        descriptor5.putInteger(s2t("srcWhiteMax"), srcWhiteMax3);
        descriptor5.putInteger(s2t("destBlackMin"), destBlackMin3);
        descriptor5.putInteger(s2t("destBlackMax"), destBlackMax3);
        descriptor5.putInteger(s2t("destWhiteMin"), destWhiteMin3);
        descriptor5.putInteger(s2t("desaturate"), desaturate3);
        list.putObject(s2t("blendRange"), descriptor5);
        reference5.putEnumerated(s2t("channel"), s2t("channel"), s2t("yellow"));
        descriptor6.putReference(s2t("channel"), reference5);
        descriptor6.putInteger(s2t("srcBlackMin"), srcBlackMin4);
        descriptor6.putInteger(s2t("srcBlackMax"), srcBlackMax4);
        descriptor6.putInteger(s2t("srcWhiteMin"), srcWhiteMin4);
        descriptor6.putInteger(s2t("srcWhiteMax"), srcWhiteMax4);
        descriptor6.putInteger(s2t("destBlackMin"), destBlackMin4);
        descriptor6.putInteger(s2t("destBlackMax"), destBlackMax4);
        descriptor6.putInteger(s2t("destWhiteMin"), destWhiteMin4);
        descriptor6.putInteger(s2t("desaturate"), desaturate4);
        list.putObject(s2t("blendRange"), descriptor6);
        reference6.putEnumerated(s2t("channel"), s2t("channel"), s2t("black"));
        descriptor7.putReference(s2t("channel"), reference6);
        descriptor7.putInteger(s2t("srcBlackMin"), srcBlackMin5);
        descriptor7.putInteger(s2t("srcBlackMax"), srcBlackMax5);
        descriptor7.putInteger(s2t("srcWhiteMin"), srcWhiteMin5);
        descriptor7.putInteger(s2t("srcWhiteMax"), srcWhiteMax5);
        descriptor7.putInteger(s2t("destBlackMin"), destBlackMin5);
        descriptor7.putInteger(s2t("destBlackMax"), destBlackMax5);
        descriptor7.putInteger(s2t("destWhiteMin"), destWhiteMin5);
        descriptor7.putInteger(s2t("desaturate"), desaturate5);
        list.putObject(s2t("blendRange"), descriptor7);
        descriptor2.putList(s2t("blendRange"), list);
        descriptor.putObject(s2t("to"), s2t("layer"), descriptor2);
        executeAction(s2t("set"), descriptor, DialogModes.NO);
    }

    function copyLayerEffects() {
        var idcopyEffects = stringIDToTypeID("copyEffects");
        executeAction(idcopyEffects, undefined, DialogModes.NO);
    }

    function pasteLayerEffects() {
        var idpasteEffects = stringIDToTypeID("pasteEffects");
        var desc461 = new ActionDescriptor();
        var idallowPasteFXOnLayerSet = stringIDToTypeID("allowPasteFXOnLayerSet");
        desc461.putBoolean(idallowPasteFXOnLayerSet, true);
        executeAction(idpasteEffects, desc461, DialogModes.NO);
    }

} else {
    alert('A layer must be selected!');
}

 

Restore Blend If - 2 of 2.jsx
 
/*
Restore Blend If - 2 of 2.jsx
https://community.adobe.com/t5/photoshop-ecosystem-ideas/request-an-eyeball-icon-in-layers-panel-for-blending-options/idi-p/14046871
v1.0, 30th August 2023, Stephen Marsh
*/

#target photoshop

// Check for active layer by jazz-y
s2t = stringIDToTypeID;
(r = new ActionReference()).putProperty(s2t('property'), p = s2t('targetLayers'));
r.putEnumerated(s2t("document"), s2t("ordinal"), s2t("targetEnum"));
if (executeActionGet(r).getList(p).count) {

    // Check that the active layer matches the active session environment variable
    if (activeDocument.activeLayer.name === theLayer_3f5au82v) {
        // Restore the active layer properties from the layer style copy
        try {
            pasteLayerEffects();
        } catch (e) {
            alert('An unexpected error occurred!');
        }
    } else {
        alert("Layer '" + theLayer_3f5au82v + "' isn't selected!" + "\r" + "(or an unexpected error occurred)");
    }

} else {
    alert('A layer must be selected!');
}


/* Functions */

function pasteLayerEffects() {
    var idpasteEffects = stringIDToTypeID("pasteEffects");
    var desc461 = new ActionDescriptor();
    var idallowPasteFXOnLayerSet = stringIDToTypeID("allowPasteFXOnLayerSet");
    desc461.putBoolean(idallowPasteFXOnLayerSet, true);
    executeAction(idpasteEffects, desc461, DialogModes.NO);
}

 

  1. Copy the code text to the clipboard
  2. Open a new blank file in a plain-text editor (not in a word processor)
  3. Paste the code in
  4. Save as a plain text format file – .txt
  5. Rename the saved file extension from .txt to .jsx
  6. Install or browse to the .jsx file to run (see below):

 

https://prepression.blogspot.com/2017/11/downloading-and-installing-adobe-scripts.html

 

D Fosse
Community Expert
Community Expert
December 30, 2025

I have to agree in principle, I use Blend If quite extensively and a toggle might come in handy.

 

That said, I'm more interested in comparing diffent slider settings, than in comparing on/off. And that can only be done by opening the dialog.

 

So I'm left a bit ambivalent. Yes, but I wouldn't put it very high on the priorities list.

 

That's just me. People's workflows are different.

mglush
Community Expert
Community Expert
December 30, 2025

Hi!

Could you get that effect by changing it to a Smart Object?

Michelle

jimf16377877
Known Participant
December 30, 2025
Hi Michelle -
How would that work? I don't follow what you have in mind.
Thanks