ForHosting KIT · Documents & PDF

Strip PDF metadata

Give it the metadata read from a PDF, such as Title, Author, Creator, CreationDate and an internal tracking number, and it comes back empty with a sorted list of the five names it removed. The PDF file itself is not edited. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon

Runs in your browser. Free, unlimited — your data never leaves this page.

Strip PDF metadata after it has been extracted from a document and before the record is shared, logged, or passed to another step. Provide the metadata block as an object, and this capability returns an empty metadata object together with an alphabetized list of the fields that were removed. It does not inspect or rewrite PDF bytes. Instead, it gives applications a small, deterministic sanitization contract that is easy to test, audit, and combine with an existing PDF reader or writer.

Provide the extracted metadata block

Start with the metadata object produced by a PDF parser, document service, or form. Its properties may use familiar PDF information names such as Title, Author, Subject, Keywords, Creator, Producer, CreationDate, or ModDate, but the capability does not restrict the vocabulary to a fixed list. Custom properties are removed too.

This matters because organizations often add internal workflow labels, template identifiers, source-system names, or export settings that can reveal more than the standard fields. Values may be strings, numbers, booleans, nulls, arrays, or nested objects because removal depends on the presence of the field, not on interpreting its content.

Understand the empty result and removal report

A successful response always contains metadata as an empty object. It also contains removed, an alphabetized array of every own enumerable field found in the supplied metadata block. Reporting the names makes sanitization observable: a caller can confirm that Author, Creator, dates, or a custom tracking property was present and was cleared without retaining the original value in the response.

Alphabetical ordering is deliberate. JavaScript objects can be assembled in different insertion orders, but equivalent sets of fields should produce the same confirmation whenever possible. The algorithm therefore enumerates the object’s own fields, sorts their names using a fixed English locale, and returns only those names.

It never traverses inherited properties, never contacts another service, and never uses a clock or random source. An empty input metadata object is valid and produces an empty removed list, which is useful for idempotent pipelines: stripping a record that has already been stripped does not fail or invent a change.

Place it correctly in a PDF workflow

Use this capability between metadata extraction and the step that writes, stores, or shares the sanitized record. If the final deliverable is a PDF file, a PDF writer must still apply the empty object to the document and remove information-dictionary or XMP properties from its bytes. This capability intentionally does not claim to edit a binary document.

That separation makes it useful when your system already owns file access but needs one consistent policy for clearing descriptive records. For example, a document intake service can read metadata, send the block here, record only the removed field names for an audit event, and instruct its writer to persist the empty replacement. Treat the removed list as confirmation of field names, not as proof that a separate PDF file was rewritten.

Sanitize an extracted document record

Replace a parser-produced metadata block with an empty object before the record enters a downstream service.

Create a privacy-preserving audit event

Record which metadata field names were removed without copying their potentially sensitive values into logs.

Enforce one publishing policy

Give multiple PDF ingestion and export paths the same deterministic rule for clearing standard and custom metadata fields.

Does this modify PDF bytes?

No. It operates on an already-extracted metadata object. Use a PDF writer to apply the empty result to a document file.

Which metadata fields are removed?

Every own enumerable field in the supplied metadata object, including standard and custom property names.

Are removed metadata values returned?

No. Only the removed field names are reported, so the response does not preserve the original values.

In what order are the removed entries listed?

Alphabetically by name, so the same set of entries always gives the same confirmation, whatever order they arrived in. Author comes before CreationDate, Creator and Title.

Are custom properties removed as well?

Yes. Every entry is cleared, not only standard ones like Title or Author. Internal workflow labels, template identifiers and source-system names go too, and those often reveal more than the standard details.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/pdf/strip-metadata

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/pdf/strip-metadata \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"metadata":{"Title":"Board minutes","Author":"Example User","Creator":"Office Suite","CreationDate":"D:20260725103000Z"}}'
{
  "metadata": {
    "Title": "Board minutes",
    "Author": "Example User",
    "Creator": "Office Suite",
    "CreationDate": "D:20260725103000Z"
  }
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "pdf.strip_metadata",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

max_mb25
max_pages200
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Provide the extracted metadata block

Place that object in the metadata field of the request. The request must contain an actual object. A string containing JSON is still a string and is rejected rather than parsed implicitly; an array is rejected because numbered entries do not represent a metadata property map. Parse any serialized JSON before calling the capability so the input contract remains explicit and predictable.

Place it correctly in a PDF workflow

A publishing workflow can apply the same operation before exposing document details through an API. Each item costs $0.002 through the API, and the deterministic, network-free implementation also supports repeatable browser-side use.

What happens when metadata is already empty?

The call succeeds with an empty metadata object and an empty removed array.

Can I pass a JSON string?

No. Parse it first. The metadata field must be an object, and strings or arrays produce an invalid_input error.

What does one API call cost?

Processing one metadata object costs $0.002.

Read the full KIT documentation →