BrowsersIntermediateForm and autofill data

Chromium Web Data (autofill)

Chromium autofill store: form field names and typed values with first and last use, plus saved address and card metadata in Web Data.

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

FormatSQLite 3 database. Autocomplete and address dates are stored as time_t seconds since 1970-01-01 UTC, unlike most other Chromium databases.
Applies toChromium 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

FieldWhat 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_cardsServer-side cards represented locally in masked form.

05Timestamps

FieldEncodingNote
autofill.date_created, autofill.date_last_usedtime_t: int64 seconds since 1970-01-01 UTCRead with base::Time::FromTimeT in source; do not apply the 1601 µs conversion.
addresses.use_date, addresses.date_modifiedtime_t: int64 seconds since 1970-01-01 UTCWritten with ToTimeT().

Decode raw values with the Timestamp decoder and convert local wall-clock times with the Local time to UTC.

06Examination workflow

  1. Copy Web Data and any companion journal or WAL file; list the tables present to identify the schema generation.
  2. Convert date_created and date_last_used as Unix seconds and sort entries by last use.
  3. Group autofill rows by name to see which field labels (for example e-mail or search boxes) received which values.
  4. 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

  1. Chromium source — components/autofill/core/browser/webdata/autocomplete/autocomplete_table.cc The Chromium Authors (GitHub mirror) · checked 2026-10-14
  2. Chromium source — components/autofill/core/browser/webdata/addresses/address_autofill_table.cc The Chromium Authors (GitHub mirror) · checked 2026-10-14
  3. Chromium source — components/autofill/core/browser/webdata/payments/payments_autofill_table.cc The Chromium Authors (GitHub mirror) · checked 2026-10-14
  4. Chromium source — webdata_constants.cc (Web Data file names) The Chromium Authors (GitHub mirror) · checked 2026-10-14
  5. Chromium source — docs/user_data_dir.md (User Data Directory) The Chromium Authors (GitHub mirror) · checked 2026-10-14