HackBrowserData
On this page

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 browser and profile columns 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 --zip archives are created as 0600, 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 as 0001-01-01T00:00:00Z.
  • --zip first writes the per-category files, then moves their contents into <dir>/<basename-of-dir>.zip and removes the loose files. With the default --dir results, the final path is results/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):

FormatExtensionNotes
json (default).jsonPretty-printed (2-space) array of objects, browser/profile first. &, <, and > are escaped as \u0026, \u003c, \u003e; any JSON parser decodes them back.
csv.csvA UTF-8 BOM is prepended for Excel; a header row, then one row per record.
cookie-editor.jsonThe 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-editor changes only the cookie category, and the file is still cookie.json. Other categories (password.json, history.json, …) are identical to the json format.

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

FieldTypeNotes
urlstring
usernamestring
passwordstringDecrypted; blank if the master key was unavailable.
created_attime
storestringlocal, or account for Chromium passwords saved to the browser account (Login Data For Account). A login kept in both is exported twice.
FieldTypeNotes
hoststring
pathstring
namestring
valuestringDecrypted cookie value.
is_securebool
is_http_onlybool
has_expirebool
is_persistentbool
expire_attime
created_attime
same_sitestringnone, lax, strict, or unspecified; empty for Safari.

bookmark

FieldTypeNotes
idint
namestring
typestringurl (Chromium, Firefox) or bookmark (Safari); folders are not exported as rows.
urlstring
folderstringName of the immediate parent folder.
created_attime

history

FieldTypeNotes
urlstring
titlestring
visit_countint
last_visittime

download

FieldTypeNotes
urlstring
target_pathstring
mime_typestring
total_bytesint
start_timetime
end_timetime

creditcard

FieldTypeNotes
guidstring
namestringName on card.
numberstringDecrypted card number.
exp_monthstring
exp_yearstring
nick_namestring
addressstring
cvcstringYandex only; empty for Chromium.
commentstringYandex only; empty for Chromium.

extension

FieldTypeNotes
namestring
idstring
descriptionstring
versionstring
homepage_urlstring
enabledbool

localstorage / sessionstorage

FieldTypeNotes
is_metabooltrue for a Chromium META: / METAACCESS: origin-metadata row rather than a value; always false for Firefox, Safari, and sessionstorage.
urlstringOrigin the entry belongs to.
keystring
valuestring

Examples

A json cookie file (cookie.json):

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):

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