Private by design. Processed in your browser on your device. No account required. How it works

Blur PDF

Add adjustable visual blur to selected areas. Only pages with blur regions are rasterized; untouched pages are copied with their text layers intact. Blur can leave recognizable patterns, so use Redact PDF when information must be removed.
Blur PDF
Choose a file to start
Upload a PDF, draw blur regions over sensitive details, adjust blur strength when needed, and export the flattened PDF.
  • Large text often needs a stronger blur than small text.
  • You can change blur strength for each region after drawing it.
  • The right panel is where you draw the blur and export the final PDF.
Works with PDF files.
{{ pdfFile.name }}
Pages: {{ pageCount }}
Size: {{ sizeLabel }}
How blur export works
What this does
Blur softens the selected regions and applies that blur in the exported PDF.
How to start
Go to the right page, drag on the preview, then adjust each region if the blur needs refinement.
What you get
Your download is a flattened PDF with the blurred regions applied page by page.
Page {{ currentPage }} of {{ pageCount }}
Set the starting blur for new regions. Large text often needs a higher blur.
Blur regions
Page {{ currentPage }}: {{ currentPageCount }} region{{ currentPageCount === 1 ? '' : 's' }}. Total: {{ totalCount }}.
Region {{ index + 1 }}
{{ formatRect(rect) }}
No regions yet
Drag on the preview to add a blur region.
Blurred exports are flattened to keep details hidden.
{{ warningMessage }}
{{ statusMessage }}
Result panel
Blur preview appears here
After upload, draw blur regions on the page preview, review them page by page, and download the blurred PDF from this panel.
  • The preview shows each blur region before export.
  • Per-region blur values stay visible in the left panel for tuning.
  • The export button stays next to the preview so you do not lose your place.
{{ (zoomLevel * 100).toFixed(0) }}%
Blur regions are previewed here and applied on export.
Working
Exporting blur
{{ exportProgress || 'Flattening the blur regions into the final PDF.' }}
Check blur
Review before export
{{ warningMessage }}
Status
Blur regions updated
{{ statusMessage }}
Start here
Draw blur where the original is still readable
Blur only applies inside the rectangles you draw on the page preview.
  • Use Zoom first if the text is small or tightly packed.
  • Click and drag on the page preview to place each blur region.
  • If one region still looks readable, raise that region’s blur value in the left panel before export.
Large headings often need a stronger blur than small body text.
What to expect
How the blurred PDF should look after export
The preview shows the blur placement. The download flattens the effect into the PDF itself.
Before export
You still see the original underneath
The working preview keeps the page context visible so you can fine-tune each region before download.
After export
Blur is baked into the file
The downloaded PDF keeps the blur effect on every selected page and region.
Best check
Open the export and zoom in
If the blur looks close in the preview, inspect the downloaded PDF at a higher zoom before sharing it.
Need a stronger privacy block instead of blur? Use the Redact PDF tool.
Blur summary
Check every blurred region before export
Blur is previewed here and flattened into the exported PDF so the effect stays in the final file.
  • Current page: Page {{ currentPage }} of {{ pageCount }}
  • Regions on page: {{ currentPageCount }} · total {{ totalCount }}
  • Export: Download blurred PDF from this panel once every region looks right.
{{ totalCount ? 'Export the blurred PDF from this panel when the preview looks right.' : 'Draw at least one blur region to enable export.' }}

How to blur a PDF

Choose a PDF

Select a PDF and load the first page preview.

Draw blur regions

Drag on the page to blur sensitive details.

Download the blurred PDF

Export a flattened PDF with blurred content.

Private by default

Everything runs in your browser on your device.

Draw blur regions

Mark faces, context, or other areas that only need visual masking.

Adjust blur strength

Choose how soft or strong the masked area appears in the preview.

Multi-page support

Add separate blur regions to any page in the document.

Not secure redaction

Blur can leave recognizable patterns. Use Redact PDF for secrets or personal information.

Runs on your device

Blurring and PDF export happen in your browser without uploading the document.

Only changed pages flatten

Pages with blur regions become JPEG images. Untouched pages are copied and keep their existing text layers.

Frequently Asked Questions

Use it when you want to soften faces, backgrounds, or contextual details and strict information removal is not required.

Yes. Use the strength control and preview each region before exporting.

Yes. Add separate blur regions to any page in the PDF.

No. Blurring and export happen in your browser on your device.

Only pages that contain blur regions are rasterized into JPEG images. Untouched pages are copied from the source PDF and keep their existing text layers.

No. Blur is visual masking and may leave recognizable patterns. Use Redact PDF for names, IDs, passwords, account numbers, or anything that must be removed.
(function() { const title = document.querySelector('h1'); const actionRegion = document.querySelector('.action-container, .action-body'); if (!title || !actionRegion || title.querySelector('.tool-hero-mark')) return; const path = window.location.pathname.replace(/\/$/, ''); if (!path || path === '/' || path.startsWith('/converters') || path === '/about' || path === '/contact' || path === '/support' || path === '/privacy-policy') { return; } const lowerKey = path.replace(/^\/(video|audio)\//, '').replace(/^\//, '').toLowerCase(); if (!lowerKey) return; let category = 'image'; if (path.startsWith('/video/')) category = 'video'; if (path.startsWith('/audio/')) category = 'audio'; const isUtility = lowerKey.includes('ascii') || lowerKey === 'check-my-file' || lowerKey.includes('resizer') || lowerKey.includes('metadata') || lowerKey.includes('compress') || lowerKey.includes('base64') || lowerKey.includes('background') || lowerKey.includes('crop') || lowerKey.includes('watermark') || lowerKey.includes('remove-pages') || lowerKey.includes('unlock') || lowerKey.includes('protect') || lowerKey.includes('editor') || lowerKey.includes('excel') || lowerKey.includes('upscale') || lowerKey.includes('merge') || lowerKey.includes('split') || lowerKey.includes('ocr') || lowerKey.includes('sign') || lowerKey.includes('trim') || lowerKey.includes('favicon'); if (category === 'image' && isUtility) category = 'tool'; const labelMap = { jpg: 'JPG', jpeg: 'JPEG', png: 'PNG', gif: 'GIF', svg: 'SVG', pdf: 'PDF', heic: 'HEIC', jfif: 'JFIF', webp: 'WEBP', bmp: 'BMP', ico: 'ICO', word: 'DOCX', docx: 'DOCX', excel: 'Excel', xls: 'XLS', xlsx: 'Excel', mp4: 'MP4', mov: 'MOV', avi: 'AVI', mp3: 'MP3', aac: 'AAC', flac: 'FLAC', wav: 'WAV', webm: 'WEBM', cr2: 'CR2', arw: 'ARW', nef: 'NEF', raf: 'RAF' }; const formatLabel = (value) => labelMap[value] || value.toUpperCase(); function getFormatMeta(key) { if (key === 'check-my-file') { return {primary: 'Check', secondary: 'File', connector: 'dot'}; } const directMatch = key.match(/^([a-z0-9]+)-to-([a-z0-9]+)$/); const convertMatch = key.match(/^convert-([a-z0-9]+)-to-([a-z0-9]+)$/); const convertToMatch = key.match(/^convert-to-([a-z0-9]+)$/); if (directMatch) { return {primary: formatLabel(directMatch[1]), secondary: formatLabel(directMatch[2]), connector: 'arrow'}; } if (convertMatch) { return {primary: formatLabel(convertMatch[1]), secondary: formatLabel(convertMatch[2]), connector: 'arrow'}; } if (convertToMatch) { return {primary: 'Any', secondary: formatLabel(convertToMatch[1]), connector: 'arrow'}; } if (key.startsWith('compress-')) { return {primary: 'Compress', secondary: formatLabel(key.replace('compress-', '')), connector: 'dot'}; } if (key.includes('base64') && key.includes('decode')) { return {primary: 'Base64', secondary: 'Decode', connector: 'dot'}; } if (key.startsWith('base64-to-')) { return {primary: 'Base64', secondary: formatLabel(key.replace('base64-to-', '')), connector: 'arrow'}; } if (key.includes('-to-base64')) { const from = key.replace('convert-', '').replace('-to-base64', ''); return {primary: formatLabel(from), secondary: 'Base64', connector: 'arrow'}; } if (key.includes('base64')) { return {primary: 'Base64', secondary: 'Encode', connector: 'dot'}; } if (key.includes('ascii')) { return {primary: 'ASCII', secondary: 'Art', connector: 'dot'}; } if (key.includes('resizer')) { return {primary: 'Resize', secondary: 'Pixels', connector: 'dot'}; } if (key.includes('remove-pages')) { return {primary: 'Remove', secondary: 'Pages', connector: 'dot'}; } if (key.includes('crop') && key.includes('pdf')) { return {primary: 'Crop', secondary: 'PDF', connector: 'dot'}; } if (key.includes('pdf-editor')) { return {primary: 'Edit', secondary: 'PDF', connector: 'dot'}; } if (key.includes('unlock')) { return {primary: 'Unlock', secondary: 'PDF', connector: 'dot'}; } if (key.includes('protect')) { return {primary: 'Protect', secondary: 'PDF', connector: 'dot'}; } if (key.includes('pdf') && key.includes('metadata')) { return {primary: 'Clean', secondary: 'Metadata', connector: 'dot'}; } if (key.includes('metadata')) { return {primary: 'EXIF', secondary: 'Clean', connector: 'dot'}; } if (key.includes('background')) { return {primary: 'Remove', secondary: 'Background', connector: 'dot'}; } if (key.includes('crop')) { return {primary: 'Crop', secondary: 'Image', connector: 'dot'}; } if (key.includes('watermark')) { return {primary: 'Watermark', secondary: 'Image', connector: 'dot'}; } if (key.includes('upscale')) { return {primary: 'Upscale', secondary: 'Image', connector: 'dot'}; } if (key.includes('merge')) { return {primary: 'Merge', secondary: 'PDF', connector: 'dot'}; } if (key.includes('split')) { return {primary: 'Split', secondary: 'PDF', connector: 'dot'}; } if (key.includes('ocr')) { return {primary: 'OCR', secondary: 'PDF', connector: 'dot'}; } if (key.includes('sign')) { return {primary: 'Sign', secondary: 'PDF', connector: 'dot'}; } if (key.includes('trim')) { return {primary: 'Trim', secondary: 'Video', connector: 'dot'}; } return {primary: 'Tool', secondary: '', connector: 'dot'}; } function getIconClass(key, categoryName) { const toFormat = key.split('-to-')[1]; if (key === 'check-my-file') return 'bi-file-earmark-check'; if (key.includes('ascii')) return 'bi-textarea-t'; if (key.includes('resizer')) return 'bi-aspect-ratio'; if (key.includes('metadata')) return 'bi-shield-slash'; if (key.includes('compress')) return 'bi-file-earmark-zip'; if (key.includes('base64')) return 'bi-journal-code'; if (key.includes('background')) return 'bi-scissors'; if (key.includes('crop')) return 'bi-crop'; if (key.includes('watermark')) return 'bi-type'; if (key.includes('remove-pages')) return 'bi-trash'; if (key.includes('unlock')) return 'bi-unlock'; if (key.includes('protect')) return 'bi-lock'; if (key.includes('editor')) return 'bi-pencil-square'; if (key.includes('excel')) return 'bi-file-earmark-spreadsheet'; if (key.includes('upscale')) return 'bi-arrows-angle-expand'; if (key.includes('merge')) return 'bi-files'; if (key.includes('split')) return 'bi-scissors'; if (key.includes('ocr')) return 'bi-file-earmark-text'; if (key.includes('sign')) return 'bi-pen'; if (key.includes('trim')) return 'bi-scissors'; if (toFormat) { switch (toFormat) { case 'jpg': case 'jpeg': return 'bi-filetype-jpg'; case 'png': return 'bi-filetype-png'; case 'gif': return 'bi-filetype-gif'; case 'svg': return 'bi-filetype-svg'; case 'pdf': return 'bi-filetype-pdf'; case 'word': case 'docx': return 'bi-file-earmark-word'; case 'xls': case 'xlsx': case 'excel': return 'bi-file-earmark-spreadsheet'; case 'heic': return 'bi-filetype-heic'; case 'webp': return 'bi-filetype-webp'; case 'bmp': return 'bi-filetype-bmp'; case 'ico': return 'bi-file-image'; case 'mp4': return 'bi-filetype-mp4'; case 'mov': return 'bi-filetype-mov'; case 'mp3': return 'bi-filetype-mp3'; case 'wav': return 'bi-filetype-wav'; case 'avi': return 'bi-filetype-avi'; default: return 'bi-file-earmark-image'; } } if (categoryName === 'video') return 'bi-film'; if (categoryName === 'audio') return 'bi-music-note-beamed'; if (categoryName === 'image') return 'bi-file-earmark-image'; return 'bi-gear'; } const formatMeta = getFormatMeta(lowerKey); const connectorIcon = formatMeta.connector === 'arrow' ? 'bi-arrow-right-short' : 'bi-dot'; const iconClass = getIconClass(lowerKey, category); const mark = document.createElement('span'); mark.className = `tool-hero-mark converter-mark converter-mark--${category}`; const iconWrap = document.createElement('span'); iconWrap.className = 'converter-mark__icon'; const icon = document.createElement('i'); icon.className = iconClass; iconWrap.appendChild(icon); mark.appendChild(iconWrap); const formatWrap = document.createElement('span'); formatWrap.className = 'converter-format'; const primary = document.createElement('span'); primary.className = 'format-pill'; primary.textContent = formatMeta.primary; formatWrap.appendChild(primary); if (formatMeta.secondary) { const connector = document.createElement('span'); connector.className = 'format-connector'; const connectorIconEl = document.createElement('i'); connectorIconEl.className = connectorIcon; connector.appendChild(connectorIconEl); formatWrap.appendChild(connector); const secondary = document.createElement('span'); secondary.className = 'format-pill format-pill--secondary'; secondary.textContent = formatMeta.secondary; formatWrap.appendChild(secondary); } mark.appendChild(formatWrap); title.classList.add('tool-hero-title'); title.prepend(mark); })();