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. - Loose-file permissions. Output directories are requested as
0750and category files as0600, subject to platform filesystem behavior. ZIP files are currently created with the process umask rather than an explicit0600; check and restrict their permissions before transfer. - Timestamps use RFC 3339 when present (for example
2026-01-31T14:05:00Z). CSV writes a zero time as an empty cell; JSON preserves Go’s zero timestamp 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), HTML escaping off so URLs stay readable. An array of objects, browser/profile first. |
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
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 |
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 |
bookmark
| Field | Type | Notes |
|---|---|---|
id | int | |
name | string | |
type | string | e.g. url, folder. |
url | string | |
folder | string | Parent folder path. |
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 | Marks a WebKit metadata row rather than a value. |
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"
}
]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"
}
]The Cookie-Editor schema keeps only domain, expirationDate (Unix seconds, 0 when the cookie has no expiry), httpOnly, name, path, secure, and value.
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.