============================================================ */ (function(){ 'use strict'; function init(){ var root = document.getElementById('zssb'); if(!root) return; /* ── State ──────────────────────────────────────── */ var s1Type = 'sleeper'; // 'sleeper' or 'offduty' var s2Type = 'sleeper'; /* ── Toggle button setup ────────────────────────── */ function setupToggle(slpId, offId, callback){ var slpBtn = document.getElementById(slpId); var offBtn = document.getElementById(offId); if(!slpBtn || !offBtn) return; slpBtn.addEventListener('click', function(){ slpBtn.classList.add('active'); offBtn.classList.remove('active'); callback('sleeper'); }); offBtn.addEventListener('click', function(){ offBtn.classList.add('active'); slpBtn.classList.remove('active'); callback('offduty'); }); } setupToggle('zssb-s1-sleeper', 'zssb-s1-offduty', function(t){ s1Type = t; }); setupToggle('zssb-s2-sleeper', 'zssb-s2-offduty', function(t){ s2Type = t; }); /* ── Format decimal hours → "Xh Ym" ─────────────── */ function fmtHrs(h){ if(isNaN(h) || h < 0) return '0h 0m'; var hh = Math.floor(h); var mm = Math.round((h - hh) * 60); if(mm === 60){ hh++; mm = 0; } if(hh === 0 && mm === 0) return '0h 0m'; if(hh === 0) return mm + 'm'; if(mm === 0) return hh + 'h'; return hh + 'h ' + mm + 'm'; } /* ── Add decimal hours to a time string ─────────── */ function addHrs(timeStr, hrs){ if(!timeStr || timeStr === '') return null; var parts = timeStr.split(':'); if(parts.length < 2) return null; var totalMins = parseInt(parts[0], 10) * 60 + parseInt(parts[1], 10) + Math.round(hrs * 60); totalMins = ((totalMins % 1440) + 1440) % 1440; var h = Math.floor(totalMins / 60); var m = totalMins % 60; return (h < 10 ? '0' : '') + h + ':' + (m < 10 ? '0' : '') + m; } /* ── Convert 24hr "HH:MM" → 12hr "H:MM AM/PM" ─── */ function to12hr(t24){ if(!t24) return null; var p = t24.split(':'); var h = parseInt(p[0], 10); var m = p[1]; var ampm = h >= 12 ? 'PM' : 'AM'; h = h % 12; if(h === 0) h = 12; return h + ':' + m + ' ' + ampm; } /* ── Warning helpers ─────────────────────────────── */ function showWarn(msg){ var w = document.getElementById('zssb-warn'); var wm = document.getElementById('zssb-wmsg'); if(w && wm){ wm.textContent = msg; w.classList.add('show'); } } function hideWarn(){ var w = document.getElementById('zssb-warn'); if(w) w.classList.remove('show'); } /* ── Status bar progress ─────────────────────────── */ function setStatus(step){ var pills = ['zssb-pill-1', 'zssb-pill-2', 'zssb-pill-3']; for(var i = 0; i < pills.length; i++){ var el = document.getElementById(pills[i]); if(el){ el.classList[i < step ? 'add' : 'remove']('active'); } } } /* ════════════════════════════════════════════════ MAIN CALCULATION — FMCSA 49 CFR §395.1(g) ════════════════════════════════════════════════ */ function calc(){ hideWarn(); setStatus(2); /* Read inputs */ var drivenBefore = parseFloat(document.getElementById('zssb-driven').value) || 0; var drivenBetween = parseFloat(document.getElementById('zssb-driven-between').value) || 0; var s1h = parseFloat(document.getElementById('zssb-s1-hrs').value) || 0; var s1m = parseFloat(document.getElementById('zssb-s1-min').value) || 0; var s2h = parseFloat(document.getElementById('zssb-s2-hrs').value) || 0; var s2m = parseFloat(document.getElementById('zssb-s2-min').value) || 0; var s1Start = document.getElementById('zssb-s1-start').value; var s2Start = document.getElementById('zssb-s2-start').value; /* Convert to decimal hours */ var split1 = s1h + (s1m / 60); var split2 = s2h + (s2m / 60); /* ── Validation ────────────────────────────────── */ if(split1 <= 0 && split2 <= 0){ showWarn('Please enter the duration for at least one split rest period.'); return; } if(split1 < 0 || split2 < 0){ showWarn('Rest period durations cannot be negative.'); return; } if(drivenBefore < 0 || drivenBetween < 0){ showWarn('Driving hours cannot be negative.'); return; } var totalDriven = drivenBefore + drivenBetween; if(totalDriven > 11){ showWarn('Total hours driven (' + totalDriven.toFixed(2) + ' hrs) exceeds the 11-hour driving limit.'); return; } /* ── FMCSA Split Sleeper Berth Logic ───────────── RULE 1: Combined rest >= 10 hours RULE 2: The longer period must be >= 7 hrs AND in sleeper berth RULE 3: The shorter period must be >= 2 hrs (sleeper or off-duty) ─────────────────────────────────────────────────── */ var totalRest = split1 + split2; var combinedOk = totalRest >= 10; var longSplit = Math.max(split1, split2); var shortSplit = Math.min(split1, split2); var longIsS1 = split1 >= split2; var longType = longIsS1 ? s1Type : s2Type; /* Long split: must be >= 7 hrs AND sleeper berth */ var longOk = (longSplit >= 7) && (longType === 'sleeper'); /* Short split: must be >= 2 hrs (any type) */ var shortOk = (shortSplit >= 2); /* Single-split detection (only one period entered) */ var oneSplit = (split1 > 0 && split2 === 0) || (split1 === 0 && split2 > 0); var isCompliant = false; var reason = ''; if(oneSplit){ isCompliant = false; reason = 'Only one split period entered. Please enter both Split 1 and Split 2 durations to check full FMCSA compliance.'; } else { var failReasons = []; if(!longOk){ if(longSplit < 7){ failReasons.push('Longer split (' + fmtHrs(longSplit) + ') is under the required 7-hour minimum.'); } else { failReasons.push('Longer split (' + fmtHrs(longSplit) + ') must be in the sleeper berth, not off-duty.'); } } if(!shortOk){ failReasons.push('Shorter split (' + fmtHrs(shortSplit) + ') is under the required 2-hour minimum.'); } if(!combinedOk){ failReasons.push('Combined rest (' + fmtHrs(totalRest) + ') is under the 10-hour minimum required.'); } isCompliant = longOk && shortOk && combinedOk; if(isCompliant){ reason = 'Both splits meet FMCSA requirements. Your 14-hour clock is paused during both rest periods and restarts at the end of Split 2.'; } else { reason = failReasons.join(' '); } } /* ── Remaining drive time ───────────────────────── */ var driveRemaining = Math.max(0, 11 - totalDriven); /* ── Timeline data (if start times provided) ──── */ var timelineData = null; if(s1Start && s1Start !== ''){ var s1End = addHrs(s1Start, split1); var midDrive = s2Start && s2Start !== '' ? s2Start : (s1End ? addHrs(s1End, drivenBetween) : null); var s2End = midDrive ? addHrs(midDrive, split2) : null; timelineData = { s1Start: to12hr(s1Start), s1End: to12hr(s1End), s2Start: s2Start && s2Start !== '' ? to12hr(s2Start) : (midDrive ? to12hr(midDrive) : null), s2End: to12hr(s2End), resumeTime: s2End ? to12hr(s2End) : null }; } /* ── Render results ──────────────────────────────── */ renderResults(isCompliant, reason, { split1: split1, split2: split2, totalRest: totalRest, longSplit: longSplit, shortSplit: shortSplit, longOk: longOk, shortOk: shortOk, combinedOk: combinedOk, longType: longType, drivenBefore: drivenBefore, drivenBetween: drivenBetween, totalDriven: totalDriven, driveRemaining:driveRemaining, s1Type: s1Type, s2Type: s2Type, oneSplit: oneSplit }, timelineData); setStatus(3); } /* ════════════════════════════════════════════════ RENDER RESULTS ════════════════════════════════════════════════ */ function renderResults(isCompliant, reason, d, tl){ /* Element refs */ var resEl = document.getElementById('zssb-res'); var banner = document.getElementById('zssb-banner'); var bannerStatus= document.getElementById('zssb-banner-status'); var bannerReason= document.getElementById('zssb-banner-reason'); var bannerSvg = document.getElementById('zssb-banner-svg'); var cardsEl = document.getElementById('zssb-cards'); var breakdownEl = document.getElementById('zssb-breakdown'); var timelineEl = document.getElementById('zssb-timeline'); var tlWrap = document.getElementById('zssb-timeline-wrap'); /* ── Compliance Banner ──────────────────────────── */ if(d.oneSplit){ banner.className = 'compliance-banner non-compliant'; bannerStatus.textContent = 'Incomplete — Enter Both Splits'; bannerSvg.innerHTML = ''; } else if(isCompliant){ banner.className = 'compliance-banner compliant'; bannerStatus.textContent = '✅ FMCSA Compliant — Valid Split'; bannerSvg.innerHTML = ''; } else { banner.className = 'compliance-banner non-compliant'; bannerStatus.textContent = '❌ Non-Compliant — Invalid Split'; bannerSvg.innerHTML = ''; } bannerReason.textContent = reason; /* ── Summary Cards ──────────────────────────────── */ var cards = []; if(!d.oneSplit){ cards.push({ v: fmtHrs(d.split1), u: d.s1Type === 'sleeper' ? 'SLEEPER' : 'OFF-DUTY', n: 'Split 1 Duration', cls: d.s1Type === 'sleeper' ? 'blue' : 'orange' }); cards.push({ v: fmtHrs(d.split2), u: d.s2Type === 'sleeper' ? 'SLEEPER' : 'OFF-DUTY', n: 'Split 2 Duration', cls: d.s2Type === 'sleeper' ? 'blue' : 'orange' }); cards.push({ v: fmtHrs(d.totalRest), u: 'TOTAL REST', n: 'Combined Off-Duty', cls: d.combinedOk ? 'green' : 'red' }); cards.push({ v: fmtHrs(d.driveRemaining), u: 'REMAINING', n: 'Drive Time Left', cls: d.driveRemaining > 4 ? 'green' : (d.driveRemaining > 2 ? 'orange' : 'red') }); } cardsEl.innerHTML = cards.map(function(c){ return '
' + '
' + c.v + '
' + '
' + c.u + '
' + '
' + c.n + '
' + '
'; }).join(''); /* ── Breakdown Table ────────────────────────────── */ var rows = []; if(!d.oneSplit){ rows.push({lbl: 'Split 1 (' + (d.s1Type === 'sleeper' ? 'Sleeper Berth' : 'Off-Duty') + ')', val: fmtHrs(d.split1), cls: ''}); rows.push({lbl: 'Split 2 (' + (d.s2Type === 'sleeper' ? 'Sleeper Berth' : 'Off-Duty') + ')', val: fmtHrs(d.split2), cls: ''}); rows.push({lbl: 'Combined Rest Total', val: fmtHrs(d.totalRest) + (d.totalRest >= 10 ? ' ✓' : ' ✗ (Need ≥10h)'), cls: d.combinedOk ? 'ok' : 'fail'}); rows.push({lbl: 'Longer Split ≥7 hrs in Sleeper Berth', val: d.longOk ? '✓ Pass' : '✗ Fail', cls: d.longOk ? 'ok' : 'fail'}); rows.push({lbl: 'Shorter Split ≥2 hrs (any type)', val: d.shortOk ? '✓ Pass' : '✗ Fail', cls: d.shortOk ? 'ok' : 'fail'}); rows.push({lbl: 'Hours Driven Before Split 1', val: fmtHrs(d.drivenBefore), cls: 'info'}); rows.push({lbl: 'Hours Driven Between Splits', val: fmtHrs(d.drivenBetween), cls: 'info'}); rows.push({lbl: 'Total Hours Driven', val: fmtHrs(d.totalDriven) + ' / 11 hrs max', cls: d.totalDriven < 11 ? 'ok' : 'fail'}); rows.push({lbl: 'Drive Time Remaining After Splits', val: fmtHrs(d.driveRemaining), cls: d.driveRemaining > 0 ? 'ok' : 'fail'}); rows.push({lbl: '14-Hour Clock Paused During Splits', val: isCompliant ? 'Yes — Both periods excluded' : 'Not applicable (fix issues above)', cls: isCompliant ? 'ok' : 'fail'}); } breakdownEl.innerHTML = rows.map(function(r){ return '
' + '' + r.lbl + '' + '' + r.val + '' + '
'; }).join(''); /* ── Timeline ───────────────────────────────────── */ if(!d.oneSplit){ tlWrap.style.display = 'block'; var items = []; items.push({ dot: 'drive', label: 'Started Driving', desc: 'Drove ' + fmtHrs(d.drivenBefore) + ' before first rest period.' }); items.push({ dot: 'sleep', label: 'Split 1 Begins' + (tl && tl.s1Start ? ' at ' + tl.s1Start : ''), desc: fmtHrs(d.split1) + ' ' + (d.s1Type === 'sleeper' ? 'in Sleeper Berth' : 'Off-Duty') + (tl && tl.s1End ? ' → Ends: ' + tl.s1End : '') }); if(d.drivenBetween > 0){ items.push({ dot: 'drive', label: 'Resumed Driving Between Splits', desc: 'Drove ' + fmtHrs(d.drivenBetween) + ' between the two rest periods.' }); } items.push({ dot: 'sleep', label: 'Split 2 Begins' + (tl && tl.s2Start ? ' at ' + tl.s2Start : ''), desc: fmtHrs(d.split2) + ' ' + (d.s2Type === 'sleeper' ? 'in Sleeper Berth' : 'Off-Duty') + (tl && tl.s2End ? ' → Ends: ' + tl.s2End : '') }); if(isCompliant){ items.push({ dot: 'done', label: '14-Hour Clock Restarts' + (tl && tl.resumeTime ? ' at ' + tl.resumeTime : ''), desc: 'Both splits complete. ' + fmtHrs(d.driveRemaining) + ' drive time remaining.' }); } else { items.push({ dot: 'off', label: 'Non-Compliant — Cannot Resume', desc: 'Fix the split issues above before resuming driving.' }); } timelineEl.innerHTML = items.map(function(it){ return '
' + '
' + '
' + '
' + it.label + '
' + '
' + it.desc + '
' + '
'; }).join(''); } else { tlWrap.style.display = 'none'; } /* ── Show results panel ─────────────────────────── */ resEl.classList.add('show'); setTimeout(function(){ resEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }, 100); } /* ════════════════════════════════════════════════ RESET ════════════════════════════════════════════════ */ function resetAll(){ /* Clear number inputs */ var numIds = ['zssb-driven', 'zssb-driven-between', 'zssb-s1-hrs', 'zssb-s1-min', 'zssb-s2-hrs', 'zssb-s2-min']; numIds.forEach(function(id){ var el = document.getElementById(id); if(el) el.value = ''; }); /* Clear time inputs */ ['zssb-s1-start', 'zssb-s2-start'].forEach(function(id){ var el = document.getElementById(id); if(el) el.value = ''; }); /* Reset toggle states */ s1Type = 'sleeper'; s2Type = 'sleeper'; ['zssb-s1-sleeper', 'zssb-s2-sleeper'].forEach(function(id){ var el = document.getElementById(id); if(el) el.classList.add('active'); }); ['zssb-s1-offduty', 'zssb-s2-offduty'].forEach(function(id){ var el = document.getElementById(id); if(el) el.classList.remove('active'); }); /* Hide warning and results */ hideWarn(); var resEl = document.getElementById('zssb-res'); if(resEl) resEl.classList.remove('show'); setStatus(1); } /* ── Event Listeners ──────────────────────────────── */ var calcBtn = document.getElementById('zssb-btn'); if(calcBtn) calcBtn.addEventListener('click', calc); var rstBtn = document.getElementById('zssb-reset'); if(rstBtn) rstBtn.addEventListener('click', resetAll); /* Enter key triggers calculation */ var numFields = ['zssb-driven', 'zssb-driven-between', 'zssb-s1-hrs', 'zssb-s1-min', 'zssb-s2-hrs', 'zssb-s2-min']; numFields.forEach(function(id){ var el = document.getElementById(id); if(el) el.addEventListener('keydown', function(e){ if(e.key === 'Enter') calc(); }); }); } /* end init() */ /* ── Safe DOM-ready execution ───────────────────────── */ if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } else { init(); } })();
FMCSA Compliant Logic
Split Sleeper Berth Calculator
Verify HOS rest splits under 49 CFR §395.1(g) — instantly & free.
Enter Times
Calculate
View Results
i
FMCSA Rule (49 CFR §395.1g): One split must be ≥7 hrs in the sleeper berth. The other must be ≥2 hrs (sleeper or off-duty). Combined total must be ≥10 hrs. Neither period counts against your 14-hour window.
Driving Hours
Hours Driven Before Split 1
Total driving before your first rest
hrs
Hours Driven Between Splits
Driving between Split 1 and Split 2
hrs
Split 1 — First Rest Period
Duration (Hours)
hrs
Duration (Minutes)
min
Start Time (optional)
hh:mm
Type of Rest — Split 1
Split 2 — Second Rest Period
Duration (Hours)
hrs
Duration (Minutes)
min
Start Time (optional)
hh:mm
Type of Rest — Split 2
!
Please enter valid values for all required fields.
⏱ Rest Period Timeline
FMCSA References & Notes
  • Governing Regulation: 49 CFR §395.1(g) — FMCSA Sleeper Berth Provision
  • Long Split Rule: Must be ≥7 hours and must be in the sleeper berth.
  • Short Split Rule: Must be ≥2 hours — sleeper berth or off-duty both qualify.
  • Combined Minimum: Both splits together must total ≥10 hours.
  • 14-Hour Clock: Qualifying split time is excluded from (pauses) the 14-hour window.
  • Drive Time Carry-Over: Remaining drive = 11 − total hours driven (before + between splits).
  • Short-Haul Exception: Drivers under the 150 air-mile short-haul exemption cannot use this provision.
  • Disclaimer: For planning and reference only. Always confirm with your ELD and carrier compliance team.
  • Source: fmcsa.dot.gov — Hours of Service of Drivers

Split Sleeper Berth Calculator: Plan Your HOS Rest Splits Instantly

Figuring out your split sleeper berth rest combinations doesn’t have to be confusing. This free split sleeper berth calculator helps truck drivers and fleet managers instantly verify whether their off-duty rest periods meet FMCSA Hours of Service (HOS) rules — without doing the math by hand. Whether you’re splitting an 8/2, 7/3, or any other legal combination, this tool gives you a clear, compliant answer in seconds.


What This Calculator Tells You

Enter your rest period details and this tool instantly calculates:

  • Whether your two sleeper berth splits are legally compliant under FMCSA HOS rules
  • The total combined off-duty time across both rest periods
  • How much driving time remains after your valid split rest
  • Whether your 14-hour on-duty window is paused or reset correctly
  • The earliest time you can resume driving after completing both splits
  • Whether your splits meet the minimum thresholds (one period ≥ 7 hours, other ≥ 2 hours)

How the Calculator Works (The Formula & Logic)

The split sleeper berth provision is governed by 49 CFR § 395.1(g) under FMCSA regulations. It allows a driver to split their required 10-hour off-duty period into two separate rest segments, under specific conditions.

The Core Rule:

Split 1 + Split 2 = Total Rest, where Split 1 must be ≥ 7 hours in the sleeper berth and Split 2 must be ≥ 2 hours (in the sleeper berth or off-duty). Neither period counts against the 14-hour driving window.

How the calculator applies this logic:

  • Valid Combination Check: Split A ≥ 7 hrs AND Split B ≥ 2 hrs (or vice versa), and both together ≥ 10 hrs total
  • 14-Hour Window Pause: The time spent in a valid qualifying split is excluded from the 14-hour clock calculation
  • Remaining Drive Time: 11 hrs (maximum) minus hours already driven before the split began
  • Reset Eligibility: Once both splits are completed in order, the 11-hour and 14-hour clocks restart based on the end of the second split

Simple formula view:

Remaining Drive Time = 11 hrs − Hours Driven Before Split
14-Hr Window Restart Point = End Time of Second Split Segment


Standard Ratings & Classifications (Split Combinations Chart)

Split CombinationPeriod 1 (Sleeper)Period 2 (Sleeper or Off-Duty)FMCSA Compliant?
8/2 Split8 hours2 hours✅ Yes
7/3 Split7 hours3 hours✅ Yes
6/4 Split6 hours4 hours❌ No (Period 1 < 7 hrs)
5/5 Split5 hours5 hours❌ No (Neither ≥ 7 hrs)
9/1 Split9 hours1 hour❌ No (Period 2 < 2 hrs)
7.5/2.5 Split7.5 hours2.5 hours✅ Yes
10/0 (No Split)10 hours continuous✅ Yes (Standard rest)

Note: The period of ≥ 7 hours must be in the sleeper berth. The shorter period (≥ 2 hours) can be either sleeper berth or off-duty time.


Step-by-Step Practical Example

Scenario: A long-haul truck driver starts their shift at 6:00 AM Monday, drives for 5 hours, then takes a split rest.

Step 1 – First Rest Period (Short Split)
The driver parks and takes 2.5 hours off-duty at 11:00 AM. This is the “short” split (≥ 2 hrs ✅). The 14-hour clock is now paused.

Step 2 – Resume Driving
The driver resumes at 1:30 PM and drives another 3 hours, totaling 8 hours driven so far. Remaining drive time: 11 − 8 = 3 hours left.

Step 3 – Second Rest Period (Long Split)
At 4:30 PM, the driver takes 7 hours in the sleeper berth (the “long” split ≥ 7 hrs ✅). This completes the valid split pair.

Result:

  • Total rest = 2.5 + 7 = 9.5 hours — but wait, the minimum is 10 hours total. This combination is not valid as written.
  • If the driver had taken 7.5 hours in the sleeper berth, total = 10 hrs ✅ — fully compliant.
  • The 14-hour clock restarts at 11:30 PM, and the driver has 3 hours of drive time remaining.

This is exactly the kind of error this calculator catches instantly, before it becomes a costly violation.


How to Use Zo Calculator’s Split Sleeper Berth Tool

Using the Zo Calculator split sleeper berth tool is straightforward. No app download needed — it’s completely free in your browser:

  1. Enter your shift start time — the time you went on-duty or began driving.
  2. Enter hours driven before your first rest split — how long you were behind the wheel before taking your first break.
  3. Enter the duration of Split 1 — your first rest period (in hours and minutes).
  4. Enter the duration of Split 2 — your second rest period.
  5. Select the type for each period — sleeper berth or off-duty, as applicable.
  6. Click “Calculate” — the tool instantly tells you if the combination is FMCSA-compliant, when your 14-hour clock restarts, and how much drive time you have remaining.

Results are displayed clearly with a compliance status, restart time, and remaining driving hours — all on one screen.


Practical Applications and Real-World Uses

  • Long-haul truck drivers use split sleeper berth planning to maximize drive hours across state lines without burning a full 10-hour rest block at once.
  • Fleet dispatchers and managers verify driver logs before dispatch to avoid FMCSA violations and costly DOT audit penalties.
  • Owner-operators running tight delivery schedules use the free split sleeper berth calculator app logic to plan multi-leg routes more efficiently.
  • Trucking companies’ safety compliance officers use it as a quick-check reference tool when reviewing electronic logging device (ELD) data.
  • CDL students and new drivers learning HOS rules use it to understand how the sleeper berth provision interacts with the 11-hour and 14-hour clocks in real scenarios.
  • Transportation attorneys and consultants reference it when preparing responses to HOS violation citations.

Important Notes & Technical Limitations

For transparency and accuracy, keep these limitations in mind when using this tool:

  1. This tool is for reference and planning only. It does not replace your ELD system, your carrier’s compliance software, or official FMCSA guidance. Always confirm your logs with a certified system.
  2. Short-haul exemption drivers are excluded. Drivers operating under the 150 air-mile short-haul exception follow different HOS rules and the split sleeper berth provision does not apply to them.
  3. Team driving scenarios are not handled here. Co-driver log interaction and team HOS rules require separate, more complex calculations.
  4. Regulations can change. FMCSA rules have been updated multiple times. Always verify the current version of 49 CFR § 395.1(g) with official sources before making compliance decisions.

Helpful References & Sources

  • FMCSA.dot.gov — Official Federal Motor Carrier Safety Administration source for all HOS rules, including the sleeper berth provision under 49 CFR Part 395.
  • ecfr.gov — The Electronic Code of Federal Regulations where you can read 49 CFR § 395.1(g) in its current, legally binding form.
  • trucking.org — The American Trucking Associations provides industry guidance, compliance resources, and HOS rule summaries for carriers of all sizes.

🙋 Frequently Asked Questions (FAQs)

What is the split sleeper berth provision under FMCSA rules?

The split sleeper berth provision is an FMCSA rule under 49 CFR § 395.1(g) that allows a commercial truck driver to split their required 10-hour off-duty rest into two separate segments instead of taking it all at once. One period must be at least 7 consecutive hours in the sleeper berth, and the other must be at least 2 hours (either in the sleeper berth or off-duty). Neither period counts against the driver’s 14-hour on-duty window.

What combinations are legal for a split sleeper berth rest?

Any combination where one period is at least 7 hours in the sleeper berth and the other is at least 2 hours (sleeper berth or off-duty), and the two periods together total at least 10 hours, is FMCSA-compliant. Common legal combinations include 8/2, 7/3, 7.5/2.5, and 9/1. A 6/4 or 5/5 split would not qualify because neither segment alone meets the 7-hour minimum for the longer period.

Does the split sleeper berth reset the 11-hour driving limit?

Yes — once both qualifying split rest periods are completed in sequence, both the 11-hour driving limit and the 14-hour on-duty window are reset relative to the end of the second rest period. However, any hours already driven between the two split segments are carried over. Your remaining drive time after the split equals 11 hours minus the hours you drove before and between the two splits.

Is there a free split sleeper berth calculator app I can use?

Yes. ZoCalculator.com offers a completely free split sleeper berth calculator that works directly in your mobile or desktop browser — no app download or account required. It functions like a split sleeper berth calculator app, giving you instant compliance results, remaining drive time, and 14-hour window restart times wherever you have an internet connection.

Can I take my split rest periods in any order?

Yes, the FMCSA does not require you to take the longer (≥ 7-hour) period first. You may take the shorter (≥ 2-hour) split first and the longer period second, or vice versa. What matters is that both periods meet the minimum thresholds and together total at least 10 hours. However, the 14-hour clock pauses during each valid period and restarts after the second segment ends.

Does split sleeper berth time count against the 14-hour clock?

No — this is one of the key benefits of the split sleeper berth provision. Time spent in a qualifying rest split is excluded from your 14-hour on-duty window calculation. This effectively “pauses” your 14-hour clock during each valid split period, giving drivers more flexibility to complete long routes without being cut off by the clock running out mid-trip.

What happens if my two split periods don’t add up to 10 hours?

If your combined split rest totals less than 10 hours, or if one of the individual segments doesn’t meet its minimum threshold, the split is not valid under FMCSA rules. In that case, the time does not pause your 14-hour clock, and you would need to complete a full 10-hour off-duty rest before you can legally drive again. This is exactly the type of error the Zo Calculator is designed to flag before it leads to a violation.

Can property-carrying and passenger-carrying drivers both use the split sleeper berth provision?

The split sleeper berth rules apply primarily to property-carrying drivers under 49 CFR § 395.1(g). Passenger-carrying commercial drivers operate under a different set of HOS rules (49 CFR § 395.3(b)) with different rest requirements, and the split provisions differ. This calculator is specifically designed for property-carrying CMV drivers subject to the standard 11-hour/14-hour rules.

How does split sleeper berth work with the 60/70-hour rule?

The split sleeper berth provision affects your daily 11-hour and 14-hour limits but does not directly reset your weekly 60-hour/7-day or 70-hour/8-day clock. Only a 34-hour restart (or the passage of qualifying off-duty time) affects your weekly cycle. Your weekly on-duty hours continue to accumulate normally even while you’re using the split sleeper berth provision for daily HOS compliance.

Does a team driver’s co-driver time in the sleeper berth count toward the split?

Yes. For team drivers, time spent riding in the sleeper berth as a passenger (not driving or on-duty) can count as a qualifying sleeper berth period, provided it meets the minimum time thresholds. However, the specific interactions between two co-drivers’ individual logs can become complex, and this calculator is designed for single-driver HOS planning. Team driving scenarios should be verified with your carrier’s ELD system or a qualified compliance officer.


Explore Related Calculators on Zo Calculator