The Remove Images from PDF tool produces a new, locally generated copy of your PDF in which every eligible embedded JPG image object is replaced by a tiny 1-by-1 white JPEG, while the rest of each page — text, links, margins, and non-image vector drawing — is left alone. The transformation runs entirely inside your browser tab, so the document is never uploaded to a remote server. The tool enumerates every indirect image XObject in the PDF, checks each one against a strict compatibility profile, and follows an all-or-nothing safety rule: if even a single image in the file fails the check, the tool refuses the job and saves no output. That refusal matters because a half-completed removal would leave a damaged PDF on disk — the page drawing command would point at an object that no longer exists, and standard viewers would refuse to open the file. By keeping the original object reference valid and only swapping the image bytes inside it, the tool preserves the page content stream so the resulting PDF still opens normally and still renders text and links the same way the source did.

Why Removing an Image From a PDF Is Harder Than Deleting a File
Most file formats store images in a self-contained way, so removing one image is just a matter of deleting a block of bytes. A PDF does not work that way. According to the Adobe PDF Reference, each page has a content stream made up of drawing operators, and one of those operators — the Do operator — paints a named resource onto the page. The "name" is a key inside the page's resource dictionary, and the value of that key is an indirect reference that points at an image XObject living somewhere else in the file.
That indirection is what makes naïve removal dangerous. If a script simply deletes the image XObject from the PDF body, the Do operator still tries to dereference it the next time a viewer renders the page. The viewer has two bad options: either raise a "damaged PDF" error and refuse to display the page, or silently skip the missing object and produce a partially blank page that no longer matches the original layout. Some viewers also keep cached thumbnails of the deleted image, which can show up again when the file is reopened.
A second, subtler problem is that the original image data may be referenced more than once. A scan inserted as a full-page image, for example, is sometimes also used as a logo thumbnail in the header. Deleting the object removes both occurrences at once, which is rarely what the user wanted. And because the PDF format does not give editors a safe "remove and patch" primitive, every workaround has to be implemented by hand on the file structure.
How the White-Replacement Approach Keeps the File Valid
The Remove Images from PDF tool solves those problems by keeping every original reference intact and only swapping the image bytes inside each eligible XObject. The implementation, built on the pdf-lib PDFRawStream primitive, walks the page resource dictionaries, identifies each indirect image object that matches the supported profile, and rewrites that object's stream dictionary with a valid 1-by-1 white JPEG payload.
From the PDF viewer's point of view, nothing structural has changed: the page still has the same number of named image resources, the content stream still calls Do with the same names, and the indirect object still resolves. What has changed is what gets painted — a 1-pixel white square instead of the original photo or scan. Because the rest of the page is text, vector strokes, or other content types the tool does not touch, the layout around the blanked-out region stays where it was.
The tool also runs a structural verification step after saving. It opens the new PDF with pdf-lib and again with Mozilla PDF.js, confirms the page count has not changed, and confirms that every image object that should have been replaced is still a valid replacement. If any of those checks fail, the file is not offered for download.
Remove Images From a PDF in Your Browser
- Open the Remove Images from PDF tool and choose one local PDF file. The tool accepts a single document at a time, and the source PDF must be 25 MB or smaller.
- Wait for the local inspection to complete. The tool walks every indirect image XObject in the document and checks each one against the supported-encoding profile.
- Select Remove eligible images. If the document contains even one image the tool cannot safely replace, it stops and saves no output, so you do not end up with a partial file that pretends to be finished.
- Open the new PDF preview and scroll through every page. Confirm that the white replacements land where the originals used to be and that text, links, and other non-image content are still in the right place.
- Only when the preview looks correct, download the new PDF. The original source file stays on your computer and is not affected.
Image Types the Tool Can Replace (and the Ones It Refuses)
| Image encoding in the PDF | What the tool does |
|---|---|
| Unmasked 8-bit DCTDecode JPEG, DeviceRGB | Replaces with a 1-by-1 white JPEG |
| Unmasked 8-bit DCTDecode JPEG, DeviceGray | Replaces with a 1-by-1 white JPEG |
| JPEG with a mask, DecodeParms, or palette | Refuses the whole document |
| JPX (JPEG 2000), JBIG2, LZW, Flate, or other filters | Refuses the whole document |
| CMYK, indexed-color, or inline images | Refuses the whole document |
| Encrypted, password-protected, or signed PDF | Refuses; the tool does not bypass passwords or preserve signatures |
The narrow support list is intentional. A tool that "tries its best" on unsupported encodings would either silently produce a damaged PDF or quietly leave complex images in place while reporting success. The all-or-nothing check guarantees that a download button only appears when the entire document has actually been handled, which is why inspecting the preview before downloading is still a useful final step rather than a redundant one.
What Stays the Same in the Output PDF
| Page element | Status after running the tool |
|---|---|
| Page geometry (size, margins, rotation) | Retained |
| Selectable text and font resources | Retained where the source PDF supports them |
| Hyperlinks and outline / bookmark structure | Retained |
| Vector drawings, shapes, and strokes | Retained |
| Eligible embedded JPG image objects | Replaced with a 1-by-1 white JPEG at the same reference |
| Inline images drawn directly into the content stream | Not claimed as removable by this version |
| PDF metadata, document history, prior revisions | Retained from the source |
Because the tool is not a pixel editor, the visible result depends on what sits on top of the original image. If another page element drew over the photograph — a watermark, a sticky note, an annotation — that overlay stays in place, and the white square beneath it is what gets blanked out. The output is therefore a structural cleanup of the underlying image XObject, not a forced visual redaction of everything covering it.
When This Tool Is the Wrong Choice
The tool is built for a specific cleanup job: blanking out simple placed photographs or scans while keeping the rest of the document usable. There are several common PDF tasks it is not designed for, and trying to use it for those can waste time or produce a misleading result.
- Legal, security, or privacy-grade redaction. A white replacement is a structural change to the image stream. Recoverable metadata, prior revisions, and accessibility tags may still reference the original pixels, and other content layered on top of the image remains visible. Use a dedicated redaction workflow when the goal is provable removal of sensitive content.
- Encrypted or password-protected PDFs. The tool does not accept a password and does not attempt to bypass encryption. If your file opens only after you enter a password, run the source through a password-removal step first — and only with a password you are authorised to use.
- Digitally signed PDFs. Editing the image stream invalidates the existing signature. If you need a signed document, generate a new signature on the cleaned copy rather than relying on the original one.
- PDFs built from many image formats other than JPEG. If your document was scanned as JPEG 2000, exported from a design tool with LZW compression, or contains CMYK or indexed-color images, the tool will refuse the job. In that case, consider converting the document to plain text first or rebuilding the layout from scratch.
- Removing a single, specific picture while keeping others. The tool replaces every eligible image in the document. If you only want to drop one logo from one page, a page-level edit using a different workflow is a better fit.
If the goal is the opposite — pulling the images out of a PDF instead of blanking them in place — Extract Images from PDF saves every eligible JPG to a local archive, which is useful for keeping a copy of the originals before the cleanup step. For everyday documents where a white placeholder is acceptable and the priority is to keep the file opening normally with text and links still selectable, the local replacement approach is a straightforward way to strip photographs out of a PDF without uploading the file anywhere.
For a deeper look, see How to Remove a PDF Password in Adobe Using Your Browser.