A collection of everyday developer utilities as a DBX plugin — runs offline in a sandbox with zero network calls. 48 developer utilities in under 200KB: an all-in-one toolkit covering crypto & security, encoding, text & regex, time & Cron, network & DevOps, and frontend assets—built for everyday development needs. Pure frontend, universal package, no native sidecar.
- Password Generator —
crypto.getRandomValues+ rejection sampling (no modulo bias), charset rules, batch generation, entropy meter - QR Code Generator —
qrcode-generator, adjustable EC level / module size / quiet zone, optional center logo (auto-suggests EC H), SVG & PNG export - Barcode Generator — hand-rolled encoders for CODE-128 (auto A/B/C set switching), CODE-39, EAN-13/8, UPC-A, ITF/ITF-14, Codabar; auto check digits, adjustable bar width / height / caption, SVG & PNG export
- Hash Generator — MD5 + SHA-1/256/384/512 + CRC32 digests for text and files; optional key switches to HMAC-SHA digests
- ID Generator — UUID v4, NanoID and ULID in bulk, plus deterministic name-based UUID v5/v3 with predefined namespaces; uppercase / hyphen options for UUID
- CN ID Card — generate valid-format Chinese ID numbers by region / age / gender, and validate & parse existing numbers (incl. 15-digit legacy → 18-digit upgrade)
- Nginx Formatter — normalize whitespace, re-indent by braces (vendored
nginxfmtport), plus syntax highlighting for directives, strings and variables - XML Formatter — pretty-print with DOMParser validation; comments, CDATA and DOCTYPE handled; syntax-highlighted
- YAML Formatter — re-indent while preserving comments, block scalars and anchors verbatim; warns on tab indentation
- Base64 / Base32 / Base58 / Hex — UTF-8 safe multi-alphabet encode/decode, URL-safe variant
- JWT Parser / Generator — decodes header/payload, claims table with exp/nbf validity badges, HS256/384/512 signature verification, plus JWT signing (payload JSON + secret → token)
- RMB Uppercase — numeric amount to Chinese RMB uppercase (correct 零 folding, negatives, up to 兆)
- URL Encoder / Decoder —
encodeURIComponent/encodeURImodes, form+toggle, query parameter breakdown - Image ⇄ Base64 — image to Base64 (drop / paste / pick, optional data-URI prefix, size inflation shown); Base64 to image with magic-byte sniffing, preview & export
- Time & Date Converter — Unix timestamps auto-detected across s/ms/µs/ns (decimals treated as seconds), date strings parsed both ways; shows Unix s/ms, local & UTC, ISO 8601, day of week, day of year, ISO week, leap year, timezone offset, relative time; duration ⇄ ms conversion; timezone conversion across all IANA zones or bare offsets like
+8 - File Size Converter — bare bytes or
"1.5 GB"/"2 GiB"/"10M"style input parsed to bytes; best-fit unit plus full SI (1000) and IEC (1024) tables - Word Counter — words (Latin tokens + per-CJK-char), characters (with/without spaces), letters, digits, punctuation, whitespace, lines, paragraphs, sentences, UTF-8 byte size, reading time
- Escape / Unescape — HTML/XML entities, JavaScript string escapes, regex metacharacters, CSV field quoting, POSIX shell single-quoting
- Lorem Ipsum — dummy text at an exact length for input-boundary testing: characters or UTF-8 bytes, lorem / repeating pattern / random alphanumeric / random Chinese modes, common length presets
- JSON Formatter — validate with precise error line/column/snippet (own parser, since JSC reports no position), pretty-print at 2/4/tab or minify, key sorting, depth/key/item stats, .json export
- HTTP Helper — raw headers ⇄ JSON (request/status lines tolerated, repeated headers kept as arrays), plus a searchable reference for status codes and common headers
- URL breakdown — the URL tool also splits a parseable URL into protocol / credentials / host / port / origin / path / query / fragment, each field individually copyable
- Text Diff — LCS-based diff between two texts, line or character granularity, +/- stats, unified patch copy
- Case & Slug Converter — camelCase / PascalCase / snake_case / kebab-case / CONSTANT_CASE / Title Case / dot.case and URL slugs (diacritics stripped, CJK kept), all at once
- Number Base — BigInt-powered binary/octal/decimal/hex conversion (
0x/0o/0bauto-detected), ASCII interpretation of the value - Mojibake Fixer — repairs text garbled by the wrong charset (UTF-8 mistaken as Windows-1252/GBK/Big5/Shift_JIS), ranked candidates
- Invisible Characters — visualizes zero-width chars, BOM, NBSP, bidi controls and friends, with a code-point/count summary and one-click cleanup
- Date Calculator — difference between two dates (days/weeks/months/years, working days, h/m/s) and date ± N days/weeks/months
- Color Converter & Contrast — HEX/RGB/HSL/HSV/CMYK conversion with swatch + color picker + screen eyedropper, harmony palettes (complementary/analogous/triadic/split/tetradic/shades) with click-to-copy swatches, WCAG contrast ratio vs white, black or a custom background (AA/AAA badges)
- CSS Generator — visual gradient (linear/radial/conic, multi-stop) and box-shadow builders with live preview and copyable CSS
- Line Operations — trim, remove empty, dedupe, sort A→Z/Z→A, add line numbers, reverse — combined in a fixed pipeline
- AES Encrypt / Decrypt — PBKDF2 (100k, SHA-256) → AES-256-GCM; output is
base64(salt|iv|ciphertext), GCM tag rejects wrong passwords - Chmod Calculator — owner/group/other rwx checkboxes ⇄ octal, live symbolic (
rwxr-xr-x), common presets - Regex Tester — pattern + flags, highlighted match preview, capture-group table, replace preview
- Semver Compare — compare two versions and sort version lists per semver.org rules (prerelease-aware)
- Image Compressor — re-encode to WebP/JPEG/PNG with quality slider, before/after size preview
- RSA Key Generator — RSA key pairs (RSASSA / RSA-PSS / RSA-OAEP, 2048–4096 bits) exported as PEM/PKCS#8
- Certificate Decoder — parse X.509 PEM/DER: subject/issuer, validity, SAN, key usage, SHA-1/256 fingerprints
- IP Calculator — IPv4 subnet math (network/broadcast/usable hosts/mask/wildcard/scope/PTR) with subnet splitting; IPv6 compress/expand, prefix, type detection, ip6.arpa PTR
- Cron Expression — standard 5-field cron explained in words, with next-run preview
- Punycode / IDN — internationalized domain names ⇄
xn--ASCII form - Quoted-Printable — RFC 2045 quoted-printable encode/decode for email bodies
- Data URI Generator — text or file →
data:URI for inline embedding - SQL IN Builder — line-separated lists → quoted
IN (...)values - Unicode Codec — \u / U+ / HTML entity encode & decode (6 formats, optional ASCII passthrough) plus per-code-point inspection
- TOTP Generator — RFC 6238 one-time codes from a base32 secret or
otpauth://URI - Placeholder Image — PNG/JPEG/WebP placeholder images at any size
The home page offers multilingual search (queries match names/descriptions/tags in all languages, not just the active one) and tag filtering localized to the current UI language.
Plugin Center → Store — find Dev Tools and click install. Store packages are officially signed, no extra setup needed.
- Download the latest
terry.devtools-*-universal.dbxpfrom Releases. - In DBX: Plugin Center → Settings → allow unsigned development packages.
- Choose the local
.dbxpto install.
Plugin Center → Installed → Dev Tools — opens a single Dev Tools workbench tab; the in-plugin sidebar switches between all tools. The tab is restored across restarts, so open once and keep it.
A single manifest workbench contribution (terry.devtools.home) loads the shared Svelte + Vite bundle under ui/; all tools live behind it and are registered in src/lib/tools.js. Route resolution inside the app:
context.tool— explicit tool key from in-plugin navigationcontributionId— workbench id from the host init message (alwaysterry.devtools.home, resolves to Home)- Fallback — Home tool grid
Copy goes through dbxPlugin.copy() (host clipboard bridge) and export through dbxPlugin.saveFile() (native save dialog); both degrade to browser implementations under the dev host.
Have a small tool you reach for every day? This collection is meant to grow — open an issue with your idea, or send a PR following the four steps below.
- Create
src/tools/XxxTool.svelte(wrap content inToolShell, reusedbx-*classes andCopyButton) - Register
{ key, contributionId, component, tags }insrc/lib/tools.js(tags are canonical keys; add their en+zh display names tot().tags) - Add
tools.xxxstrings (en + zh) insrc/lib/i18n.js
No manifest change needed — the single terry.devtools.home workbench entry covers all tools.
npm install
npm run build
dbx-plugin dev --path . --port 5190Open http://127.0.0.1:5190/. npm run build:watch pairs with the dev host's auto reload.
Package an unsigned candidate: dbx-plugin package . → dist/*.dbxp.
package only zips what's already in ui/ — after editing code or the version in manifest.json, run npm run build first or the bundle keeps the stale build (the version shown in-app is inlined at build time).
For a quick local test install — build + package in one line, then install the .dbxp via Plugin Center → install from file in DBX:
npm run build && npx dbx-plugin packageTag + GitHub Release in this repo — .github/workflows/plugin-release.yml builds the candidate automatically. Then open a candidate PR against t8y2/dbx-store and wait for review/signing. See the plugin development docs.