Unfortunately it can't be done that way. You can't set html src in sheet workers. One way to do is through a combination of HTML, CSS, and sheet worker. Have your src (all of them) defined in html, and give each a CSS class, and have a hidden attribute before them with a class, like follows. <input type="hidden" name="attr_hand_picture" value="tribal" class="toggle-picture"> <img src=" <a href="https://i.imgur.com/wIk3xSV.jpg" rel="nofollow">https://i.imgur.com/wIk3xSV.jpg</a> ", class="tribal" style="height: 100px"> <img src=" <a href="https://i.imgur.com/3hyeATP.jpg" rel="nofollow">https://i.imgur.com/3hyeATP.jpg</a> ", class="rusty" style="height: 100px"> <img src=" <a href="https://i.imgur.com/t4bzr1x.jpg" rel="nofollow">https://i.imgur.com/t4bzr1x.jpg</a> ", class="ash" style="height: 100px"> Then a set of CSS rules like this: input.toggle-picture:not([value="tribal"]) ~ img.tribal, input.toggle-picture:not([value="rusty"]) ~ img.rusty, input.toggle-picture:not([value="ash"]) ~ img.ash { display: none; } In this CSS rule, if the hidden input does not have a value that matches the class, that image is hidden. You also have your select somewhere like this: <select name="attr_hand"> <option value="-"> -- STARTER -- </option> <option value="tribal">Tribal Spear</option> <option value="rusty">Rusty Sword</option> <option value="ash">Ash Wand</option> < /select> Add whatever styling you need. Finally, to bring it all together, a sheet worker that sets the value: <script type="text/worker"> on(" change:hand", funct ion() { getAttrs(["hand"], function(setting) { setAttrs({hand_picture: setting.hand}); }); }); </script> It's a bit convoluted, but thats Roll20 for you. I'll expand the sheet worker in the next post to save extra information. This is just for getting the pictures to show up.