There is probably some additional unnecessary stuff in this code, but it *does* work (I think... I don't use dynamic lighting so I can't be sure the right properties are set) :) on('ready',function() { let charName = 'AoEControlToken' let scriptName = "TokenTesting" let URL = '<a href="https://s3.amazonaws.com/files.d20.io/images/219939338/Q-RiO5B4NhyaPGwc1YMz9w/max.png?1620037815" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/219939338/Q-RiO5B4NhyaPGwc1YMz9w/max.png?1620037815</a>' //reticle image let URL2 = '<a href="https://s3.amazonaws.com/files.d20.io/images/219939338/Q-RiO5B4NhyaPGwc1YMz9w/thumb.png?1620037815" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/219939338/Q-RiO5B4NhyaPGwc1YMz9w/thumb.png?1620037815</a>' //reticle image let controlTokenChars = findObjs({ _type: 'character', name: charName }, {caseInsensitive: true}) || []; if (controlTokenChars.length === 0) { log(`====> From ${scriptName}: The default ${charName} character does not exist! Creating now.`); log(`Token object : ${tokObj}`); var charObj = { avatar: URL, name: charName, inplayerjournals: 'all', controlledby: 'all', } log(`Char object: ${charObj}`) var newChar = createObj('character', charObj); var tokObj = { imgsrc: URL2, name: charName, has_bright_light_vision: true, //UDL light_hassight: true, //LDL width: 70, height: 70, left: 100, top: 100, layer: "objects", pageid:Campaign().get("playerpageid"), represents:newChar.get('_id') } var theToken = createObj('graphic', tokObj) if (newChar) { let charID = newChar.get('_id'); setDefaultTokenForCharacter(newChar,theToken); log('new char created = ' + charID) theToken.remove(); } } }) The _defaulttoken property of a character is read only. There is a function (setDefaultTokenForCharacter) that can be used to set it, but it requires a graphic object. You need a "thumb" image for this, hence the two different URLs. In order to create the graphic, you also need to specify a page and a layer, so this creates it on the player page and deletes it after setting the default token. (for ease of testing, I put it in a wrapper as well) :)