⚡ Cloudflare Edge + D1 Database

Two-Factor Authentication
With Global Database

Generate TOTP codes instantly. Save secrets linked to your email in Cloudflare D1. Search by email anytime to get all your active 2FA codes on the fly.

D1 Cloud DB
30s Refresh
6 Digits
⚡ Generator & Lookup

Generate or Retrieve 2FA Codes

Search by email from your Cloudflare D1 Vault, enter a secret, or scan QR codes

📧 Email Lookup via Cloudflare D1

Instant

Enter any email or username saved in your Cloudflare D1 database. The system retrieves all matching secrets and generates live 2FA codes synchronously.

Search for accounts stored in your Cloudflare D1 database

🔑 Secret Key Method

Easy

Enter your 2FA secret key. Optionally enter an email and issuer to automatically save it into your Cloudflare D1 database.

Your 2FA secret key (Base32 encoded)

📷 QR Code Scanner

Easy

Upload a QR code image to automatically extract the secret, issuer, and email, and generate the live code.

📷

Drag & drop QR code image here

or click to browse

📱 Google Authenticator Export

Advanced

Import multiple accounts from Google Authenticator export QR or URL. Extract all accounts and save them directly to your Cloudflare D1 Vault!

📱

Drag & drop Google Authenticator export QR here

or click to browse
Google Authenticator export URL

💾 Base64 Image Data

Intermediate

Paste Base64 encoded QR code image data.

Your 2FA Code
30
------
🗄️ Cloudflare D1 Vault

Stored Accounts & Live Codes

Browse all your accounts saved in Cloudflare D1 with synchronized live OTP generation

Click 'Refresh Vault' or save an account to view stored accounts.

🔧 Edge REST API

Cloudflare Edge API Documentation

Integrate Miro Cloudflare into external cURL scripts, bots, and automations

GET /api?action=getcode&email={email}

Look up account(s) by email in D1 and return live OTPs (returns all matching services)

cURL Example
curl "https://YOUR-SUBDOMAIN.pages.dev/api?action=getcode&email=user@gmail.com"
Response
{
  "success": true,
  "count": 2,
  "email": "user@gmail.com",
  "otp": "481920",
  "remaining": 25,
  "accounts": [
    { "issuer": "Google", "secret": "JBSWY3...", "otp": "481920" },
    { "issuer": "GitHub", "secret": "HXDMVJ...", "otp": "912304" }
  ]
}
POST /api?action=getcode

Generate code from secret key directly

cURL Example
curl -X POST "https://YOUR-SUBDOMAIN.pages.dev/api?action=getcode" \
  -H "Content-Type: application/json" \
  -d '{"secret": "JBSWY3DPEHPK3PXP"}'
Response
{
  "success": true,
  "secret": "JBSWY3DPEHPK3PXP",
  "otp": "123456",
  "remaining": 25
}
POST /api?action=save

Save / Upsert an account into Cloudflare D1

cURL Example
curl -X POST "https://YOUR-SUBDOMAIN.pages.dev/api?action=save" \
  -H "Content-Type: application/json" \
  -d '{"email": "user@gmail.com", "issuer": "Binance", "secret": "JBSWY3DPEHPK3PXP"}'
Response
{
  "success": true,
  "message": "Account saved successfully"
}
GET /api?action=vault

Retrieve all stored accounts with live OTP codes

cURL Example
curl "https://YOUR-SUBDOMAIN.pages.dev/api?action=vault"
Response
{
  "success": true,
  "count": 5,
  "accounts": [...]
}