everyday mac tools

Redacting records for a FOIA or public records request

· 6 min read

A public records response has two halves: deciding what the law lets you withhold, and removing it so that it stays removed. macOS handles the second half for a short record, using Preview’s Tools, Redact for the marks and Automator for the searching. What catches offices out is everything around the marks: the exemption cited for each one, the material that lives outside the page, and the index you hand over with the records.

This is the order that keeps a response defensible, and the checks that go with each step.

Decide what is withheld before you open a file

Redacting first and justifying afterwards produces inconsistent responses. The same phone number gets removed on page four and left on page nineteen, and nobody can say why either decision was made.

  1. Fix the scope of the request in writing, in the words you will use in the response letter.
  2. Gather the responsive records in their native form: documents, emails, spreadsheets, scans.
  3. Go through them once, reading only, and decide what is withheld and under which provision. Federal FOIA lists nine exemptions; state and municipal public records acts have their own lists, their own deadlines and their own rules about what you must tell the requester. Whichever applies to you, the citation belongs against the mark rather than in your memory.
  4. Write down the search terms that come out of that pass: surnames, home addresses, personal phone numbers, dates of birth, account numbers, personal email addresses, signatures, internal case references.

That last list is the useful artifact. It is what you search for later, and it is what proves you looked.

Get every record into the same shape

Mixed formats are where things get missed, because you cannot run one search across them.

Print everything to PDF: File, Print, then the PDF pop-up menu at the bottom of the dialog, Save as PDF. Emails are worth exporting individually rather than forwarding, so headers and attachment names come with them.

Scans need attention before anything else. A scanned page is a picture of words, so Command-F finds nothing in it and neither will you. macOS will let you select text inside an image with Live Text, which helps you read but does not put a text layer into the file. Add one properly first: Make a scanned PDF searchable on a Mac covers the routes. Do the OCR before you redact, not after, or you will create a searchable layer that still contains the words you just removed from the picture.

Then name the files in a scheme you can sort, and keep the unredacted set in a separate folder from the one you will produce. The commonest serious error in this work is attaching the working copy.

Find every instance before you mark anything

Search first, mark second. Marking as you read means you find what you notice.

  1. In Preview, press Command-F and work through your term list one word at a time, on every document.
  2. For a set of any size, extract the text in one pass. Open Automator, choose Workflow, drag Extract PDF Text from the PDFs library, set the output to Plain Text and a folder, then drag the PDFs in and click Run.
  3. In Terminal, search the extracted text across the whole production at once:
grep -n -i "surname" ~/Documents/production-text/*.txt
  1. Watch for the variants your list does not contain: a name spelled two ways, initials, a name embedded in an email address, a phone number written with and without dashes, a signature block that repeats an address you removed elsewhere.

Terms found here go back into the list, which is what you reuse on the next request from the same requester.

Redact so that the withholding shows

A records response is not meant to look like a clean document. In most jurisdictions the requester is entitled to see where material was removed and on what basis, so the visible box is part of the work rather than a side effect.

  1. Duplicate the file (File, Duplicate) so you are never editing the only copy.
  2. Tools, Redact. Preview warns that the content will be permanently removed on save. Drag across the words. Redacting a PDF in Preview covers exactly what the tool changes in the file.
  3. Add the exemption code beside each box with the Markup toolbar’s text tool, in the same format on every page. The label is an annotation and anyone can delete it, which is fine: the label is not the secret.
  4. For a page withheld in full, keep the page and mark it withheld rather than deleting it. A missing page number invites a follow-up.
  5. Save, then close the window and reopen the saved file before you look at it. You want to see what you wrote, not what you drew.

Strip what lives outside the page

Redaction removes content from the page. The rest of the file is untouched, and the rest of the file is where a careful requester looks next.

Open Tools, Show Inspector and read the title, author, subject and keywords. A document titled with a complainant’s name gives back what you spent an afternoon removing. In Terminal, mdls ~/Desktop/record.pdf shows the same fields plus what Spotlight indexed. Then deal with attachments, bookmarks, hidden layers and embedded thumbnails, none of which appear in either view: Remove metadata from a PDF on a Mac has the macOS route.

File names count too. So does the folder structure if you send a zip archive.

Keep the index as you go, and check before it leaves

Build the withholding index while you mark, not afterwards. One row per redaction: file, page, a neutral description of what was removed, the provision relied on, and who approved it. Reconstructing that list from a finished PDF is slow and it is where inconsistencies appear.

Then run the output checks on the files you are actually sending, not on the working copies. How to check whether a PDF was really redacted sets out the routine.

If you do this often, the manual version stops scaling somewhere around a few hundred pages. Basalt is built for this shape of work: every mark is reviewed before it is applied, text is excised glyph by glyph, metadata and XMP and attachments and layers and stale thumbnails are stripped, and a verifier re-opens each export with an independent parser and refuses to write the file if a removed string is still present. It builds the withholding index straight from the marks as CSV or XLSX, adds Bates numbers, and runs entirely on the Mac, which for records work is a requirement rather than a preference: see Why a redaction tool should work with the network off.

Questions

Can I print the pages, black them out with a marker and scan them back? It does remove the content, and plenty of offices still do it. The costs are that the response arrives as images nobody can search, and marker over thin paper can leave legible impressions on the scan. If you go this route, check each redacted area at full zoom.

Do I have to tell the requester what was withheld and why? Usually yes in some form, and the form is set by the statute you are responding under rather than by anything on your Mac. Whoever signs the response letter should tell you what the index has to contain before you start marking.

What if the same document is responsive to three different requests? Redact per request, from the original, using that request’s term list. Reusing last month’s redacted version is how material properly withheld from one requester gets released to another, or the reverse.

Where should the unredacted originals live? In a folder that is not the production folder, named so that nobody could confuse the two, on the machine rather than in a synced location. The production folder should contain only files that are safe to send.