Pathfinder Character XP & Leveling Calculator
ANA›Life Services Authority›National Calculator Authority›Pathfinder Character XP & Leveling Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
Pathfinder Character XP & Leveling Calculator
Calculate experience points (XP) needed to reach the next level, XP earned from encounters based on Challenge Rating (CR), and track your character's progression using official Pathfinder rules.
Current Character Level (1–19)
Current XP
Party Size (number of players)
Encounter Challenge Rating (CR 1/8 to 30)
CR 1/8 CR 1/6 CR 1/4 CR 1/3 CR 1/2 CR 1 CR 2 CR 3 CR 4 CR 5 CR 6 CR 7 CR 8 CR 9 CR 10 CR 11 CR 12 CR 13 CR 14 CR 15 CR 16 CR 17 CR 18 CR 19 CR 20 CR 21 CR 22 CR 23 CR 24 CR 25 CR 26 CR 27 CR 28 CR 29 CR 30
XP Progression Track
Slow Medium Fast
Calculate Results will appear here.
function patCalc() { var resultDiv = document.getElementById('pat-result');
var currentLevel = parseInt(document.getElementById('pat-current-level').value); var currentXP = parseInt(document.getElementById('pat-current-xp').value); var partySize = parseInt(document.getElementById('pat-party-size').value); var encounterCR = parseFloat(document.getElementById('pat-encounter-cr').value); var track = document.getElementById('pat-xp-track').value;
// --- Input Validation --- if (isNaN(currentLevel) || currentLevel 19) { resultDiv.innerHTML = 'Please enter a valid character level between 1 and 19.'; return; } if (isNaN(currentXP) || currentXP Current XP must be 0 or greater.'; return; } if (isNaN(partySize) || partySize 10) { resultDiv.innerHTML = 'Party size must be between 1 and 10.'; return; }
// --- XP Thresholds per Track (Pathfinder Core Rulebook, Table 3-1) --- // Index = level (1-based), value = total XP needed to REACH that level var xpThresholds = { slow: [ 0, // level 1 starts at 0 3000, // level 2 7500, // level 3 14000, // level 4 23000, // level 5 35000, // level 6 53000, // level 7 77000, // level 8 115000, // level 9 160000, // level 10 235000, // level 11 330000, // level 12 475000, // level 13 665000, // level 14 955000, // level 15 1350000, // level 16 1900000, // level 17 2700000, // level 18 3850000, // level 19 5350000 // level 20 ], medium: [ 0, 2000, 5000, 9000, 15000, 23000, 35000, 51000, 75000, 105000, 155000, 220000, 315000, 445000, 635000, 890000, 1300000, 1800000, 2550000, 3600000 ], fast: [ 0, 1300, 3300, 6000, 10000, 15000, 23000, 34000, 50000, 71000, 105000, 145000, 210000, 295000, 425000, 600000, 850000, 1200000, 1700000, 2400000 ] };
var thresholds = xpThresholds[track];
// XP needed to reach next level var xpForCurrentLevel = thresholds[currentLevel - 1]; var xpForNextLevel = thresholds[currentLevel]; // level 20 cap var xpNeededTotal = xpForNextLevel; var xpNeededFromNow = xpForNextLevel - currentXP; var xpIntoLevel = currentXP - xpForCurrentLevel; var xpThisLevel = xpForNextLevel - xpForCurrentLevel; var progressPct = Math.min(100, Math.max(0, Math.round((xpIntoLevel / xpThisLevel) * 100)));
if (currentLevel >= 20) { resultDiv.innerHTML = 'Your character is already at the maximum level (20)!'; return; }
// --- Base XP per CR (Pathfinder Core Rulebook, Table 12-2) --- // Total XP for the encounter (split among party of 4 by default) var crXPTable = { 0.125: 50, 0.167: 65, 0.25: 100, 0.333: 135, 0.5: 200, 1: 400, 2: 600, 3: 800, 4: 1200, 5: 1600, 6: 2400, 7: 3200, 8: 4800, 9: 6400, 10: 9600, 11: 12800, 12: 19200, 13: 25600, 14: 38400, 15: 51200, 16: 76800, 17: 102400, 18: 153600, 19: 204800, 20: 307200, 21: 409600, 22: 614400, 23: 819200, 24: 1228800, 25: 1638400, 26: 2457600, 27: 3276800, 28: 4915200, 29: 6553600, 30: 9830400 };
var baseEncounterXP = crXPTable[encounterCR] || 0;
// XP per character = base XP / party size (Pathfinder splits encounter XP equally) var xpPerCharacter = Math.round(baseEncounterXP / partySize);
- // Encounters needed to level up
- var encountersNeeded = (xpPerCharacter > 0)
- ? Math.ceil(Math.max(0, xpNeededFromNow) / xpPerCharacter)
- 'N/A';
// XP after this encounter var xpAfterEncounter = currentXP + xpPerCharacter; var levelAfterEncounter = currentLevel; for (var lv = currentLevel; lv = thresholds[lv]) { levelAfterEncounter = lv; } else { break; } } var levelUp = (levelAfterEncounter > currentLevel) ? ' (Level Up!)' : '';
// Format numbers with commas function fmt(n) { return n.toLocaleString(); }
// CR display label var crLabels = { 0.125: '1/8', 0.167: '1/6', 0.25: '1/4', 0.333: '1/3', 0.5: '1/2' }; var crDisplay = crLabels[encounterCR] || encounterCR;
// Progress bar HTML var barColor = progressPct >= 75 ? '#4caf50' : progressPct >= 40 ? '#ff9800' : '#2196f3'; var progressBar = '' + '' + '' + progressPct + '% through Level ' + currentLevel + '';
resultDiv.innerHTML = '### Results ' + '' + 'Current Level' + currentLevel + ' → ' + (currentLevel + 1) + '' + 'XP Track' + track.charAt(0).toUpperCase() + track.slice(1) + '' + 'Current XP' + fmt(currentXP) + ' XP' + 'XP Needed for Level ' + (currentLevel + 1) + '' + fmt(xpForNextLevel) + ' XP' + 'XP Still Needed' + fmt(Math.max(0, xpNeededFromNow)) + ' XP' + '' + progressBar + '' + '' + 'Encounter CRCR ' + crDisplay + '' + 'Total Encounter XP (CR ' + crDisplay + ')' + fmt(baseEncounterXP) + ' XP' + 'Party Size' + partySize + ' players' + 'XP per Character' + fmt(xpPerCharacter) + ' XP' + 'XP After This Encounter' + fmt(xpAfterEncounter) + ' XP' + levelUp + '' + 'Encounters Needed to Level Up' + (typeof encountersNeeded === 'number' ? encountersNeeded : encountersNeeded) + '' + ''; }
#### Formulas Used
XP per Character from Encounter: XP per Character = Base Encounter XP (by CR) ÷ Party Size
XP Still Needed to Level: XP Needed = XP Threshold for Next Level − Current XP
Encounters to Level Up: Encounters = ⌈XP Needed ÷ XP per Character⌉
Level Progress %: Progress = (Current XP − XP at Current Level Start) ÷ (XP at Next Level − XP at Current Level Start) × 100
#### Assumptions & References
- XP thresholds are taken directly from Pathfinder Core Rulebook, Table 3–1 (Slow, Medium, Fast tracks).
- Base encounter XP by CR is from Pathfinder Core Rulebook, Table 12–2 (Experience Point Awards).
More Calculators
- Charging Time Calculator by Charger Level and Battery Size
- Breathing Rate & Pattern Calculator
- EV Range vs Michigan Winter Temperature Calculator
- Derivative and Integral Step-by-Step Calculator
- Home Charging Station Installation Cost Estimator
- EV Range and Trip Planner Calculator
- Charging Speed and Time Calculator
- Class Action Settlement Per-Member Payout Estimator
- Contingency Fee vs. Hourly Fee Cost Comparator
- Civil Penalty & Damages Estimator
- Nebraska Small Claims Court Limit Checker
- Nebraska Divorce Filing Cost Estimator
Read Next
Contingency Fee Vs Hourly Fee Cost Comparator ANA › Life Services Authority › National Calculator Authority › Contingency Fee vs.
Nebraska Small Claims Court Limit Checker ANA › Life Services Authority › National Calculator Authority › Nebraska Small Claims Court Limit Checker .calc-container {...
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...