D&D encounter XP budget calculator
Four level-5 characters have a Medium budget of 2000 XP; with 3 monsters the multiplier of 2 leaves 1000 XP of creatures to spend. See all four difficulties and the adventuring day at once. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Party size
- 4
- Level
- 5
- Monster count
- 3
- Party band
- standard
- Multiplier
- 2
- Per character easy
- 250
- Per character medium
- 500
When a Dungeon Master builds a combat for Dungeons and Dragons fifth edition, the first number that matters is not a monster's challenge rating. It is the party's experience-point budget at each official difficulty: Easy, Medium, Hard, and Deadly. Those thresholds come from the Dungeon Master's Guide table of XP by character level, multiplied by how many adventurers sit at the table. This D&D encounter XP budget calculator accepts a party size and a character level, and optionally how many monsters will appear, then returns the per-character thresholds, the party totals, the adventuring-day XP allotment, and the official encounter multiplier so you can see both the adjusted budget you compare against and the raw creature XP you can spend.
How official XP thresholds become a party budget
Fifth edition rates encounter difficulty against four experience-point thresholds per character: Easy, Medium, Hard, and Deadly. Those four numbers live in a published table indexed by character level from one through twenty. A first-level adventurer has an Easy threshold of twenty-five XP and a Deadly threshold of one hundred; a fifth-level adventurer jumps to two hundred fifty Easy and one thousand one hundred Deadly; a twentieth-level adventurer sits at two thousand five hundred Easy and eleven thousand five hundred Deadly.
The party budget at each difficulty is the per-character number multiplied by the number of player characters of that level. Four fifth-level characters therefore have a Medium budget of two thousand XP and a Deadly budget of four thousand four hundred. The calculator also returns the adventuring-day allotment from the same source book: the XP a typical character of that level can absorb across a full day of fights, short rests included, multiplied by party size.
That daily figure is not a fifth difficulty band; it is a pacing budget so you can see how many Medium or Hard fights will fill a session before the party is expected to rest. This landing stays focused on the budget question dungeon masters actually type—how much XP is Easy, Medium, Hard, and Deadly for my table—rather than assigning challenge ratings to individual monsters or rolling the dice that resolve the fight.
You pass the level you already trust from the character sheets; mixed-level tables should call once per band or use the highest level if you want a conservative Deadly ceiling.
Multipliers, raw creature XP, and the input contract
The official rules do not compare a monster's printed XP total directly to the party budget when more than one creature shares the field. A swarm of weaker monsters punches above the sum of their XP because action economy multiplies threat.
The Dungeon Master's Guide therefore applies an encounter multiplier based on monster count: one creature is times one, two creatures are times one and a half, three to six are times two, seven to ten are times two and a half, eleven to fourteen are times three, and fifteen or more are times four. Parties of one or two characters use the next higher multiplier on that ladder; parties of six or more use the next lower, never below one half.
Adjusted encounter XP is the sum of creature XP times that multiplier, and you compare that adjusted total to the party budgets this calculator already printed. On success the body echoes the inputs, names the party band (small, standard, or large), reports the four per-character thresholds, the four party budgets, the daily allotment, the multiplier, and the four raw creature-XP ceilings, plus a short expression you can pin next to a map.
When an encounter XP budget helps most
Dungeon masters prepping a one-shot want a single trustworthy grid before they open a bestiary: if the table is four seventh-level characters, Hard is four thousand four hundred party XP, and a three-monster fight may spend only two thousand two hundred printed XP after the times-two multiplier. Adventure writers and third-party publishers grid party size against level to keep a chapter's combats inside the intended band instead of accidentally shipping a Deadly climax as a Medium speed bump.
Blog posts that rank for encounter XP budget, fifth-edition encounter difficulty calculator, or Dungeons and Dragons XP threshold by party level benefit from an embedded tool whose answers match the printed tables byte for byte. Automation scripts for a west-marches calendar can walk every upcoming table size and level without inventing dice rolls or Monte Carlo noise when all they need is the four official budgets and the raw spend after the multiplier.
Distinct from a d20 success-chance calculator or an initiative-modifier stack, this landing owns the session-design question: how much experience-point budget does this party have at each difficulty, and how much raw monster XP can I spend once the official multiplier is applied. Keep requests small, pin the echoed party size, level, and four budgets in tests, and you get reproducible encounter math for prep sheets, content, and edge workers without standing up a full rules engine of your own.
What you can do with it
Session prep for a fixed table
Enter party size and level before you pick monsters, then spend only the raw Medium or Hard XP the calculator returns after the encounter multiplier.
Adventure writing and chapter balance
Grid several party sizes against a chapter level so published combats stay inside the Easy-to-Deadly band you promised on the back cover.
FAQ
Does this assign challenge ratings or pick monsters?
No. It only computes XP budgets and the raw creature-XP ceiling. Choose monsters whose printed XP sums to that raw ceiling in your bestiary or encounter builder.
What if the party is not all the same level?
Pass the level you want to budget for (often the highest). For a mixed table, call once per distinct level and add the per-character thresholds yourself.
What is the XP budget for four level 5 characters?
Easy is 1000 XP, Medium 2000, Hard 3000 and Deadly 4400. Each figure is the per-character threshold for level 5 multiplied by the four players at the table.
Why is the raw monster XP lower than the party budget?
Because of the encounter multiplier. With 3 monsters against a standard party the multiplier is 2, so the Medium budget of 2000 XP leaves 1000 XP of creature experience to spend.
How much XP should a party earn in an adventuring day?
At level 5 the adventuring day is 3500 XP per character, so a party of four has 14000 XP to spread across the day's encounters.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/hobby/dnd-encounter-xp-budget \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"party_size":4,"level":5}'const res = await fetch("https://api.kit.forhosting.com/hobby/dnd-encounter-xp-budget", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"party_size": 4,
"level": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/hobby/dnd-encounter-xp-budget",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"party_size": 4,
"level": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/hobby/dnd-encounter-xp-budget", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"party_size":4,"level":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"party_size":4,"level":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/hobby/dnd-encounter-xp-budget", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"party_size": 4,
"level": 5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "hobby.dnd_encounter_xp_budget",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Multipliers, raw creature XP, and the input contract
The endpoint inverts the last step: it divides each party budget by the multiplier and rounds to the nearest experience point, giving you the raw creature XP you may spend so the encounter lands on Easy, Medium, Hard, or Deadly after the multiplier. POST a JSON body with party_size (aliases size, characters, party) as an integer from one through twelve, level (aliases party_level, character_level, lvl) as an integer from one through twenty, and optional monster_count (aliases monsters, creatures) as an integer from one through thirty that defaults to one. Missing fields, fractions, and out-of-range values fail with invalid_input naming the field and are not billed.
Integration use cases
Virtual tabletops and encounter builders
Recompute Easy, Medium, Hard, and Deadly the moment a player drops or a guest sits down, matching the free browser widget on the same module.
Technical questions
How do I calculate a D&D 5e encounter XP budget?
Send party_size (1–12) and level (1–20). The API returns Easy, Medium, Hard, and Deadly party XP as the official per-character thresholds times party size.
What does monster_count change?
It selects the official encounter multiplier (and the small-party or large-party shift). The raw_* fields are each party budget divided by that multiplier, rounded to the nearest XP.
What does the D&D encounter XP budget calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.