A lightweight, browser-based toolkit for everyday encoding and formatting tasks. No build step for the app — open it locally and go.
Every feature here is something I use day to day at work. Before this app, I relied on a mix of pages from Google, tools coworkers shared, and shell commands — workable, but scattered.
I built this to pull those workflows into one place that runs locally in the browser. Nothing you paste is sent to a server. No ads, and no guessing whether a random online tool is logging your input.
| This app | What I used before |
|---|---|
| JSON | JSON Formatter |
| Base64 | base64decode.org |
| Checksum | Hash Forge — built by coworker Achintya |
| Unix Time | unixtimestamp.com |
| Key Gen | Shell one-liners and ad-hoc scripts |
| Tool | What it does |
|---|---|
| JSON | Format, minify, and validate JSON; optional single-line primitive arrays |
| Base64 | Encode / decode UTF-8 text with swap support |
| Checksum | Hash files or text — SHA-256/512/1 (Web Crypto), MD5, CRC32, XXH3 |
| Key Gen | Generate UUID v1/v4/v7, ULID, NanoID, or MongoDB ObjectID |
| Unix Time | Convert between Unix timestamps and human-readable dates; includes a native date/time picker |
Drag the tool pills to reorder them. Drop a file onto JSON or Base64 input panels to load its contents.
Everything runs on your machine — nothing is deployed or exposed to the internet.
The same static app can be served with three small implementations so you can use whatever runtime you already have installed — no need to install Python just for this if you have Go or Node, and vice versa.
| Runtime | Command | Notes |
|---|---|---|
| Python 3 | python3 serve.py |
No extra deps |
| Go 1.21+ | go run serve.go |
From repo root |
| Node / TS | npx tsx serve.ts |
Or node --experimental-strip-types serve.ts on Node 22+ |
Port — set via the PORT environment variable (default 8444):
PORT=3000 python3 serve.py
PORT=3000 go run serve.go
PORT=3000 npx tsx serve.tsOpen the URL printed in the terminal. All servers bind to 127.0.0.1 only, so nothing is reachable from other devices on your network.
Press Ctrl+C to stop.
Alternative — any static server
PORT=8080 python3 -m http.server 8080 --bind 127.0.0.1ES modules require a local server — opening
index.htmldirectly from the filesystem won't load the JS modules.
encoder-decoder/
├── index.html # Page structure
├── css/styles.css # All styles
├── js/
│ ├── main.js # Entry point
│ ├── config.js # Shared state & tool options
│ ├── storage.js # localStorage persistence
│ ├── utils.js # Clipboard, formatting helpers
│ ├── ui.js # Pill bar & option toggles
│ ├── json.js, base64.js, checksum.js, keygen.js, utime.js
│ └── hash/ # crc32, md5, xxh3
├── serve.py # Local server (Python)
├── serve.go # Local server (Go)
├── serve.ts # Local server (TypeScript / Node)
├── AGENTS.md # Guide for coding agents
├── CLAUDE.md # Short agent entry point
└── LICENSE
- JSON —
Ctrl+Enter/Cmd+Enterto format
See LICENSE.
