Registry
DS-11 — programmatic fill compatibility
Application for a U.S. Passport · US Department of State, Bureau of Consular Affairs · DS-11 04-2025. Tested 2026-08-06 on the unmodified upstream blank — every number below comes from a recorded run, not from documentation.
Verdict at a glance
| Tool | Version | Result | Detail |
|---|---|---|---|
| pdfops API | hosted, tested 2026-08-06 | verified + deterministic flatten | 83/83 supported fields landed; flatten=true byte-deterministic (sha256 2bf6aa870757…) |
| pdf-lib | 1.17.1 | verified (83/83) | 83 fields filled in-process |
| @cantoo/pdf-lib (fork) | 2.6.5 | verified (83/83) | 83 fields filled in-process |
| pypdf | 6.15.0 | text fields verified (63/63) | 63 text fields written and re-read (text fields only) |
| pdftk-java | 3.3.3 | verified (83/83) | 83 fields filled via FDF and re-dumped |
| qpdf --check | 11.9.0 | warnings | WARNING: public/registry/blank/state-ds-11.pdf: page 5: shared object 671: in hint table but not computed list | qpdf: operation succeeded with warnings |
| poppler render check | 24.02.0 | values render (63/63) | 63/63 filled text values present in pdftotext output of the pdf-lib-filled file; page-1 raster sha256 014ecc455e42… |
File facts
- Source: https://eforms.state.gov/Forms/ds11_pdf.PDF (issuer page: here)
- Blank tested: state-ds-11.pdf · 2508 KB · sha256
6b30860f0b54cba9df1a54d4eb007dc93a6c785b5253516604530b1c1898e2f6 - License: US federal government work — public domain (17 U.S.C. § 105). The hash-verified blank is redistributed here unmodified.
- Structure: 6 pages · AcroForm
- Fields: 84 (63 text, 20 checkbox, 1 button)
Quirks & limitations
- The class-pattern question this entry was fetched to answer: is a State Department form built like USCIS's (dynamic XFA wrapped in owner-password AES encryption, verified in this registry's uscis-i-9 entry) or like the courts' (plain AcroForm, verified in uscourts-ao-440 and uscourts-101)? Measured directly: DS-11 is a plain, unencrypted AcroForm with no XFA dictionary on /AcroForm at all — confirmed via cantoo/pdf-lib load plus `qpdf --show-encryption` reporting 'File is not encrypted'. State's sibling renewal form DS-82 (checked alongside it for this entry, not itself added to the registry) is the same shape — plain AcroForm, unencrypted, 71 fields including 6 real RadioGroups — so this isn't a one-off; State's form family reads as its own class, distinct from both USCIS and the IRS's hybrid-XFA pattern.
- eforms.state.gov has no bot-wall: a plain `curl` with a browser User-Agent fetched this 2.5 MB, 6-page blank on the first try, no 403 and no residential-IP/CDP workaround needed — a contrast worth recording next to uscis.gov's Akamai 403-to-datacenter-IPs behavior in the i-9 entry.
- 84 fields (63 TextField, 20 CheckBox, 1 pushbutton). Several visually-mutually-exclusive questions are built as sets of independent, ungrouped CheckBox fields rather than a single RadioGroup — verified field-by-field via pypdf's raw field dict: the 'previous passport status' question (Submitting/Stolen/Lost/In your possession) is four separate /Btn fields ('Book Status Submitting', 'Book Status Stolen', 'Book Status Lost', 'Book Status Possession'), each with Ff=0 (no radio flag set) and its own independent /Off + one on-state pair. Nothing in the AcroForm structure stops a filler from checking more than one simultaneously — a filler has to enforce mutual exclusivity itself. This is the same failure shape this registry separately documents in uscourts-101's Yes/No questions; seeing it twice, from two unrelated agencies' Acrobat-authored forms, is what turns it from an anecdote into a pattern worth checking for on any new form.
- 6 pages, but all 84 fields sit on the last two — pages 1-4 are eligibility rules, document checklists, and the privacy-act notice with zero form fields; the entire fillable application (identity, parents, spouse, passport book/card status) is packed onto pages 5-6. Verified by walking each field's widget /P (page) reference against the page tree, not by eyeballing the render: page 5 carries 30 widgets, page 6 carries 69. A filler that assumes fields are spread evenly across a 6-page form, or front-loaded like most other forms in this registry, will misjudge this one.
Tested request
This exact shape ran against the live API during the recorded test (values here shortened to two fields; the test filled all 83 supported fields). With flatten=true, two identical runs produced byte-identical output — sha256 2bf6aa87075741910fbf1ff37396af06d98f1effb1f934de1a9e63c6ec158dd3.
curl -X POST https://pdfops.dev/api/fill-form \
-F "pdf=@state-ds-11.pdf" \
-F 'fields={"Address Line 2":"PDFops","List all other name you have used":"PDFops"}' \
-F "flatten=true" \
-o filled.pdf
Enumerate all 84 field names first with the inspector or POST /api/inspect.
Field schema
All 84 fields (name, type, maxLength, options)
| Field name | Type | maxLength | Options |
|---|---|---|---|
Address Line 2 | TextField | 36 | |
List all other name you have used | TextField | 13 | |
List all other names you have used | TextField | 13 | |
Hair Color | TextField | ||
Eye Color | TextField | ||
Emergency Contact Name | TextField | ||
Emergency Contact Address | TextField | ||
Emergency Contact City | TextField | ||
Emergency Contact Zip Code | TextField | 6 | |
Emergency Contact Phone | TextField | ||
Relationship to Applicant | TextField | ||
Countries to be visited | TextField | ||
Travel Return Date | TextField | ||
Your name as printed on your most recent U.S. passport book and/or passport card | TextField | ||
Selection | CheckBox | ||
Regular or Large Book | CheckBox | ||
Gender | CheckBox | ||
Parent 1 Gender | CheckBox | ||
Parent 2 US Citizen | CheckBox | ||
Parent 2 Gender | CheckBox | ||
Parent 1 US Citizen | CheckBox | ||
Spouse US Citizen | CheckBox | ||
Additional # | CheckBox | ||
Ever Applied or Issued | CheckBox | ||
Ever Married | CheckBox | ||
Applicant Place of Birth | TextField | 18 | |
Applicant Last Name | TextField | 21 | |
Applicant First Name | TextField | 17 | |
Applicant Middle Name | TextField | 16 | |
Applicant DOB M | TextField | 2 | |
Applicant DOB Y | TextField | 4 | |
Applicant SSN 1 | TextField | 3 | |
Applicant Address State | TextField | 2 | |
Applicant Address Zip Code | TextField | 6 | |
Applicant Address Country | TextField | 12 | |
Applicant Address Street | TextField | 36 | |
Applicant Phone 3 | TextField | 4 | |
Applicant SSN 3 | TextField | 4 | |
Applicant DOB D | TextField | 2 | |
Applicant SSN 2 | TextField | 2 | |
Applicant Phone 1 | TextField | 3 | |
Applicant Phone 2 | TextField | 3 | |
Emergency Contact Apartment/Unit | TextField | ||
Permanent Address City | TextField | ||
Permanent Address Street | TextField | ||
Permanent Address Apartment/Unit | TextField | ||
Permanent Address State | TextField | 2 | |
Permanent Address Zip Code | TextField | 6 | |
Applicant DOB 2 | TextField | ||
Name of Applicant 2 | TextField | ||
Parent 1 FM Name | TextField | ||
Parent 1 Last Name | TextField | ||
Parent 1 DOB | TextField | ||
Parent 2 FM Name | TextField | ||
Parent 2 Last Name | TextField | ||
Parent 2 DOB | TextField | ||
Full Name of Current Spouse or Most Recent Spouse (Last, first, Middle) | TextField | ||
Current Spouse Date of Birth | TextField | ||
Current Spouse Place of Birth | TextField | ||
Date of Marriage (mm/dd/yyyy) | TextField | ||
Widow/Divorce Date (mm/dd/yyyy) | TextField | ||
Applicant Additional Contact Phone Numbers | TextField | ||
Occupation | TextField | ||
Employer or School | TextField | ||
Height | TextField | ||
Travel Departure Date | TextField | ||
Clear | Button | ||
Circumstances of lost/stolen book/card | TextField | 250 | |
Alien Number | TextField | 9 | |
Applicant Email | TextField | ||
Applicant Address City | TextField | 14 | |
Name as printed on your most recent passport card | TextField | ||
Parent 2 Place of Birth | TextField | ||
Parent 1 Place of Birth | TextField | ||
Divorced | CheckBox | ||
Book Status Submitting | CheckBox | ||
Book Status Stolen | CheckBox | ||
Book Status Lost | CheckBox | ||
Book Status Possession | CheckBox | ||
Card Status Submitting | CheckBox | ||
Card Status Stolen | CheckBox | ||
Card Status Lost | CheckBox | ||
Card Status Possession | CheckBox | ||
Emergency Contact State | TextField | 2 |
Frequently asked
Can I fill the DS-11 programmatically?
Yes — the blank DS-11 04-2025 DS-11 is a fillable AcroForm with 84 fields. In our tested run, all 83 supported fields were filled through the pdfops API and verified by re-inspecting the output; upstream pdf-lib also round-trips it, and pypdf handled its text fields. Field names are listed in the schema on this page.
← All forms in the registry · Inspect your own PDF · Make a flat PDF fillable