🌐 Language / Ngôn ngữ: English | Tiếng Việt
A TOTP one-time password (OTP) generator running on Cloudflare Workers with a browser-based UI.
- Multi-language UI (English, Japanese, Korean, German, Thai, Chinese, Vietnamese) — locale files loaded on demand
- Generate TOTP codes from any Base32 secret key
- Auto-refreshes every 30 seconds with a live countdown timer
- Auto-stops after 5 minutes of inactivity with an in-app alert; click Generate to restart
- Pause / resume the countdown timer with a dedicated button
- Copy OTP to clipboard with one click
- Secret key input with show/hide toggle
- Dark / light theme toggle (persists across sessions via
localStorage) frame-ancestors 'none'enforced via HTTP response header for full browser support- No build tools required — plain HTML, Tailwind CDN, and Vanilla JS
- Node.js
- Wrangler CLI:
npm install -g wrangler
wrangler devOpen http://localhost:8787 in your browser.
# Deploy to default environment
wrangler deploy
# Deploy to production environment
wrangler deploy --env production├── index.js # Cloudflare Worker entry point
├── wrangler.jsonc # Wrangler configuration
├── assets/
│ ├── index.html # Main app UI
│ ├── 404.html # 404 error page
│ ├── app.js # Frontend JavaScript
│ ├── tailwind-config.js
│ ├── favicon.ico
│ ├── favicon.png
│ └── locales/ # i18n locale files (loaded on demand)
│ ├── en.json
│ ├── ja.json
│ ├── ko.json
│ ├── de.json
│ ├── th.json
│ ├── zh.json
│ └── vi.json
| Layer | Technology |
|---|---|
| Runtime | Cloudflare Workers |
| OTP Library | otplib v12 (browser preset via unpkg CDN) |
| Styling | Tailwind CSS v3 (CDN, no build step) |
| Frontend | Vanilla JavaScript (ES6+) |
| i18n | Custom lazy-load engine — locale JSON files fetched on demand |
| Storage | localStorage (theme preference, language preference) |
| Build tools | None |
- OTP generation powered by otplib
- Deployed on Cloudflare Workers