BASALT · JOURNAL
Why a black box in Preview is not redaction
Preview is the default PDF application on every Mac, it opens instantly, and it has a rectangle tool that draws a filled black box. That combination has produced more accidental disclosures than any other piece of software on the platform. When you black out text in Preview with that box, the words under it are still in the file.
This is not a bug. The box is an annotation, and annotation is an additive operation by design. It is also not the same thing as the Redaction Selection tool Preview gained in macOS 11 Big Sur. Apple's Preview guide says you select text "to remove it from view," and that once you close the document the redaction becomes permanent. If you redact in Preview, that is the tool to use. Apple's guide does not say what it does about metadata, attachments or images, and the current guide notes that table of contents entries linking to redacted text are not removed, so check the saved file either way.
What the black rectangle actually is
Preview's shape tool creates either a square annotation object or, after certain export paths, a set of path-painting operators appended to the page's content stream. Both are additive.
An annotation is a dictionary attached to the page with a rectangle, a color, and an appearance stream describing how to draw it. It sits in the /Annots array. The page content underneath is untouched, which is the entire point of annotations: they are supposed to be removable comments layered over a document.
The painted-path version is barely different in effect. The page content stream already contains the text-showing operators for the sensitive words. Preview appends fill operators after them. A renderer executes the stream in order, so the rectangle paints last and covers the text visually. The Tj and TJ operator arguments carrying the character codes are still there, in the same positions, in the same stream.
Any tool that reads the content stream instead of looking at the rendered page will find them. That includes the text selection in Preview itself, pdftotext, Spotlight's indexer, and every ediscovery platform your document is likely to pass through.
The test that takes ten seconds
Open the file you redacted. Drag-select across the black box. Press Command-C. Paste into TextEdit in plain text mode.
If the text you thought you removed appears in the paste, it was never removed. On many Preview-produced files it does appear, immediately, with no tools and no expertise required. This is the same mechanism behind the well-known pattern of court filings and government releases where reporters recovered redacted names by copying and pasting from the published PDF.
The uncomfortable part is the inverse case. If nothing pastes, that does not prove the file is clean. Copy-paste failure can come from a broken font encoding, a missing /ToUnicode map, or a viewer quirk, while the character codes and the glyph runs remain fully present and recoverable by a parser that maps fonts directly. Passing the paste test is necessary, not sufficient. How to check whether a PDF was really redacted covers the checks that actually settle it.
Flatten and print to PDF
The common advice when someone learns that annotations are not redaction is to flatten the file: print to PDF, or export in a way that bakes annotations into the page.
On a Mac it may not even settle the narrow question. Apple's guide says File then Print, then Save as PDF, flattens annotations so they cannot be edited. That makes the box part of the page, but the text drawn underneath can stay in the file and still copy out. Where a print path rasterizes the page instead, the text under the box does not survive, but that is a blunt instrument with real costs.
You lose the text layer across the entire document. The file is no longer searchable, no longer selectable, and no longer accessible to a screen reader. Bookmarks, tagging, and form structure are gone. For anything filed with a court that requires text-searchable PDFs, or anything that has to be produced in a searchable format under a discovery protocol, that is a failing document.
You also usually get a larger file, because a page of crisp text becomes a page of pixels.
And crucially, printing does nothing about the rest of the file. The document information dictionary and the XMP packet ride along or get regenerated with the same author name. Embedded attachments may be dropped or may not. If the original was assembled from several files, an unflattened annotation elsewhere in the document is not caught by the one page you were worried about. Rasterizing is a side effect that happens to destroy some text. It is not a redaction procedure.
What Preview does not touch at all
Even if the visible text problem were solved, a redaction is a claim about the whole file. Preview has no interface for most of what that claim covers.
There is no way to inspect or strip the XMP metadata packet, which routinely carries the author, the originating application, a document identifier that links the file to its ancestors, and a history of edits. There is no way to list or remove embedded file attachments, which can be an entire spreadsheet hidden inside the PDF. There is no view of optional content groups, the layers mechanism, where a turned-off layer is invisible on screen and fully present in the file.
There is no handling of /ActualText, the accessibility field that stores a plain text equivalent for a span of content. A word can be excised from the visible glyph run and remain readable in /ActualText.
There is no control over form field values, which persist in the field dictionary regardless of what is painted over the widget. And there is no view of the incremental update chain, which matters more than any of the rest.
Incremental updates keep your earlier drafts
PDF was designed so a file can be updated by appending. A new set of objects and a new cross-reference table go at the end, and the original bytes stay exactly where they were. Viewers read the newest cross-reference table and show you the current state.
Preview saves edits this way in many situations. That means a file you edited three times contains three versions of the affected objects. Walking back through the update chain, which is a documented and entirely mechanical operation, reconstructs earlier states of the page.
If an earlier state had the text uncovered, which is by definition the state before you drew the box, then the unredacted page is physically present in the file you emailed. No amount of black rectangle is relevant at that point.
A real redaction has to be written as a single generation, with one cross-reference structure and no retained prior revisions. That is a file-writing decision, not something you can apply after the fact from a viewer.
What to require from a tool instead
The bar is straightforward to state. The tool must parse the content stream and remove the covered glyphs from the text-showing operators, then re-emit the surviving glyphs at their original positions so the rest of the line still renders correctly. It must destroy and re-encode image pixels under a mark rather than painting over them. It must strip metadata, XMP, attachments, hidden layers, and stale thumbnails. It must write one generation.
And it must let you verify the result with something that is not itself. A tool's own confirmation dialog is a statement of intent, not evidence. See a black box over text is not a redaction for why the visual result is the least informative signal available to you.
Frequently asked questions
Can you redact a PDF in Preview on a Mac?
Yes, with the Redaction Selection tool in macOS 11 Big Sur and later: Apple says it removes selected text from view and that the redaction becomes permanent once you close the document. Not with a black rectangle. A box drawn with the shape tool is an annotation that leaves the page content stream untouched, so the original characters remain in the file and can be recovered by copying, by extraction tools, or by deleting the annotation.
Does Preview permanently delete redacted text?
With the Redaction Selection tool, Apple says the redaction becomes permanent once you close the document. With a black box drawn by the shape tool, no. The text-showing operators carrying the covered words are untouched. Painting order changes what you see on screen while the stored data stays identical. Selecting the covered area and pasting into a plain text editor often reveals the words immediately.
Will exporting or flattening in Preview make the redaction stick?
Not reliably. Apple says exporting keeps annotations editable and printing to PDF flattens them so they cannot be edited, but flattening only makes the box part of the page: the text drawn under it can stay in the file. A print path that rasterizes does destroy the text under the box, but it destroys the text layer of the whole document at the same time, leaving a file that is no longer searchable, selectable, or accessible. Neither does anything about metadata, XMP packets, embedded attachments, form field values, or retained earlier revisions.
Why do black boxes in Preview fail so often?
Because a real redaction and a drawn rectangle look identical on screen at every zoom level, so nothing in the interface signals a problem. The person applying the box sees the expected result and has no reason to check further. That is the same mechanism behind public filings where reporters recovered redacted names by copying and pasting.
Does saving in Preview leave earlier versions in the file?
It can. PDF supports incremental updates, where a new revision is appended and the original bytes remain in place, and viewers save this way in many situations. If a revision from before you drew the box is retained, the unredacted page is still physically present in the file. Counting %%EOF markers reveals how many revisions exist.
Is Preview's Markup or Mail's Markup any different?
Not for shapes. A box drawn with either one is an annotation object with a rectangle, a color, and an appearance stream, stored in the page's /Annots array. Annotations were designed to be removable comments, so any tool that can delete a comment can restore the page. There is no security boundary in an annotation and none was ever claimed.
What should I use instead of Preview for redaction?
Use a tool that excises the covered glyphs from the text-showing operators, re-emits the surviving glyphs at their original positions, overwrites and re-encodes image pixels under a mark, strips metadata and attachments, and writes one generation. Then verify the output with an independent parser rather than trusting a confirmation dialog.
Can I check a Preview redaction myself before sending it?
Yes. Select the redacted region, copy, and paste into TextEdit in plain text mode, then run pdftotext on the file and search the output for each removed term. Follow with exiftool for metadata and qpdf --qdf --object-streams=disable plus a grep to catch strings hidden in compressed object streams.
Doing it in Basalt
Basalt was built because the gap between "looks redacted" and "is redacted" has no visible edge. It excises text from the content stream glyph by glyph and re-emits the surviving text in place, destroys and re-encodes pixels under a mark, strips metadata, XMP, attachments, hidden layers, and stale thumbnails, and writes the file as one generation so earlier versions cannot be recovered.
Before any file is written, an independent parser re-opens the output and proves the redaction. If the proof fails, nothing is saved. Every redaction produces an Ed25519-signed certificate you can verify with shasum and openssl, and the output is byte-reproducible, so a third party can re-run the same marks on the same source and confirm they get an identical file.
The engine runs in a separate process with no network entitlement, enforced by macOS at the code signature level. It is $29 once, lifetime, up to three Macs, free for 24 hours.
Redaction that proves itself
Basalt destroys the content you mark, then re-opens the file it wrote and proves the content is gone before it saves anything. Your documents never leave your Mac.