Hexyr is a local-first developer hex and encoding toolkit for quickly understanding unknown payloads. It's designed to be a Swiss-Army knife for developers who constantly need to encode, decode, inspect, and understand data.
Desktop - HTTP Signer:
- Universal Inspector (paste-anything workflow)
- Text <-> Hex, Base64, Binary transforms
- URL and HTML entity encode/decode
- Unicode inspection (code points, UTF-8 bytes, UTF-16 units)
- JWT inspector with decode warnings and claim highlighting
- Hexdump formatter with offsets and ASCII preview
- Hash + HMAC helpers via Web Crypto
- Bitwise operations, endianness swap, IPv4/int conversion, timestamp conversion
- Entropy, stats, frequency hints, magic byte detection
- Deterministic explainers (rule-based, no external AI)
- DNS toolkit (zone parse/format/validation + TTL sanity)
- Webhook signature verifier (Stripe/GitHub/Slack)
- HAR inspector (header/cookie extraction + anomaly + redaction export)
- Cookie/Jar analyzer (flag and expiry validation)
- UUID/ULID/KSUID utility (generate/validate/timestamp/entropy)
- Timezone/ISO8601 lab (cross-timezone normalization)
- Policy linter pack (CSP/CORS/security headers)
- Formatter lab (JSON/YAML/TOML/XML/INI/SQL/HTTP + converter)
- ASCII art generator (text fonts + image-to-ASCII, local processing)
/inspect is the primary mode:
- Accepts pasted input or dropped files
- Detects likely formats (hex/base64/base64url/binary/JWT/JSON/etc.)
- Shows warnings and metadata
- Suggests and links to specialized tools while preserving workspace input
src/app: React SPA, UI shell, routes, feature workspacessrc/shared: Pure deterministic utilities (encoding, detection, parsing, analysis, crypto, explainers)src/worker: Thin Hono Worker for/api/healthand/api/metatests: Vitest unit tests for deterministic modules
Core transforms run client-side by default. The Worker is intentionally lean and future-ready.
- Payload transforms are client-side in MVP
- No backend persistence
- No payload-content logging
- No Cloudflare KV
localStorageis used only for non-sensitive UI preferences (theme, last selected tool)
Local execution keeps interactions faster, lowers edge complexity, and reduces risk when developers inspect sensitive payloads.
- Deployment target:
hexyr.com - Docs target:
docs.hexyr.com - Runtime: Cloudflare Workers + static SPA assets
- SPA fallback is configured for routes like
/tool/hex - API namespace is explicit under
/api/* - KV is intentionally not used
robots.txtis included inpublic/robots.txt- XML sitemap is included in
public/sitemap.xml - Canonical, Open Graph, and Twitter metadata are configured in
index.html
//inspect/tool/hex/tool/base64/tool/binary/tool/url/tool/html/tool/unicode/tool/jwt/tool/hash/tool/bitwise/tool/hexdump/tool/dns/tool/webhook/tool/har/tool/cookies/tool/ids/tool/timezone/tool/policy/tool/format/tool/ascii/api/health/api/meta/api/tools
Hexyr exposes integration-friendly JSON endpoints under /api/tools/*.
OpenAPI spec: /openapi.json (local: http://localhost:5173/openapi.json, prod: https://hexyr.com/openapi.json).
GET /api/healthGET /api/metaGET /api/tools(lists available tool endpoints)
POST /api/tools/dns- body:
{ "zoneText": "...", "format": true } - returns parsed records, syntax/TTL diagnostics, optional formatted zone output
- body:
POST /api/tools/webhook-verify- body:
{ "provider": "stripe|github|slack", "payload": "...", "secret": "...", "signatureHeader": "...", "timestampHeader": "..." } - verifies signatures for Stripe/GitHub/Slack webhook payloads
- body:
POST /api/tools/har-inspect- body:
{ "harText": "...", "redactionExport": true } - returns entry summary, anomalies, and optional redacted HAR export
- body:
POST /api/tools/cookie-analyze- body:
{ "setCookieText": "Set-Cookie: ..." } - parses cookies and validates Secure/HttpOnly/SameSite/expiry issues
- body:
POST /api/tools/id-inspect- body:
{ "id": "..." } - detects UUID/ULID/KSUID, validates format, returns timestamp/entropy hints
- body:
POST /api/tools/time-convert- body:
{ "input": "...", "zones": ["UTC", "America/New_York"], "sourceZone": "UTC" } - worldtimebuddy-style normalization and timezone conversion output
- body:
POST /api/tools/policy-lint- body:
{ "rawHeaders": "HTTP/1.1 200 OK\ncontent-security-policy: ..." } - lints CSP, CORS, and common security headers
- body:
POST /api/tools/format- body:
{ "input": "...", "kind": "json|yaml|toml|xml|ini|sql|http", "mode": "format|minify|validate", "from": "json|yaml|toml", "to": "json|yaml|toml" } - formats/minifies/validates many payload types, and converts JSON/YAML/TOML
- body:
POST /api/tools/dns-tool- body:
{ "tool": "MX Lookup", "target": "example.com" } - runs DNS Toolkit checks (MX/A/AAAA/TXT/DMARC/SPF/RDAP/health and more)
- body:
pnpm install
pnpm devpnpm build
pnpm preview- Set secrets or env vars:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_ID
- Authenticate Wrangler if needed:
pnpm exec wrangler login- Deploy:
pnpm run deployCreate a custom token scoped only to the Hexyr account/zone:
- Account:
Workers Scripts:Edit - Account:
Workers Routes:Edit - Account:
Workers Tail:Read(optional) - Zone (
hexyr.comonly):Zone:Read - Zone (
hexyr.comonly):DNS:Edit(only if managing custom-domain DNS via deploy)
Avoid broad global tokens; keep access limited to the hexyr.com zone and the owning account.
- CI workflow runs lint, typecheck, test, and build on PRs and
mainpushes. - Security SAST workflow runs CodeQL, dependency review (PR), and secret scanning via Gitleaks.
- Security DAST workflow runs OWASP ZAP baseline against
https://hexyr.comon schedule and manual dispatch. - Production deploys are handled by Cloudflare's GitHub integration for this Worker service.
- SAST findings are surfaced in GitHub Security alerts when Advanced Security/Code scanning is enabled.
- DAST is non-destructive baseline crawling and report generation.
- You can manually run DAST with a custom URL from the Actions tab (
target_urlinput).
Community contributions are welcome. Please read CONTRIBUTING.md for branch/PR workflow, quality gates, and privacy/security expectations.
For verified commit setup, see SIGNING.md.
If you prefer GitHub-based deploys later, add back a deploy workflow with Cloudflare secrets.
src/
app/
shared/
worker/
tests/
.github/workflows/Run all tests:
pnpm testIncludes deterministic coverage for encoding, detection, parsing, entropy, magic bytes, and crypto helpers.
- Hexyr is decode/inspection focused.
- JWT decode is not signature verification.
- Do not treat decoded JWT payloads as trusted unless signature and claims are validated in your own auth context.
- Avoid pasting production secrets into third-party tools; Hexyr is built to keep this local-first.
- Structured compare mode for two payloads
- Optional local-only encrypted workspace snapshots
- Additional file signature and container format coverage
- Advanced command palette and keyboard workflows
- Large payload virtualization improvements
Apache-2.0
