TOTP Backup Translator

Convert one-time-password backups between GNOME Authenticator and Proton Authenticator. Everything runs in this page; nothing is uploaded.

Source paste JSON or load a file
Result
How the conversion works

GNOME entries carry the fields directly (secret, label, period, digits, algorithm, tags). Proton entries wrap an otpauth:// URI inside content.uri, so the converter parses and rebuilds those URIs.

Secrets are normalized on both sides: Instagram-style + chunk separators (as they appear in Proton URIs like 7NR2+QTUT+EZNC…) are stripped, since base32 has no plus sign and authenticators ignore it. Issuer names become GNOME tags going one way, and the issuer URI parameter going the other. A + in any other URI parameter is treated as a space, per form encoding.

HOTP entries are converted with their counter. Proton entry IDs are regenerated as fresh UUIDs; note, thumbnail and last_used get default values, since the formats don't share them.