Free, fast, privacy-focused developer tools that run in your browser.
Live: good.tools
- Private. Most tools run entirely client-side, many of them with WebAssembly (Wireshark, FFmpeg, DuckDB, pandoc, libvips, qpdf, Tesseract, ExifTool, YARA-X, OpenCascade, ONNX Runtime with Whisper and Magika, zxing, mesh repair). Tools that call a server are labelled Online.
- Fast. Each tool is code-split and loads only when you open it. Press ⌘K / Ctrl K or / to jump to any tool.
- Works offline. Install it as an app; the local tools keep working without a connection.
- Self-hostable. One Docker image, configured at runtime.
| Category | Tools |
|---|---|
| Development | Diff Checker, JSON Formatter, JSON Escape, XML Formatter, YAML / JSON / TOML Converter, Markdown Notes, Regex Tester, Cron Expression, Timestamp Converter, UUID / ULID Generator, CSV / Excel ↔ JSON, Code Beautifier / Minifier, Color Picker & Converter, SQL Query (DuckDB), MCP Browser, Docker Browser |
| Encoding | Base64, URL Encoder/Decoder, Protobuf Decoder, QR Code & Barcode |
| Text | Word Counter, Case Converter, Lorem Ipsum Generator, Document Converter (pandoc) |
| Security | JWT Decoder, Certificate Decoder, Java Object Deserializer, Hash Calculator, Password Generator, CSR & Certificate Toolkit, File Identifier (Magika), Metadata Viewer & Stripper (ExifTool), YARA Rule Tester (YARA-X), Binary Explorer |
| Network | Packet Dissector (Wireshark), DNS Lookup, WHOIS, What's My IP, IP to Location, HTTP & TLS Inspector, Email Security Checker |
| Image | Image Converter, Remove Background, Metadata Viewer & Stripper, Color Picker & Converter |
| Media | Video & Audio Converter (FFmpeg), Speech to Text (Whisper) |
| 3D & CAD | STL Repair, STEP / IGES Viewer (OpenCascade) |
| Images to PDF, Merge PDF, Organize PDF, Compress PDF, Edit PDF, Sign PDF, PDF to Images, PDF to Word, Word to PDF, PDF to Text (OCR), Protect / Unlock PDF |
bun install
bun run dev # http://localhost:3000
bun run check # type-check, Biome lint + format, testsStack: React 19, React Router, Vite, Tailwind CSS 4, TanStack Query, zustand, Biome, Vitest; a Bun workspaces + Turborepo monorepo.
| Path | What |
|---|---|
apps/web |
the good.tools web app |
packages/jdserialize, packages/protobuf-decoder |
npm libraries behind the Java and Protobuf decoders |
packages/meshrepair |
STL mesh repair compiled to WebAssembly (C++/VCGlib) |
tools/wasmpatch |
pinned upstream sources + patches for WebAssembly builds |
To add a tool, read CONTRIBUTING.md. It covers the project layout, the tool registry, the UI guidelines and the PR process.
Every release is published to the GitHub Container Registry for linux/amd64 and linux/arm64:
docker run -p 3000:80 ghcr.io/good-tools/good.tools:latestIn production, pin a release version tag (ghcr.io/good-tools/good.tools:<version>) rather than latest; see Releases. To build it yourself instead, run docker build -f apps/web/Dockerfile -t good-tools . from the repository root.
The image is a single Go binary (services/api) that serves the web app and the API behind the online tools (DNS, WHOIS, IP location, Docker Browser). It sends no telemetry. The online tools need outbound internet access, and IP location downloads a geolocation database at startup. For an offline instance, set DISABLE_ONLINE_TOOLS=true.
| Variable | Default | Description |
|---|---|---|
PORT |
80 |
Listen port (use a port above 1024 outside Docker; the image runs as nonroot) |
DISABLE_ONLINE_TOOLS |
false |
Hide the online tools and turn the API off |
API_URL |
/api |
Where the web app calls the API, e.g. https://api.good.tools |
ENABLE_TELEMETRY |
false |
Enable Google Analytics |
GA_TRACKING_ID |
"" |
GA4 tracking ID |
The API has more settings, such as rate limits, the image size limit and a MaxMind key; see services/api. Mount a volume at /data to keep its caches across restarts.
If you serve dist/ from somewhere else, send Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp. Multi-threaded WebAssembly (the image and video converters, among others) needs them.
Contributions are welcome, whether a bug report, a new tool or a fix. Start with CONTRIBUTING.md.
MIT. Some bundled WebAssembly components keep their own licences: the FFmpeg core and Wireshark are GPL-2.0-or-later, and libvips is LGPL-2.1-or-later. Each tool's page lists the libraries it uses.
