<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[HowTo: migrating from Two Factor Authenticator browser extension to 2FAuth]]></title><description><![CDATA[<p dir="auto">I have been using the <a href="https://addons.mozilla.org/en-US/firefox/addon/two-factor-authenticator/" target="_blank" rel="noopener noreferrer nofollow ugc">Two Factor Authenticator</a> browser extension for a while now. However, it's not been <a href="https://github.com/Rayquaza01/authenticator" target="_blank" rel="noopener noreferrer nofollow ugc">updated</a> for a while. I also have to keep reminding myself to keep a copy of all the 2fa and also it's not really safe to have 2fa in a browser extension....</p>
<p dir="auto">It's straightforward to migrate to the 2FAuth:</p>
<ul>
<li>First, export all the keys. Firefox -&gt; Extension Preferences -&gt; Export . This gives a json file.</li>
</ul>
<p dir="auto"><img src="/assets/uploads/files/1717060317960-d6d290b7-937c-46d1-9551-7fcd302ffe30-image.png" alt="d6d290b7-937c-46d1-9551-7fcd302ffe30-image.png" class=" img-fluid img-markdown" /></p>
<ul>
<li>There is UI in 2FAuth to import keys. However, this wants a line separated <a href="https://github.com/google/google-authenticator/wiki/Key-Uri-Format" target="_blank" rel="noopener noreferrer nofollow ugc">otpuri</a> . Syntax for this is <code>otpauth://TYPE/LABEL?PARAMETERS</code> . Example <code>otpauth://totp/Example:alice@google.com?secret=JBSWY3DPEHPK3PXP&amp;issuer=Example</code> . Maybe , chatgpt helps with the conversion here <img src="https://forum.cloudron.io/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=d69db52af35" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":-)" alt="🙂" /> But , I had this via node REPL:</li>
</ul>
<pre><code>$ node
Welcome to Node.js v20.12.2.
Type ".help" for more information.
&gt; data = JSON.parse(fs.readFileSync('/home/girish/Downloads/totp.json', 'utf8'))
&gt; data.otp_list.forEach(otp =&gt; console.log(`otpauth://totp/${encodeURIComponent(otp.name)}?secret=${otp.key}&amp;issuer=${encodeURIComponent(otp.name)}`))
</code></pre>
<ul>
<li>
<p dir="auto">The above will generate like this<br />
<img src="/assets/uploads/files/1717060568830-be36c9b8-f4ea-4e82-86b3-402b1c8e55eb-image.png" alt="be36c9b8-f4ea-4e82-86b3-402b1c8e55eb-image.png" class=" img-fluid img-markdown" /></p>
</li>
<li>
<p dir="auto">Copy/paste the output into the Import UI of 2FAuth. That's it!</p>
</li>
</ul>
<p dir="auto"><img src="/assets/uploads/files/1717060748353-dec93cfa-29f4-4164-8ce3-6a1c73e8b1ab-image.png" alt="dec93cfa-29f4-4164-8ce3-6a1c73e8b1ab-image.png" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.cloudron.io/topic/11831/howto-migrating-from-two-factor-authenticator-browser-extension-to-2fauth</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Apr 2026 02:32:06 GMT</lastBuildDate><atom:link href="https://forum.cloudron.io/topic/11831.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 May 2024 09:19:10 GMT</pubDate><ttl>60</ttl></channel></rss>