Pro Bono Hours Qualifier Calculator
ANA›Life Services Authority›National Calculator Authority›Pro Bono Hours Qualifier 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; } }
Pro Bono Hours Qualifier Calculator
Determine whether an attorney or law firm meets pro bono hour thresholds recommended by bar associations and legal aid standards, and calculate the percentage of billable hours devoted to pro bono work.
Annual Billable Hours
Total hours billed to paying clients in the year.
Annual Pro Bono Hours
Hours provided free or at substantially reduced fee to qualifying clients.
Number of Attorneys (Firm Mode)
Enter 1 for individual attorney calculations.
Qualifying Standard
ABA Model Rule 6.1 (50 hrs/year recommended) State Bar – 50 hrs/year threshold State Bar – 20 hrs/year minimum LSC Grantee – 3% of billable hours BigLaw Pledge – 60 hrs/year per attorney
Select the applicable pro bono standard or pledge.
Attorney Hourly Rate (USD) (optional)
Used to estimate the monetary value of pro bono contribution.
Calculate
function proCalc() { // --- Grab inputs --- var billable = parseFloat(document.getElementById('pro-annual-billable').value); var pbHours = parseFloat(document.getElementById('pro-pro-bono-hours').value); var attorneys = parseFloat(document.getElementById('pro-attorneys').value); var standard = document.getElementById('pro-standard').value; var rate = parseFloat(document.getElementById('pro-hourly-rate').value);
var resultDiv = document.getElementById('pro-result'); resultDiv.style.display = 'block';
// --- Validation --- var errors = []; if (isNaN(billable) || billable 0) { resultDiv.className = 'calc-result calc-result--error'; resultDiv.innerHTML = 'Please fix the following errors:' + errors.map(function(e){ return ''; }).join('') + ''; return; }
// --- Core calculations --- // Per-attorney pro bono hours var pbPerAttorney = pbHours / attorneys;
// Pro bono as % of billable hours (per attorney) var billablePerAttorney = billable / attorneys; var pbPct = (billablePerAttorney > 0) ? (pbPerAttorney / billablePerAttorney) * 100 : 0;
// Total hours per attorney var totalPerAttorney = billablePerAttorney + pbPerAttorney;
// Pro bono as % of total hours var pbPctTotal = (totalPerAttorney > 0) ? (pbPerAttorney / totalPerAttorney) * 100 : 0;
// --- Determine threshold and qualification --- var threshold = 0; var thresholdLabel = ''; var qualifies = false; var qualifyNote = '';
if (standard === 'aba') { threshold = 50; thresholdLabel = '50 hours/year (ABA Model Rule 6.1)'; qualifies = pbPerAttorney >= threshold; qualifyNote = 'ABA Model Rule 6.1 recommends at least 50 hours of pro bono per attorney per year, with a substantial majority to persons of limited means.'; } else if (standard === 'state50') { threshold = 50; thresholdLabel = '50 hours/year (State Bar)'; qualifies = pbPerAttorney >= threshold; qualifyNote = 'Many state bars adopt the 50-hour annual threshold aligned with ABA Model Rule 6.1.'; } else if (standard === 'state20') { threshold = 20; thresholdLabel = '20 hours/year (State Bar Minimum)'; qualifies = pbPerAttorney >= threshold; qualifyNote = 'Some state bars set a lower 20-hour minimum as a baseline reporting or aspirational standard.'; } else if (standard === 'lsc') { // LSC: 3% of billable hours var lscThresholdHours = billablePerAttorney * 0.03; threshold = lscThresholdHours; thresholdLabel = '3% of billable hours = ' + lscThresholdHours.toFixed(1) + ' hrs/attorney (LSC Grantee Standard)'; qualifies = pbPerAttorney >= lscThresholdHours; qualifyNote = 'Legal Services Corporation grantees are encouraged to ensure attorneys contribute at least 3% of their billable hours to pro bono matters.'; } else if (standard === 'biglaw') { threshold = 60; thresholdLabel = '60 hours/year (Law Firm Pro Bono Challenge / BigLaw Pledge)'; qualifies = pbPerAttorney >= threshold; qualifyNote = 'The Law Firm Pro Bono Challenge (sponsored by the Pro Bono Institute) sets a goal of 60 hours per attorney per year for large firms.'; }
// --- Surplus / Deficit --- var gap = pbPerAttorney - threshold;
// --- Monetary value --- var valueTotal = (!isNaN(rate) && rate > 0) ? pbHours * rate : null; var valuePerAttorney = (valueTotal !== null) ? valueTotal / attorneys : null;
// --- Firm-wide threshold hours needed --- var firmThresholdTotal = threshold * attorneys; var firmGap = pbHours - firmThresholdTotal;
// --- Build output --- var statusClass = qualifies ? 'calc-result--success' : 'calc-result--warning'; resultDiv.className = 'calc-result ' + statusClass;
var statusIcon = qualifies ? '✅' : '⚠️'; var statusLabel = qualifies ? 'QUALIFIES' : 'DOES NOT QUALIFY';
var html = '### ' + statusIcon + ' ' + statusLabel + ' '; html += 'Standard Applied: ' + thresholdLabel + '
';
html += ''; html += 'MetricPer AttorneyFirm Total';
html += 'Billable Hours' + billablePerAttorney.toFixed(1) + ' hrs' + billable.toFixed(1) + ' hrs'; html += 'Pro Bono Hours' + pbPerAttorney.toFixed(1) + ' hrs' + pbHours.toFixed(1) + ' hrs'; html += 'Pro Bono % of Billable' + pbPct.toFixed(2) + '%' + pbPct.toFixed(2) + '%'; html += 'Pro Bono % of Total Hours' + pbPctTotal.toFixed(2) + '%' + pbPctTotal.toFixed(2) + '%'; html += 'Required Threshold' + threshold.toFixed(1) + ' hrs' + firmThresholdTotal.toFixed(1) + ' hrs';
var gapLabel = gap >= 0 ? 'Surplus Hours' : 'Hours Still Needed'; var gapValue = Math.abs(gap).toFixed(1); var firmGapValue = Math.abs(firmGap).toFixed(1); html += '' + gapLabel + '' + gapValue + ' hrs' + firmGapValue + ' hrs';
if (valueTotal !== null) { html += 'Estimated Pro Bono Value (@$' + rate.toFixed(0) + '/hr)$' + valuePerAttorney.toLocaleString('en-US',{minimumFractionDigits:0,maximumFractionDigits:0}) + '$' + valueTotal.toLocaleString('en-US',{minimumFractionDigits:0,maximumFractionDigits:0}) + ''; }
html += '';
// Qualification note html += '' + qualifyNote + '
';
// Actionable guidance if (!qualifies) { var hoursNeededPerAttorney = (threshold - pbPerAttorney).toFixed(1); var weeksLeft = 52; var hrsPerWeek = ((threshold - pbPerAttorney) / weeksLeft).toFixed(2); html += ''; html += 'Action Required: Each attorney needs ' + hoursNeededPerAttorney + ' more pro bono hours to meet the threshold — approximately ' + hrsPerWeek + ' hours/week if spread evenly over 52 weeks.'; html += ''; } else { html += ''; html += 'Congratulations! Your pro bono contribution meets or exceeds the selected standard. Consider reporting your hours to your state bar's pro bono reporting program.'; html += ''; }
resultDiv.innerHTML = html; }
#### Formulas Used
Per-Attorney Pro Bono Hours: Pro Bono Hours per Attorney = Total Pro Bono Hours ÷ Number of Attorneys
Pro Bono % of Billable Hours: PB% (Billable) = (Pro Bono Hours per Attorney ÷ Billable Hours per Attorney) × 100
Pro Bono % of Total Hours: PB% (Total) = (Pro Bono Hours per Attorney ÷ (Billable + Pro Bono Hours per Attorney)) × 100
Surplus / Deficit: Gap = Pro Bono Hours per Attorney − Threshold Hours Positive = surplus; Negative = hours still needed.
LSC 3% Standard Threshold: Required Hours = Billable Hours per Attorney × 0.03
Estimated Monetary Value: Value = Total Pro Bono Hours × Attorney Hourly Rate
Firm-Wide Threshold: Firm Threshold = Per-Attorney Threshold × Number of Attorneys
#### Assumptions & References
- ABA Model Rule 6.1 recommends every lawyer provide at least 50 hours of pro bono legal services per year, with a substantial majority to persons of limited means or organizations serving them. (ABA Rule 6.1)
- LSC Grantee Standard: Legal Services Corporation encourages grantee attorneys to devote at least 3% of billable hours to pro bono matters. (lsc.gov)
- Law Firm Pro Bono Challenge (Pro Bono Institute): Large law firms pledge a minimum of 60 hours per attorney per year. (probonoinst.org)
- Pro bono hours include services rendered without fee or at a substantially reduced fee to qualifying individuals or nonprofit organizations.
More Calculators
- DNA Base Pair Calculator
- Light-Year Distance Calculator
- Vulnerability Risk Score Calculator (CVSS-based)
- Penetration Testing Cost Estimator
- Encryption Key Strength Calculator
- California Data Breach Notification Deadline Calculator