Every link and how-to is in RESOURCES-AND-GUIDE.md.
42 free tools that run entirely in your browser, for developers and everyone else. Nothing you paste or open is uploaded.
An open-source alternative to upload-first sites like iLovePDF, TinyPNG, jwt.io and online converters. Use it online, or run your own copy with one command:
docker run -d -p 8080:8080 ghcr.io/ajithakdev/toolglassπ Try it live: toolglass.ajithakdev.com
Toolglass started because we were tired of ad-heavy websites for small jobs like decoding a JWT, testing a regex, or compressing a photo. Many of those sites send what you paste to their servers.
Every Toolglass tool runs in your browser. There is no backend, no cookies, and no analytics, so an API secret, a token, or a private photo never leaves your device. It installs as an app and keeps working offline after the first visit.
There are tools for everyday jobs (word counter, unit converter, image compressor, screen recorder, world clock, timers) and for developers (JSON, YAML, CSV, SQL, JWT, hashing, regex, subnets, an API client, and more).
| Category | Tools |
|---|---|
| Generators | β’ Password Generator (CSPRNG, rejection-sampled, entropy meter, bulk up to 100 with .txt download) β’ UUID (bulk v4 and time-sorted v7 per RFC 9562, plus an inspector that decodes version and v7 timestamp) β’ NanoID (URL-safe compact IDs) β’ Mongo ObjectId (24-char BSON IDs with embedded timestamp) β’ QR Code (Instant canvas/SVG generation & PNG download) |
| Encoders & Decoders | β’ Base64 (Unicode-safe encode/decode) β’ URL Encoder ( encodeURIComponent, with a batch mode for one URL per line)β’ JWT Decoder (Header/payload breakdown & expiration badges) |
| Converters & Formatters | β’ JSON Formatter (Beautify, minify, line and column errors, JSON Schema validation) β’ Color Converter (Hex β RGB β HSL with live alpha slider) β’ JSON to TypeScript (Generates interfaces or types automatically) |
| Security & Crypto | β’ Hash Generator (text or files: SHA-1, SHA-2, SHA-3, and Keccak-256) β’ JWT Signer (HS256, RS256, ES256 signing and key pair generation) |
| Everyday | β’ Word Counter (words, characters, reading time, any language) β’ Text Diff (line-by-line compare) β’ Notepad (autosaves in your browser) β’ Unit Converter (length, mass, temperature, storage, and more) β’ Percentage Calculator (percent of, percent change, add or remove) β’ World Clock (time zones side by side) β’ Stopwatch & Timer (laps, countdown, pomodoro) |
| Images & Media | β’ Image Compressor (WebP, JPEG, PNG, AVIF, resize, strips EXIF) β’ Screen Recorder (screen, window, or tab, optional mic) |
| Developer Utilities | β’ CSV β JSON β SQL β’ YAML β TOML β JSON β’ SQL Formatter β’ JSON to Zod β’ Number Base Converter (BigInt, bit toggles, two's complement) β’ HTML Entities β’ List Transformer (dedupe, sort, SQL IN, JSON array) β’ Unicode Inspector (finds zero-width and bidi characters) β’ Keycode Inspector β’ HTTP Status Codes β’ MIME Types (with magic-byte file check) β’ Subnet Calculator (IPv4 and IPv6) β’ User-Agent Parser (browser, OS, device, and bots) |
| API & Networking | β’ API Tester (In-browser HTTP client with cURL import and sanitized headers) |
| Utilities | β’ Timestamp Converter (Unix epoch β ISO 8601 β relative time & batch mode) β’ Regex Tester (Real-time regex engine with visual match highlights) β’ Markdown Preview (Live GitHub-flavored preview with DOMPurify sanitization) |
- Zero Network Calls: Apart from requests you send yourself in the API Tester, everything executes on the client thread using standard Web APIs (
crypto.subtle,crypto.getRandomValues,DOMParser). - Cryptographic Rigor: Randomness is strictly backed by CSPRNG with rejection sampling to eliminate modulo bias. We never use
Math.random(). - Instant Keyboard Navigation: Hit
βKorCtrl+Kanywhere to open the command palette and jump between tools without taking your hands off the keyboard. - Shareable State: Key tool configurations sync to URL query params (debounced) so you can bookmark or share exact settings with teammates.
- No Bloat: Every tool is code-split via dynamic
React.lazy()imports. Tools load on demand, so opening one tool does not download the others.
The image is the static site served by unprivileged nginx, about 60 MB, for amd64 and arm64 (Raspberry Pi works). It has no backend and makes no outgoing requests.
docker run -d --name toolglass -p 8080:8080 --restart unless-stopped ghcr.io/ajithakdev/toolglassOpen http://localhost:8080. With Docker Compose:
services:
toolglass:
image: ghcr.io/ajithakdev/toolglass:latest
ports:
- "8080:8080"
restart: unless-stoppedTags: latest, each release (1.3.0) and each minor line (1.3). To build it yourself: docker build -t toolglass .. Serve it at the root of a domain or subdomain (tools.example.com); a sub-path like example.com/tools/ is not supported yet. Installing it as an app and offline use need HTTPS, so put it behind your usual reverse proxy.
What it changes on your system: one container listening on the port you choose. It writes nothing to disk; tool data stays in each visitor's browser storage.
Toolglass uses standard modern frontend tooling (React 19, TypeScript, Vite, Vitest):
# Clone the repository
git clone https://github.com/ajithakdev/toolglass.git
cd toolglass
# Install dependencies
npm install
# Start local dev server with HMR
npm run devnpm run dev # Start local dev server at http://localhost:5173
npm run build # Strict type-check (tsc -b) followed by production Vite build
npm run preview # Preview production bundle locally
npm run lint # Run ESLint across code and tests
npm test # Run Vitest test suite once
npm run test:coverage # Generate test coverage reportsrc/
βββ components/ # Reusable glass UI widgets (Buttons, Inputs, CommandPalette)
βββ hooks/ # Custom hooks (useClipboard, useTheme, useUrlState)
βββ pages/
β βββ Landing.tsx # Main dashboard with categorized tool grid
β βββ ToolPage.tsx # Dynamic lazy loader with ErrorBoundary & Suspense
β βββ NotFound.tsx # Custom 404 page
βββ tools/ # Self-contained tool modules
β βββ catalog.ts # Tool metadata: titles, categories, keywords
β βββ registry.tsx # Icons and lazy-loaded components per tool
β βββ <tool-name>/
β βββ <Tool>Tool.tsx # Main React UI component
β βββ <tool>.ts # Pure business logic / calculations
β βββ <tool>.test.ts(x) # Unit and component tests
βββ App.tsx # Shell with global navigation and theme providers
We love contributions! Toolglass was built to make contributing new utilities frictionless:
- Adding a new tool usually takes one self-contained folder under
src/tools/, an entry insrc/tools/catalog.ts, and its icon and component insrc/tools/registry.tsx. - Prefer native browser APIs. A few tools load a small library on their own page only (QR codes, Markdown, YAML/TOML), and any new dependency needs maintainer approval.
- Check out our Contributing Guide for detailed step-by-step instructions.
- All contributors are expected to follow our Code of Conduct.
- See our Security Policy for responsible vulnerability disclosure.
Toolglass is free and stays free. If it saved you a trip to an ad-heavy converter site, a star, a follow on GitHub or a bug report helps a lot. If you'd like to send a small thank-you:
| From anywhere Card or PayPal on ko-fi.com/ajithakdev |
In India, over UPIajithakdev@sbiScan or paste into GPay, PhonePe or any UPI app |
Distributed under the MIT License. Built with β¦ by ajithakdev.