Output & Data Formats
The output file model and the exact JSON/CSV/cookie-editor schema for every data category.
dump and restore write results as one file per non-empty category into the output directory (results by default), named <category>.<ext>. This page documents the file model and the exact field schema for each category and format.
The file model
- One file per category. Each non-empty category becomes its own file:
password.json,cookie.json,history.json, … Empty categories produce no file. - Aggregated across profiles. Every profile’s rows for a category are merged into that category’s single file, with leading
browserandprofilecolumns identifying each row’s origin. - Ordered within each profile. Passwords, cookies, and bookmarks are newest first, downloads by newest start time, and history by most visits; other categories keep the browser’s own order. Rows from different profiles are not interleaved.
- Owner-only permissions. Output directories are requested as
0750; category files and--ziparchives are created as0600, subject to platform filesystem behavior. - Timestamps are UTC in RFC 3339 (for example
2026-01-31T14:05:00Z; JSON keeps sub-second digits when the browser stores them). CSV writes a missing time as an empty cell; JSON writes it as0001-01-01T00:00:00Z. --zipfirst writes the per-category files, then moves their contents into<dir>/<basename-of-dir>.zipand removes the loose files. With the default--dir results, the final path isresults/results.zip.
localstorage and sessionstorage share one schema (below) but are written as two separate files, localstorage.json and sessionstorage.json.
Formats
Three formats are available via --format (default json):
| Format | Extension | Notes |
|---|---|---|
json (default) | .json | Pretty-printed (2-space) array of objects, browser/profile first. &, <, and > are escaped as \u0026, \u003c, \u003e; any JSON parser decodes them back. |
csv | .csv | A UTF-8 BOM is prepended for Excel; a header row, then one row per record. |
cookie-editor | .json | The cookie category is reshaped to the Cookie-Editor(opens in a new tab) extension’s import schema; every other category falls back to plain JSON. |
Note
cookie-editorchanges only the cookie category, and the file is stillcookie.json. Other categories (password.json,history.json, …) are identical to thejsonformat.
Category schemas
Every json object and csv row begins with browser and profile, followed by the category’s own fields below. browser is the human-readable display name, such as Chrome or Microsoft Edge, rather than the CLI key.
password
| Field | Type | Notes |
|---|---|---|
url | string | |
username | string | |
password | string | Decrypted; blank if the master key was unavailable. |
created_at | time | |
store | string | local, or account for Chromium passwords saved to the browser account (Login Data For Account). A login kept in both is exported twice. |
cookie
| Field | Type | Notes |
|---|---|---|
host | string | |
path | string | |
name | string | |
value | string | Decrypted cookie value. |
is_secure | bool | |
is_http_only | bool | |
has_expire | bool | |
is_persistent | bool | |
expire_at | time | |
created_at | time | |
same_site | string | none, lax, strict, or unspecified; empty for Safari. |
bookmark
| Field | Type | Notes |
|---|---|---|
id | int | |
name | string | |
type | string | url (Chromium, Firefox) or bookmark (Safari); folders are not exported as rows. |
url | string | |
folder | string | Name of the immediate parent folder. |
created_at | time |
history
| Field | Type | Notes |
|---|---|---|
url | string | |
title | string | |
visit_count | int | |
last_visit | time |
download
| Field | Type | Notes |
|---|---|---|
url | string | |
target_path | string | |
mime_type | string | |
total_bytes | int | |
start_time | time | |
end_time | time |
creditcard
| Field | Type | Notes |
|---|---|---|
guid | string | |
name | string | Name on card. |
number | string | Decrypted card number. |
exp_month | string | |
exp_year | string | |
nick_name | string | |
address | string | |
cvc | string | Yandex only; empty for Chromium. |
comment | string | Yandex only; empty for Chromium. |
extension
| Field | Type | Notes |
|---|---|---|
name | string | |
id | string | |
description | string | |
version | string | |
homepage_url | string | |
enabled | bool |
localstorage / sessionstorage
| Field | Type | Notes |
|---|---|---|
is_meta | bool | true for a Chromium META: / METAACCESS: origin-metadata row rather than a value; always false for Firefox, Safari, and sessionstorage. |
url | string | Origin the entry belongs to. |
key | string | |
value | string |
Examples
A json cookie file (cookie.json):
[
{
"browser": "Chrome",
"profile": "Default",
"host": "example.com",
"path": "/",
"name": "session",
"value": "abc123",
"is_secure": true,
"is_http_only": true,
"has_expire": true,
"is_persistent": true,
"expire_at": "2026-06-01T00:00:00Z",
"created_at": "2026-01-15T09:30:00Z",
"same_site": "lax"
}
]The same data with --format cookie-editor (still written to cookie.json):
[
{
"domain": "example.com",
"expirationDate": 1780272000,
"httpOnly": true,
"name": "session",
"path": "/",
"secure": true,
"value": "abc123",
"sameSite": "lax",
"session": false,
"hostOnly": true
}
]The Cookie-Editor schema keeps domain, expirationDate (Unix seconds), httpOnly, name, path, secure, and value, and adds sameSite (no_restriction, lax, strict, or null when unspecified), session, and hostOnly (true unless the domain starts with a dot). A session cookie has no expirationDate and session: true. Unlike plain JSON, this file does not escape &, <, and >.
Handle exports safely
Every format can contain credentials, authenticated sessions, personal history, and local filesystem paths. Store output on encrypted media, restrict access to the authorized engagement team, never attach real exports to public issues, and delete them according to your retention policy. A ZIP is packaging, not encryption.
See also
dump·restore— the commands that produce these files.- How It Works — where export fits in the pipeline.