For GMs: For sneak peak of reverse engineering , here is AC and HP string reversing to get the actual values: It parses strings like for ac: "18, Touch 6, Flat-footed 18 (+12 Natural, 4 Size)" to get the AC and other modifiers to plug into the sheet. And for hp: "171 (18d8+90)" and substracts the con * # hit dice to find if there is a different modifier to plug in. It parses the string, then totals what it parsed, if the total doesn't match what the compendium/stat block says, then it adds the difference to the misc. Usually this is due to Toughness, or feats or enhancement bonuses that aren't usually called out specifically. <a href="https://jsfiddle.net/jat42p8x/47/" rel="nofollow">https://jsfiddle.net/jat42p8x/47/</a> If you can help test by entering strings from the compendium (and also from stat blocks in the SRD ) and see if you find any that come up with the wrong numbers, then IM me the string that broke it and what is wrong about it. Do NOT put "AC" or "hp" in front. Compendium strings can be found by finding a monster then replacing the "#xxxxx" with ".json" in the url: <a href="https://app.roll20.net/compendium/pathfinder/Beastiary:Fire%20Giant.json" rel="nofollow">https://app.roll20.net/compendium/pathfinder/Beastiary:Fire%20Giant.json</a> I'm finding tons of errors in the compendium. For instance, the compendium has no minus signs for negative modifiers to hp (due to Con below 10), AC (due to Dex below 10) or AC (due to size Large or larger). So I had to put adjustments in there, which is why you pass in the correct value from elsewhere on the sheet. (so on AC, I already know a Marilith is size L , it has -1 to AC, that is passed in. When it finds a "1" size bonus, but that differs from the sheet, the sheet overrides it) Flying Squirrel is hp: 3 (1d8 -1) but in the compendium this is 3 (1d81) :) That is why i want to test with both compendium and SRD/PRD stat blocks, because maybe what we'll do is have a section you can paste stats in, then just hit a "parse/fillin" button and it will do the same as above, so it's easy to copy non OGL monsters in. Note if it is undead, a different part of the sheet detects that and passes in the CHA modifier instead of CON. Also if you are better at writing regex feel free to make you own jsfiddle and send it. (though I escape characters classes (inside the [ ]) so jslint shuts up).