Directory / plugin

Fruti Serialized Data Audit

v1.0.0 · by frutilabs

Audit SQL dumps for broken PHP serialized values before import. Reports findings only, never changes data.

View on WordPress.org

About this plugin

A plain find-and-replace on a WordPress database, or a hand-edited export, changes the text inside
serialized values but not the byte-length prefix PHP stored with every string. The import then
reports success, and widgets, theme settings, page-builder layouts or plugin options quietly
disappear. This plugin reads a .sql dump, parses every serialized payload it finds, and lists the
ones that are structurally broken, with the line number, the table it belongs to, the reason and a
short snippet.

Detected structural problems:

  • string_length_mismatch – a string’s declared byte length no longer matches its content, the
    classic result of a naive search-and-replace or of a UTF-8/latin1 conversion.
  • count_mismatch – an array or object declares more items than it contains.
  • truncated – the payload ends in the middle of a structure.
  • invalid_type – a payload starts but the expected next token is not a valid serialized value.

Supported serialization tokens: N, b, i, d, s, a, O, r, R, E and C, in both
plain and mysqldump-escaped form. C: payloads are treated as opaque bytes and are never parsed
recursively.

The plugin never modifies your data. It does not import the dump, does not connect to the database,
does not execute SQL and does not write a repaired file. It only reports.

How to use it

  1. Export the database you are about to import: mysqldump -u user -p dbname > dump.sql.
  2. Open Tools -> Fruti Serialized Data Audit, choose that .sql file and press Run Audit.
  3. Read the summary and the list of broken payloads: status, table, line, reason and snippet.
  4. Fix the cause with wp search-replace or a serialization-aware replacement, export a fresh dump
    and audit it again.

Privacy

The uploaded SQL file is processed locally on your own WordPress server. It is analysed in PHP’s
upload temporary file: it is not copied into the media library, not placed in wp-content/uploads,
not saved in the plugin directory, not stored in the database and not written to logs or cache. The
plugin makes no network requests, sends no telemetry and does not transmit the dump anywhere.

Support

Questions, bug reports and support: [email protected]

Plugin tags