Appeal Deadline Calculator

ANALife Services AuthorityNational Calculator Authority›Appeal Deadline 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; } }

Appeal Deadline Calculator

Calculate the deadline to file an appeal based on the date of judgment or order and the applicable jurisdiction/court type.

Date of Judgment / Order

Court / Jurisdiction Type

-- Select -- Federal Civil (FRAP Rule 4(a)(1)(A)) – 30 days Federal Civil – U.S. Party (FRAP Rule 4(a)(1)(B)) – 60 days Federal Criminal – Defendant (FRAP Rule 4(b)(1)(A)) – 14 days Federal Criminal – Government (FRAP Rule 4(b)(1)(B)) – 30 days State – 30-Day Rule (e.g., CA, TX, FL civil) State – 45-Day Rule (e.g., CA unlimited civil w/ notice) State – 60-Day Rule (e.g., some state criminal) State – 90-Day Rule (e.g., some administrative appeals) Custom (enter days below)

Custom Appeal Period (days)

Was Notice of Entry of Judgment Served?

No / Unknown – deadline runs from judgment date Yes – served by mail (add 3 days per FRCP 6(d)) Yes – served electronically (add 3 days per FRCP 6(d)) Yes – served by hand / in-person (no extra days)

Extension of Time Granted? (days, 0 if none)

Calculate Deadline

(function() {

// Show/hide custom days field document.getElementById('app-court-type').addEventListener('change', function() { var show = this.value === 'custom'; document.getElementById('app-custom-days-field').style.display = show ? 'block' : 'none'; });

// Federal holidays (fixed + observed) for a given year // Returns array of "YYYY-MM-DD" strings function getFederalHolidays(year) { var holidays = [];

// Helper: observed date (if Sat -> Fri, if Sun -> Mon) function observed(date) { var d = new Date(date); var day = d.getDay(); if (day === 6) d.setDate(d.getDate() - 1); if (day === 0) d.setDate(d.getDate() + 1); return d; }

// Helper: nth weekday of month (e.g. 3rd Monday of January) function nthWeekday(year, month, weekday, n) { var d = new Date(year, month, 1); var count = 0; while (true) { if (d.getDay() === weekday) { count++; if (count === n) return new Date(d); } d.setDate(d.getDate() + 1); } }

// Helper: last weekday of month function lastWeekday(year, month, weekday) { var d = new Date(year, month + 1, 0); // last day of month while (d.getDay() !== weekday) d.setDate(d.getDate() - 1); return new Date(d); }

function fmt(d) { return d.getFullYear() + '-' + String(d.getMonth() + 1).padStart(2, '0') + '-' + String(d.getDate()).padStart(2, '0'); }

// Fixed holidays (observed) var fixed = [ new Date(year, 0, 1), // New Year's Day new Date(year, 6, 4), // Independence Day new Date(year, 10, 11), // Veterans Day new Date(year, 11, 25) // Christmas Day ]; fixed.forEach(function(d) { holidays.push(fmt(observed(d))); });

// Floating holidays holidays.push(fmt(nthWeekday(year, 0, 1, 3))); // MLK Day: 3rd Mon Jan holidays.push(fmt(nthWeekday(year, 1, 1, 3))); // Presidents Day: 3rd Mon Feb holidays.push(fmt(lastWeekday(year, 4, 1))); // Memorial Day: last Mon May holidays.push(fmt(nthWeekday(year, 8, 1, 1))); // Labor Day: 1st Mon Sep holidays.push(fmt(nthWeekday(year, 9, 4, 4))); // Columbus Day: 2nd Mon Oct (4th weekday Mon) // Juneteenth (since 2021) if (year >= 2021) holidays.push(fmt(observed(new Date(year, 5, 19)))); // Thanksgiving: 4th Thu Nov holidays.push(fmt(nthWeekday(year, 10, 4, 4)));

return holidays; }

// Add calendar days to a date, then if result lands on weekend/holiday, roll forward // Returns { deadline: Date, adjustedForWeekend: bool, adjustedForHoliday: bool } function addDaysAndAdjust(startDate, days) { var d = new Date(startDate); d.setDate(d.getDate() + days);

var adjustedWeekend = false; var adjustedHoliday = false;

// Collect holidays for relevant years var holidays = getFederalHolidays(d.getFullYear()) .concat(getFederalHolidays(d.getFullYear() + 1));

var maxIter = 10; var iter = 0; while (iter ⚠ Please enter the date of judgment or order.'; return; } if (!courtType) { resultDiv.innerHTML = '⚠ Please select a court / jurisdiction type.'; return; } if (courtType === 'custom' && (!customDays || customDays ⚠ Please enter a valid custom appeal period (minimum 1 day).'; return; } if (extensionDays ⚠ Extension days cannot be negative.'; return; }

// Parse judgment date (avoid timezone shift) var parts = judgmentDateStr.split('-'); var judgmentDate = new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2]));

var today = new Date(); today.setHours(0, 0, 0, 0);

// --- Base appeal period --- var baseDays = 0; var courtLabel = ''; var ruleRef = '';

switch (courtType) { case 'federal_civil': baseDays = 30; courtLabel = 'Federal Civil'; ruleRef = 'FRAP Rule 4(a)(1)(A)'; break; case 'federal_civil_gov': baseDays = 60; courtLabel = 'Federal Civil (U.S. Party)'; ruleRef = 'FRAP Rule 4(a)(1)(B)'; break; case 'federal_criminal_def': baseDays = 14; courtLabel = 'Federal Criminal – Defendant'; ruleRef = 'FRAP Rule 4(b)(1)(A)'; break; case 'federal_criminal_gov': baseDays = 30; courtLabel = 'Federal Criminal – Government'; ruleRef = 'FRAP Rule 4(b)(1)(B)'; break; case 'state_30': baseDays = 30; courtLabel = 'State – 30-Day Rule'; ruleRef = 'State appellate rules'; break; case 'state_45': baseDays = 45; courtLabel = 'State – 45-Day Rule'; ruleRef = 'State appellate rules'; break; case 'state_60': baseDays = 60; courtLabel = 'State – 60-Day Rule'; ruleRef = 'State appellate rules'; break; case 'state_90': baseDays = 90; courtLabel = 'State – 90-Day Rule'; ruleRef = 'State appellate rules'; break; case 'custom': baseDays = customDays; courtLabel = 'Custom Period'; ruleRef = 'User-defined'; break; }

// --- Service / notice extra days --- var serviceDays = 0; var serviceLabel = ''; if (noticeServed === 'yes_mail') { serviceDays = 3; serviceLabel = '+3 days (mail service, FRCP 6(d))'; } else if (noticeServed === 'yes_electronic') { serviceDays = 3; serviceLabel = '+3 days (electronic service, FRCP 6(d))'; } else if (noticeServed === 'yes_hand') { serviceDays = 0; serviceLabel = '+0 days (hand/in-person service)'; } else { serviceDays = 0; serviceLabel = 'No notice served – deadline runs from judgment date'; }

// --- Total days before weekend/holiday adjustment --- var totalCalendarDays = baseDays + serviceDays + extensionDays;

// --- Compute raw deadline (no adjustment) --- var rawDeadline = new Date(judgmentDate); rawDeadline.setDate(rawDeadline.getDate() + totalCalendarDays);

// --- Compute adjusted deadline --- var result = addDaysAndAdjust(judgmentDate, totalCalendarDays); var deadline = result.deadline;

// --- Days remaining --- var daysRemaining = daysBetween(today, deadline); var urgencyClass = ''; var urgencyMsg = '';

if (daysRemaining 0
? ' (adjusted: ' + adjustmentNotes.join(', ') + ')'
'';
var rawStr = (result.adjustedForWeekend || result.adjustedForHoliday)
? 'Raw (unadjusted) deadline: ' + formatDate(rawDeadline) + ''
'';

resultDiv.innerHTML = '### Appeal Deadline Results ' + '' + 'Judgment / Order Date' + formatDate(judgmentDate) + '' + 'Court / Jurisdiction' + courtLabel + ' (' + ruleRef + ')' + 'Base Appeal Period' + baseDays + ' calendar days' + 'Service / Notice Adjustment' + (serviceDays > 0 ? serviceDays + ' days' : '0 days') + ' — ' + serviceLabel + '' + 'Extension Granted' + extensionDays + ' days' + 'Total Calendar Days' + totalCalendarDays + ' days' + 'Appeal Deadline' + formatDate(deadline) + '' + adjustmentStr + rawStr + '' + 'Status' + urgencyMsg + '' + '' + '⚠ This tool provides general estimates only and does not constitute legal advice. ' + 'Always verify deadlines with the applicable court rules, local rules, and a licensed attorney. ' + 'Deadlines may be affected by tolling motions (e.g., Rule 59/60 motions), court orders, or other factors not captured here.

'; };

})();

#### Formula

Appeal Deadline = Judgment Date + Base Appeal Period + Service Days + Extension Days

If the computed deadline falls on a Saturday, Sunday, or federal legal holiday, it is extended to the next business day (FRAP Rule 26(a)(1)(C); FRCP Rule 6(a)(1)(C)).

#### Assumptions & References

More Calculators

Read Next

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References