I put something together quick and simple. You just run the command passing it a Token ID and it will make a duplicate of the token in all respects (pretty sure I didn't miss anything) Optionally you can tag "--rep" to the end of the command to make both tokens represent the same sheet. By default the copy doesn't represent a sheet at all. Example: !duplicate @{selected|token_id} !duplicate @{selected|token_id} --rep Here it is: /* duplicateToken v0.2.8 By: Kastion Profile: <a href="https://app.roll20.net/users/3173313/kastion" rel="nofollow">https://app.roll20.net/users/3173313/kastion</a> Syntax: !duplicate [TokenID] [...optional: --rep] */ on('ready', function() { log("-=> Duplicate Script Loaded - (v0.2.8 - Last Edited by Kastion [July 23rd 2018]) <=-"); on('chat:message', function(msg) { if (msg.type == "api" && msg.content.indexOf("!duplicate") !== -1) { var token_id = msg.content.split(' ')[1]; var c = getObj('graphic',token_id); if(c) { var reps = ""; if (msg.content.indexOf("--rep") !== -1) reps = c.get('represents'); var characterImage = c.get('imgsrc'); characterImage = characterImage.replace("med","thumb"); characterImage = characterImage.replace("max","thumb"); var obj = createObj("graphic", { _pageid: c.get('_pageid'), layer: "objects", represents: reps, imgsrc: characterImage, width: 70, height: 70, top: c.get('top'), left: c.get('left')+70, bar1_value: c.get('bar1_value'), bar1_max: c.get('bar1_max'), bar2_value: c.get('bar2_value'), bar2_max: c.get('bar2_max'), bar3_value: c.get('bar3_value'), bar3_max: c.get('bar3_max'), showname: c.get('showname'), showplayers_name: c.get('showplayers_name'), showplayers_bar1: c.get('showplayers_bar1'), showplayers_bar2: c.get('showplayers_bar2'), showplayers_bar3: c.get('showplayers_bar3'), name: c.get('name') }); if (obj) toFront(obj); } else { sendChat('Duplicate', '/w gm No token found with the specific ID.'); } } }) }); When I have more time I'll run through King's Summon script again. If it has been abandoned (is that the case?) I might take it over and refine it. Being able to use a command to summon a group of tokens that all represent journal entries seems like something worthwhile - especially when rolling and running random encounters.