Homebrew monster math: keeping CR honest
A homebrew monster's CR is only honest if the numbers underneath it actually match what a published creature at that rating has: proficiency bonus, hit points, attack bonus, save DC and damage per round. TerrainTale's stat block generator computes every one of those from the design instead of leaving a DM to eyeball it.
· 5 min read · TerrainTale

Why CR drifts on hand-built monsters
It's easy to pick a CR that sounds about right and then hand-pick ability scores, a hit die and a damage expression that don't actually match it — a Huge monster with Tiny-creature hit points, or a CR 3 attack bonus on a CR 8 body. None of that shows up until the fight plays out wrong at the table. The fix isn't intuition, it's the same fixed arithmetic every published stat block is built from.
The rules the generator checks
Ability modifier is the score minus 10, divided by 2 and rounded down. Proficiency bonus follows CR directly: +2 up to CR 4, +3 at 5–8, +4 at 9–12, +5 at 13–16, +6 at 17–20, +7 at 21–24, +8 at 25–28, +9 at 29–30. XP comes from the SRD table by CR — CR 1 is 200 XP, CR 5 is 1,800, CR 10 is 5,900, CR 20 is 25,000. Hit points are hit dice times the average die value plus the Constitution modifier, using the die tied to size: d4 for Tiny, d6 Small, d8 Medium, d10 Large, d12 Huge, d20 Gargantuan.
Attack bonus and save DC, tied to the same numbers
Attack bonus is the relevant ability modifier plus proficiency bonus, and damage adds that same modifier — so a monster's to-hit and its damage output are always pulled from the same underlying ability score, not set independently. Save DC follows the same pattern: 8 plus proficiency bonus plus the ability modifier. Get the CR-to-proficiency mapping right and both numbers fall out of it automatically.
Where a language model isn't reliable, and where it is
An AI model is genuinely good at inventing an interesting monster — a concept, a set of traits, an attack that reads well at the table. It's unreliable at the arithmetic underneath that concept, the same way anyone doing math in their head under time pressure is. TerrainTale's generator uses the model for the part it's good at and recomputes every derived number itself: modifiers, proficiency bonus, XP, hit points, attack bonuses, save DCs, and the average of every damage die in the text, so 4d8 in the printed block always reads its actual average rather than a number the model estimated.
CR as a starting point, not a guarantee
Even with the numbers internally consistent, CR is still an approximation — the generator aims for the same figures published creatures have at a given rating, but a monster's actual difficulty depends on party composition, tactics and terrain too. Treat a fresh CR the same way you'd treat any homebrew monster's first outing: run it once, and adjust after you've seen how the fight actually goes.
A quick way to sanity-check a monster you already wrote
The same arithmetic is useful even if you didn't build the creature through the generator — describe an existing homebrew monster with its intended CR in the prompt, and compare what comes back against the version you already have. A big mismatch in hit points or attack bonus for the stated CR is usually the fastest way to spot that a hand-built monster is quietly over- or under-tuned before it ever reaches the table.