Free Tools

Built to Work.
Built to Serve.

Free interactive tools that solve real problems — no signup, no tracking. Each one demonstrates the engineering behind it.

All images and data are processed entirely in your browser. Nothing is uploaded or stored on any server.

OmniConverter

Convert images between formats. Drag & drop or click to upload.

Drop an image here or click to browse

PNG, JPEG, WebP, HEIC supported

OmniConverter

// Client-side image conversion
const canvas = document.createElement('canvas');
canvas.width = img.naturalWidth;
canvas.height = img.naturalHeight;
const ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);

// HEIC support via dynamic import
const heic2any = await import('heic2any');
const blob = await heic2any({ blob: file });

// Export to any format
canvas.toBlob(callback, outputFormat, 0.92);

Zero server costs for file conversion — all processing happens in the browser. Supports HEIC from iPhones with dynamic WASM loading.

Canvas API
HEIC2Any
FileReader
Blob
Dynamic Import

WiFi Card

Generate a QR code for your WiFi network.

Encryption:
Card style:
Processed locally. Never sent to any server.

WiFi Card

// WiFi QR code standard (WPA/WPA2/WEP)
const wifiString =
  `WIFI:T:${encType};S:${ssid};P:${password};;`;

// Theme-aware QR — adapts to light/dark mode
const dataUrl = await QRCode.toDataURL(
  wifiString,
  { color: { dark: qrDotColor, light: '#00000000' } }
);

// Customizable card export via Canvas
const gradient = ctx.createLinearGradient(0, 0, w, h);
gradient.addColorStop(0, theme.colors[0]);

WiFi credentials never leave the browser. Supports WPA, WPA2 & WEP with 6 customizable card themes for download.

QRCode.js
Canvas API
WiFi URI Scheme
Theme Engine

Tone Polisher

Rewrite any text in a different tone using AI.

0/1000

Polished text will appear here...

Tone Polisher

// API route with rate limiting
const limiter = rateLimit(ip, {
  maxRequests: 10,
  windowMs: 60_000,
});

// Groq API — llama-3.1-8b-instant
const response = await fetch(GROQ_API_URL, {
  body: JSON.stringify({
    model: 'llama-3.1-8b-instant',
    messages: [
      { role: 'system', content: tonePrompt },
      { role: 'user', content: text },
    ],
  }),
});

Sub-second AI rewrites using Groq inference. Rate-limited per IP to prevent abuse. Four distinct tone personalities via system prompts.

Groq API
LLaMA 3.1
Rate Limiting
Next.js API Routes

Timezone Picker

Compare times across cities. Drag the slider to change the time.

🇺🇸New York
3:00 PM
Business hours
🇬🇧London
7:00 PM
Off hours
🇦🇪Dubai
11:00 PM
Night
🇯🇵Tokyo
4:00 AM
Night
00:00 UTC23:30 UTC
UTC 19:00

Timezone Picker

// Zero-dependency timezone conversion
const formatter = new Intl.DateTimeFormat('en-US', {
  timeZone: 'America/New_York',
  hour: 'numeric',
  minute: '2-digit',
  hour12: true,
});

// DST handled automatically by the browser
const time = formatter.format(utcDate);

// Color zones: green (9-6), yellow (6-9/6-10), red

No moment.js or date-fns needed — the Intl API handles DST transitions automatically. Half-hour increments for cities like India (+5:30).

Intl.DateTimeFormat
Zero Dependencies
DST Aware
Range Input

Image Compressor

Compress any image by quality percentage or target file size.

Drop an image here or click to browse

PNG, JPEG, WebP, HEIC supported

Image Compressor

// Binary search to hit a target file size
async function compressByTargetSize(canvas, format, targetBytes) {
  let lo = 1, hi = 95, best = null;

  for (let i = 0; i < 15; i++) {
    const mid = Math.floor((lo + hi) / 2);
    const blob = await blobFromCanvas(canvas, format, mid);

    if (blob.size <= targetBytes) {
      best = blob;
      lo = mid + 1; // try higher quality
    } else {
      hi = mid - 1; // reduce quality
    }
  }
  return best ?? await blobFromCanvas(canvas, format, 1);
}

Zero server costs — Canvas API handles all compression locally. Binary search finds the highest JPEG/WebP quality that fits within the user's target size in ~15 iterations.

Canvas API
Binary Search
HEIC Support
Blob API
Zero Upload