User Rating 0.0
Total Usage 0 times

Drop your .1pif file here

or click to browse

Is this tool helpful?

Your feedback helps us improve.

About

1Password version 4 exports vault data exclusively in the .1pif format - a proprietary, newline-delimited JSON structure separated by *** delimiter lines. This format is not recognized by spreadsheet software, competing password managers, or auditing tools. Manually parsing it risks field misalignment, lost entries, or broken Unicode characters. This converter processes the raw .1pif structure entirely in your browser, extracting title, url, username, password, and notes fields into RFC 4180-compliant CSV. No data leaves your machine. The .1pif file is unencrypted plaintext, and so is the resulting CSV - handle both with appropriate caution.

The parser handles nested secureContents.fields[] arrays where 1Password stores form-fill data, as well as secureContents.URLs[] for site associations. Entries of type webforms.WebForm, passwords.Password, and securenotes.SecureNote are all supported. Malformed JSON lines are skipped with a count reported after conversion. Pro tip: if migrating to another password manager, verify the target application's CSV import column order before sharing the file.

1pif csv 1password converter password export file converter

Formulas

The .1pif format is not documented by AgileBits but follows a consistent structure. Each file is a sequence of JSON objects interleaved with separator lines.

parse(file) split(content, \n) filter(line ***...***) JSON.parse(line) extract(fields)

CSV encoding follows RFC 4180. Any field containing a comma, double quote, or newline is wrapped in double quotes. Existing double quotes within a field are escaped by doubling them:

escapeCSV(field) = " + replace(field, ", "") + "

Where field is any extracted string value. Timestamps stored as Unix epoch integers are converted via: date = new Date(timestamp × 1000).toISOString(). The multiplication by 1000 converts seconds to milliseconds as required by the JavaScript Date constructor.

Reference Data

1PIF Field PathCSV ColumnEntry TypesNotes
titleTitleAllDisplay name of the entry
locationURLWebForm, PasswordPrimary URL; fallback from secureContents.URLs[0].url
secureContents.fields[].value (designation: username)UsernameWebFormField with designation equal to "username"
secureContents.fields[].value (designation: password)PasswordWebFormField with designation equal to "password"
secureContents.passwordPasswordPasswordDirect password field for simple password entries
secureContents.notesPlainNotesAllPlain-text notes; newlines preserved inside quoted CSV field
typeNameTypeAllEntry category: webforms.WebForm, passwords.Password, etc.
uuidUUIDAllUnique identifier from 1Password
createdAtCreatedAllUnix timestamp, converted to ISO 8601 in CSV
updatedAtUpdatedAllUnix timestamp, converted to ISO 8601 in CSV
secureContents.sections[].fields[]Custom FieldsAllAdditional fields stored in sections; flattened as label: value pairs
openContents.tagsTagsAllComma-separated tag list
secureContents.URLs[]Additional URLsWebFormAll associated URLs joined by semicolons
***<UUID>***(Separator)N/ADelimiter line between entries; discarded during parsing
trashedTrashedAllBoolean; if true, entry was in Trash

Frequently Asked Questions

The converter handles all standard 1Password 4 entry types: webforms.WebForm (login credentials with form fields), passwords.Password (standalone passwords), securenotes.SecureNote (text notes), wallet.financial.CreditCard, identities.Identity, and wallet.computer.Router. Fields are extracted according to each type's structure within secureContents.
1Password stores additional data in secureContents.sections[].fields[] arrays. Each section field has a title (t) and value (v). The converter flattens these into the Custom Fields column as semicolon-separated "label: value" pairs. If you select only basic columns (Title, URL, Username, Password), these are omitted.
Lines that fail JSON.parse() are silently skipped and counted. After conversion, the tool reports the total number of entries successfully parsed and the number of skipped lines. Separator lines matching the ****** pattern are not counted as errors. Empty lines are also ignored.
The entire conversion runs client-side using the File API and JavaScript string processing. No data is transmitted to any server. The file content exists only in browser memory during processing and is released after the CSV blob is generated. However, both .1pif and CSV files are plaintext - store and transmit them using encrypted channels (e.g., encrypted ZIP, secure file sharing).
Most password managers (Bitwarden, LastPass, KeePass, Dashlane) accept CSV imports but require specific column orders. The default output order (Title, URL, Username, Password, Notes) matches Bitwarden's import format. For other managers, use the column selection feature to reorder or exclude columns as needed. Always verify with the target application's import documentation.
1Password stores createdAt and updatedAt as Unix epoch timestamps in seconds. The converter multiplies by 1000 to obtain milliseconds, constructs a JavaScript Date object, and outputs ISO 8601 format (e.g., 2023-07-15T08:30:00.000Z). If a timestamp field is missing or zero, the CSV cell is left empty.