01Location
- <User Data>/<Profile>/Web Data
- <User Data>/<Profile>/Account Web Data
02Questions it answers
- What values did the user type into form fields with a given name, and how many times?
- When was a value first and last used?
- Which postal addresses or payment cards were saved for autofill, and when were they last used or modified?
03Format and versions
| Format | SQLite 3 database. Autocomplete and address dates are stored as time_t seconds since 1970-01-01 UTC, unlike most other Chromium databases. |
|---|---|
| Applies to | Chromium main branch as read on 2026-10-14. Address data moved from the legacy autofill_profiles* tables to contact_info*/local_addresses* and then to addresses/address_type_tokens. |
04Key fields
| Field | What it tells you |
|---|---|
| autofill (name, value, value_lower, date_created, date_last_used, count) | Autocomplete entries keyed by field name and value; count is the number of uses. |
| addresses (guid, record_type, use_count, use_date, date_modified, language_code, label, initial_creator_id) | Saved addresses; the individual address components are in address_type_tokens (guid, type, value). |
| credit_cards (guid, name_on_card, expiration_month, expiration_year, card_number_encrypted, use_count, use_date, date_modified, nickname) | Locally saved cards. The card number is stored encrypted; this record does not cover decryption. |
| masked_credit_cards | Server-side cards represented locally in masked form. |
05Timestamps
| Field | Encoding | Note |
|---|---|---|
| autofill.date_created, autofill.date_last_used | time_t: int64 seconds since 1970-01-01 UTC | Read with base::Time::FromTimeT in source; do not apply the 1601 µs conversion. |
| addresses.use_date, addresses.date_modified | time_t: int64 seconds since 1970-01-01 UTC | Written with ToTimeT(). |
Decode raw values with the Timestamp decoder and convert local wall-clock times with the Local time to UTC.
06Examination workflow
- Copy Web Data and any companion journal or WAL file; list the tables present to identify the schema generation.
- Convert date_created and date_last_used as Unix seconds and sort entries by last use.
- Group autofill rows by name to see which field labels (for example e-mail or search boxes) received which values.
- Correlate last-use times with History visits around the same moment to identify the site.
07Interpretation pitfalls
- The autofill table stores no URL; linking a value to a site requires correlation with other artifacts.
- Only first and last use are kept; intermediate uses are reflected only in count.
- Clearing autofill data for a time range deletes or rewrites matching rows, so missing entries do not show that nothing was typed.
09Sources
- Chromium source — components/autofill/core/browser/webdata/autocomplete/autocomplete_table.cc The Chromium Authors (GitHub mirror) · checked 2026-10-14
- Chromium source — components/autofill/core/browser/webdata/addresses/address_autofill_table.cc The Chromium Authors (GitHub mirror) · checked 2026-10-14
- Chromium source — components/autofill/core/browser/webdata/payments/payments_autofill_table.cc The Chromium Authors (GitHub mirror) · checked 2026-10-14
- Chromium source — webdata_constants.cc (Web Data file names) The Chromium Authors (GitHub mirror) · checked 2026-10-14
- Chromium source — docs/user_data_dir.md (User Data Directory) The Chromium Authors (GitHub mirror) · checked 2026-10-14