You are building a new web or mobile application and want to keep the people who already have an account on your WordPress site. NEWTIV Migrate exports, in one file:
Because the password hashes are included, your application can check a user’s usual password exactly like WordPress does (phpass for older accounts, bcrypt for WordPress 6.8 and later), then store it in its own format at the first sign-in. Nobody has to reset their password.
Security first
Large sites: users and content are read in batches of 200. From the command line: wp newtiv-migrate export site.ntvm (see wp help newtiv-migrate export).
This plugin does not connect to any external service.
NTVMIG1.kdf.alg = argon2id13, kdf.opslimit, kdf.memlimit, kdf.salt in base64) and the secretstream header (header, base64).Key: crypto_pwhash(32, passphrase, salt, opslimit, memlimit, ARGON2ID13). Decrypted, the frames form NDJSON, one record per line, each with a type: meta, user, term, post, media, comment, then end with the counts, to check that nothing is missing.
Any libsodium binding can read it: PyNaCl (Python), libsodium-wrappers (Node.js), ext-sodium (PHP).
User records carry pass and pass_format (wp-bcrypt, phpass, bcrypt, md5, argon2). Meta values are exported exactly as stored in WordPress (arrays stay PHP-serialized).