HidePDF Content

Guides

How to redact a PDF properly

28 October 2026

Properly, here, means the secret is gone from the file, not merely painted over. The reliable way to learn the difference is the fake invoice already on the playground, then the same steps on your own file once the list and the preview make sense.

Start with a file that is safe to ruin

Open the playground and click India dummy. That PDF is an invented tax invoice for Rivera Traders: bill-to Priya Sharma, an address on MG Road in Bengaluru, the email priya.sharma@example.in, a mobile number, an Aadhaar, PAN ABCPE1234F, a UPI id, a GSTIN, an IFSC, and a line that says Amount: INR 48,000. The file says the values are fake. Use it. Do not practice on a customer's live invoice the first time, because the interesting part is watching which rows appear and which stay blank.

The page will say it is finding fields. A moment later you get a list. Each row is a masked preview, a type, and a page number. Emails show one letter and the domain. ID numbers show the last digits. Nothing in that list is the full secret sitting in your browser's JSON view on purpose. The raw value stayed on the server long enough to draw a box, which is described on the privacy page.

Read the list before you hide anything

Sensitive types are checked. The amount is not. That split is the whole product in one screen. PAN, Aadhaar, UPI, GSTIN, IFSC, the email, the phone, the labeled name, and the labeled address are the sort of thing you usually do not want in a file you are about to forward. The rupee total is often the thing the other person is allowed to see. If you are sending this invoice as a portfolio sample, you might want the total hidden too. Tick Hide amounts, or tick that row. If you are sending it to someone who must check the price, leave the amount alone.

Uncheck anything the recipient truly needs. An accountant chasing GST may need the GSTIN and must not need the Aadhaar. A designer showing layout in a blog post needs neither. There is no preset called "for accountants". You are the preset. The software cannot know the relationship.

Names and addresses are only picked up when the line is labeled. "Bill to: Priya Sharma" matches. "Address: 14 MG Road…" matches. If the same name appears again in a sentence such as "Thanks, Priya, for the chairs", that second mention is ordinary prose and will not be in the list. Scroll the preview later and look for it. The same limit applies to an account number written as "acct 004918" with no pattern the detector knows. More on that class of miss is in the personal data guide.

What Hide selected actually does

Click Hide selected. The server renders each page, paints a dark rectangle over every box you left checked, and embeds those pictures in a brand-new PDF. JPEG quality is high enough to read, not high enough to pretend it is still a vector invoice. The old text operators, the old bookmarks, form fields, and the original info dictionary are not copied. Then the server reads the new file as text and looks again for the types you hid. If one of those values is still extractable, you get an error and no download. The point of that refusal is a black box that only looks redacted. The black-box guide is the long version of why the check exists.

The preview should show dark blocks where the checked fields were. Download PDF. Open the download, not the original. Try to select the PAN. You should not be able to. You also should not be able to select "Office chairs". The chairs were never a secret, but the page is now a picture, so the whole text layer is gone, including words you intended to keep readable by copy-paste. If the recipient must search the PDF or a screen reader must read the line items, this output is the wrong shape. Say so before you send it. A flattened image is a feature when the risk is hidden text, and a drawback when the reader needed real text.

The download that is not redacted

Click Show all, then Hide selected, and read the status line. It tells you nothing was selected, so the original PDF is shown. The download button will save that original. Every secret is still in it. This is easy to miss if you are moving quickly and the preview looks like "the file". The status line is the difference. If you wanted a flattened file and also wanted every detected secret covered, use Hide all (that checks amounts too) or check the rows you mean, then Hide selected. Hiding at least those rows is what triggers the burn. Hiding none of them returns the file you uploaded.

The same job from the API

The playground sends the ids you checked to POST /v1/redact. If you call that endpoint yourself and you leave item ids, types, and countries empty, the default is different from a careless click in the browser: every detected sensitive type is hidden, and amounts are not, unless you set hide_amounts to true. That default is documented in the API reference. The public URL of the India dummy is fine for a test call because the file is already on this site and is fake. Do not point the API at a private network address. Those hosts are rejected.

Response headers are worth a glance. x-hidepdf-hidden is how many fields were burned. x-hidepdf-text-removed is 1 when the text layer was stripped. x-hidepdf-extractable should be 0. If the server thought the result was unsafe, you do not get a PDF at all.

After the download

Search the download for ABCPE1234F, for the example.in address, and for 48,000 if you chose to hide the amount. The search box in Preview finding nothing is a good sign and not the whole test. Copy-paste from the dark block should fail. A text extractor should fail. The picture of a digit that you left uncovered can still be read by a person or by another OCR pass. The checklist goes through that in order.

Keep the original invoice somewhere you control. Send the download. The upload you made to this site is not kept as a library after the response, but your mail provider will keep whatever you attach. Redaction of the file does not redact the sent folder.

File size stops at 25 MB. A signed contract will lose the signature because the new PDF is pictures, not the signed byte range. A scan of this same invoice, with no text layer, takes the path in the OCR guide instead of the path you just used. The India dummy has real text, so OCR does not run on it.

A short order of work

  1. Duplicate the original and put the duplicate aside.
  2. Run the duplicate through the playground, or the API if you already have a key.
  3. Uncheck anything the recipient is supposed to learn. Leave amounts unchecked unless the money is the secret.
  4. Read the preview for names and numbers that never made the list.
  5. Download, then search the download for one value you meant to kill.
  6. Send the download. Do not also attach the original "for reference".

That is the whole habit. The tool is the middle two steps. The rest is you deciding what the other person is allowed to know, which no pattern matcher should decide for you.