TL;DR
- The Problem: Online tools for Base64 decoding, JWT inspection, and log parsing routinely send sensitive strings, API credentials, and proprietary logs to third-party backends.
- The Insight: Processing data entirely client-side using Angular 19 Signals, native Web Cryptography APIs, and dedicated Web Worker threads eliminates remote data transmission.
- The Result: 28 production-grade developer tools running with 0 bytes of network egress, sub-millisecond local execution, and total data isolation.
Developer tools on the web share a common privacy issue: pasting sensitive text, JWT authorization tokens, or internal log dumps into search-engine-promoted websites often uploads your data to remote logging systems and analytics pipelines.
Web Utils is designed as a privacy-first alternative. It is a zero-backend, 100% client-side application suite that executes every transformation, hash calculation, and log parse directly inside your browser tab.
- GitHub Repository: github.com/breejesh/web-utils
- Live Demo: utils.breejeshrathod.com
The Four Architecture Pillars
Web Utils relies on four design choices to ensure both high performance and privacy guarantees:
1. 100% Client-Side Data Isolation
Every tool in the suite runs locally. Data entered into inputs, pasted from clipboards, or loaded from disk is processed using browser JavaScript, the Web Cryptography API, and Web Workers. Network telemetry is strictly zero for tool payloads.
2. Angular 19 Standalone Signals Architecture
Built with modern Angular 19 standalone components, state updates are driven by fine-grained signal() and computed() primitives. This prevents unnecessary component re-renders during high-frequency typing in text diffs or regex match evaluations.
3. Static SSR Prerendering for SEO and Fast Initial Loads
Each utility tool lives on its own dedicated, deep-linkable path (such as /tools/jwt-debugger or /tools/evtx-viewer). Static prerendering via @angular/ssr builds pre-baked HTML at build time, giving users instant page loads and full search indexability.
4. Zero Backend Infrastructure and Zero Ad Tracking
There are no database connections, no API proxies, no login prompts, and no banner scripts. The application functions as an offline-capable static distribution bundle.
App Interface & Screen Showcases
To see how Web Utils presents its utilities, let's look at the primary interface screens.
1. Category Dashboard & Search Hub
The main landing page organizes tools into 8 distinct categories alongside live fuzzy search and dark or light theme toggling.
2. Base64 Encoder & Decoder
Supports custom character set encodings, URL-safe Base64 conversions, line-by-line processing, and direct file download options.
3. Regex Playground & Tester
Interactive regular expression evaluation with real-time match highlight rendering, capture group breakdown, and substitution previews.
Technical Mechanics: Client-Side Security & Offloaded Workers
Executing complex security and log parsing tasks inside the browser tab introduces two primary engineering demands: avoiding third-party server trust and preventing main-thread UI freezing.
1. High-Throughput Hashing via Web Cryptography API
Rather than importing heavy JavaScript crypto libraries, Web Utils uses the browser's hardware-accelerated window.crypto.subtle interface for SHA-1, SHA-256, and SHA-512 computations.
export async function computeHash(
text: string,
algorithm: 'SHA-1' | 'SHA-256' | 'SHA-512'
): Promise<{ hex: string; durationMs: number }> {
const startTime = performance.now();
const encoder = new TextEncoder();
const data = encoder.encode(text);
const hashBuffer = await crypto.subtle.digest(algorithm, data);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
const durationMs = performance.now() - startTime;
return { hex, durationMs };
}
2. Web Worker Offloading for EVTX Binary Log Parsing
Parsing binary Windows Event Log files (.evtx) requires traversing chunks, event records, and string tables. Doing this on the UI thread for a 50 MB log file would lock the browser interface. Web Utils delegates file parsing to a dedicated Web Worker using ArrayBuffer transferability:
// evtx.worker.ts
import { EvtxParser } from './evtx-parser';
self.addEventListener('message', async (event: MessageEvent<{ fileBuffer: ArrayBuffer }>) => {
const { fileBuffer } = event.data;
const parser = new EvtxParser(fileBuffer);
const records = [];
while (parser.hasNext()) {
records.push(parser.nextRecord());
if (records.length % 500 === 0) {
self.postMessage({ type: 'PROGRESS', parsedCount: records.length });
}
}
self.postMessage({ type: 'COMPLETE', records }, [fileBuffer]);
});
Web Worker Batch Size vs UI Responsiveness
Offloading tasks to background threads requires tuning chunk batch sizes so worker messages do not flood the main thread event loop:
| Worker Batch Size (Records) | Main Thread Latency (p99) | PostMessage Overhead | Total Parse Time (50 MB EVTX) | UI Frame Drops |
|---|---|---|---|---|
10 |
42 ms |
18.4 ms |
3.24 s |
High (Stuttering) |
100 |
12 ms |
4.1 ms |
2.61 s |
Minimal |
500 (Optimal) |
2 ms |
0.8 ms |
2.15 s |
0 (60 FPS Smooth) |
2500 |
1 ms |
0.2 ms |
2.08 s |
0 (Delayed Progress Updates) |
10000 |
1 ms |
0.1 ms |
2.04 s |
Progress bar jumps |
Quantified Architecture Comparison
Comparing browser-local processing against classic server-assisted developer tool platforms:
| Architectural Metric | Client-Side Web Utils | Server-Assisted Utility API |
|---|---|---|
| Network Payload Egress | 0 bytes |
100% of input payload |
| Data Breach Exposure | Zero Risk (No DB or logs) |
Moderate to High (Server logs, analytics) |
| Processing Latency | < 1 ms (Local JS / WebCrypto) |
50 ms - 400 ms (RTT + Server Execution) |
| Offline Availability | 100% (PWA / Cached Bundle) |
0% (Requires Internet) |
| Execution Cost | $0.00 (Client Hardware) |
Cloud Server & Function Costs |
Production Edge Cases & Constraints
- Browser V8 Heap Boundaries for File Parsing: Large file uploads (such as 250 MB+
.evtxfiles) hit V8 memory allocations if held entirely in DOM arrays. Web Utils mitigates this by streaming parsed records through paginated display signals instead of holding raw nodes in memory. - Web Crypto Secure Context Requirement: The Web Cryptography API (
crypto.subtle) is restricted by browsers to HTTPS origins orlocalhost. Non-secure HTTP deployments fall back to WebAssembly fallback functions. - CORS Restrictions on Cert Inspectors: Web-based SSL certificate inspections cannot initiate direct TCP sockets to arbitrary domain ports due to browser sandbox limits. Certificate decoding relies on local PEM/DER string parsing rather than raw network handshakes.
The Bottom Line & Local Setup
Web Utils demonstrates how modern Angular signals and web APIs can deliver a fast, responsive, and private suite of developer tools without running server infrastructure.
To run the application locally or contribute new tools:
# Clone the repository
git clone https://github.com/breejesh/web-utils.git
cd web-utils
# Install dependencies
npm install
# Start local dev server
npm start
