Free PDF tool
Edit PDF metadata
Document properties show up in search results, file browsers and the title bar of PDF viewers. Check what a file contains and correct it before you publish or send it.
Your PDF stays on your device
- Free, no account needed
- Built on the open-source libraries pdf-lib and PDF.js
How it works
Edit PDF metadata in 4 steps
- 1
Add a PDF
Drop the document onto the tool. Its current properties are shown immediately.
- 2
Edit the fields
Change title, author, subject, keywords or creator. Clear a field to remove it.
- 3
Save
Select Save metadata to write the new properties into the PDF.
- 4
Download
Save the updated file. Page content stays exactly the same.
Questions
Frequently asked questions
Are my files uploaded to a server?
No. The tool runs entirely in your browser: the PDF is read, changed and saved on your device, and its contents are never sent to our servers.
Why does PDF metadata matter?
Search engines and document management systems use the title and subject, screen readers can announce the title, and leftover author names or tool names can reveal internal details you did not intend to share.
Which fields can I change?
Title, author, subject, keywords and creator. The producer field is set to the tool name and the modification date is updated when you save.
Can I use password-protected PDFs?
Not in the browser tool. Encrypted PDFs cannot be modified without the password, so the tool reports them instead of producing a broken file. Remove the protection with the software that created it, then try again.
Automate it
Do the same in your application with Dynamic Document API
Read or set document properties in the same request that produces the file. Rendered documents can also set metadata directly through PDF options.
POST /v1/pdf-tools/metadataPlanned endpointThis endpoint is specified in the public API but not released yet; the request shape may still change.
curl -X POST https://api-eu.dynamicdocumentapi.com/v1/pdf-tools/metadata \
-H "Authorization: Bearer $DYNAMIC_DOCUMENT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"source": {
"upload_id": "upl_01J9ZP2H4K6M8N0Q2R4T6V8X0Z"
},
"set": {
"title": "Annual report 2026",
"author": "Finance team",
"subject": "Financial statements",
"keywords": [
"annual report",
"2026"
]
}
}'const response = await fetch("https://api-eu.dynamicdocumentapi.com/v1/pdf-tools/metadata", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.DYNAMIC_DOCUMENT_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({
"source": {
"upload_id": "upl_01J9ZP2H4K6M8N0Q2R4T6V8X0Z"
},
"set": {
"title": "Annual report 2026",
"author": "Finance team",
"subject": "Financial statements",
"keywords": [
"annual report",
"2026"
]
}
}),
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const result = await response.json();
console.log(result);import os
import uuid
import requests
response = requests.post(
"https://api-eu.dynamicdocumentapi.com/v1/pdf-tools/metadata",
headers={
"Authorization": f"Bearer {os.environ['DYNAMIC_DOCUMENT_API_KEY']}",
"Idempotency-Key": str(uuid.uuid4()),
},
json={
"source": {
"upload_id": "upl_01J9ZP2H4K6M8N0Q2R4T6V8X0Z",
},
"set": {
"title": "Annual report 2026",
"author": "Finance team",
"subject": "Financial statements",
"keywords": ["annual report", "2026"],
},
},
timeout=90,
)
response.raise_for_status()
print(response.json())