Split PDF

PDF Splitter | Extract Pages from PDF

PDF Splitter

Split PDF Files with Ease

Extract specific pages or split your PDF document into multiple files. No uploads required – everything happens in your browser.

Upload PDF

Drag & drop your PDF file here

or

Maximum file size: 50MB

Split Options

From to

Enter the page range you want to extract

Enter specific pages or ranges (e.g., 1,3,5-8)

Extract each page as a separate PDF file

Why Use Our PDF Splitter?

Secure & Private

Your files never leave your browser. All processing happens locally.

Fast Processing

Split PDFs in seconds with our optimized processing engine.

Mobile Friendly

Works perfectly on all devices – desktop, tablet, and mobile.

Page ${i}
`; pageElement.addEventListener('click', () => togglePageSelection(i, pageElement)); previewContainer.appendChild(pageElement); } } function togglePageSelection(pageNumber, element) { if (selectedPages.has(pageNumber)) { selectedPages.delete(pageNumber); element.classList.remove('selected'); element.querySelector('.page-checkbox').checked = false; } else { selectedPages.add(pageNumber); element.classList.add('selected'); element.querySelector('.page-checkbox').checked = true; } } function selectAllPages() { selectedPages.clear(); const pageElements = document.querySelectorAll('.page-preview'); pageElements.forEach((element, index) => { selectedPages.add(index + 1); element.classList.add('selected'); element.querySelector('.page-checkbox').checked = true; }); } function clearSelection() { selectedPages.clear(); const pageElements = document.querySelectorAll('.page-preview'); pageElements.forEach(element => { element.classList.remove('selected'); element.querySelector('.page-checkbox').checked = false; }); } function processSplit() { if (selectedPages.size === 0) { alert('Please select at least one page to extract.'); return; } previewSection.classList.add('hidden'); processingSection.classList.remove('hidden'); // Simulate processing delay setTimeout(() => { processingSection.classList.add('hidden'); showResults(); }, 2000); } function showResults() { resultsContainer.innerHTML = ''; // In a real implementation, we would generate actual PDF files // For this demo, we'll create mock download links const pagesArray = Array.from(selectedPages).sort((a, b) => a - b); // Group consecutive pages const ranges = []; let start = pagesArray[0]; let end = pagesArray[0]; for (let i = 1; i < pagesArray.length; i++) { if (pagesArray[i] === end + 1) { end = pagesArray[i]; } else { ranges.push({start, end}); start = pagesArray[i]; end = pagesArray[i]; } } ranges.push({start, end}); // Create result items ranges.forEach((range, index) => { const rangeText = range.start === range.end ? `Page ${range.start}` : `Pages ${range.start}-${range.end}`; const resultItem = document.createElement('div'); resultItem.className = 'flex justify-between items-center bg-gray-50 p-4 rounded-lg'; resultItem.innerHTML = `

extracted_${range.start}-${range.end}.pdf

${rangeText}

`; resultsContainer.appendChild(resultItem); }); // Add event listeners to download buttons document.querySelectorAll('.download-single').forEach(button => { button.addEventListener('click', (e) => { const range = e.target.closest('button').getAttribute('data-range'); downloadSingleFile(range); }); }); resultsSection.classList.remove('hidden'); } function downloadSingleFile(range) { // In a real implementation, this would download the actual PDF // For this demo, we'll just show an alert alert(`Downloading PDF with pages ${range}`); } function downloadAll() { // In a real implementation, this would download a zip file with all extracted PDFs // For this demo, we'll just show an alert alert('Downloading all extracted PDFs as a ZIP file'); } function resetApp() { resetFile(); resultsSection.classList.add('hidden'); selectedPages.clear(); }
Scroll to Top