Every file you touch here stays on your machine.
PDF, image, developer, SEO, text, student and business tools — all free, all entirely in your browser. No upload, no account, no server ever sees your data.
The toolset
Focused tools covering the everyday PDF work — pick one to get started, no account needed.
How this actually works
Each tool runs entirely with JavaScript already loaded in this page — PDF tools via pdf-lib and pdf.js, image tools via the browser's native Canvas API, and everything else with plain JavaScript. Your files or input are read into browser memory, processed, and handed back as a download or copyable result. This page itself is served by a small Laravel route; Laravel never sees your files either. The only backend in use is Supabase, and only for two optional things: signing in with a magic link, and — only if you're signed in — a log of which tool you ran and when. Two things have real limits worth knowing up front: Compress PDF flattens each page to a re-encoded image (great for scan-heavy PDFs, not ideal if you need selectable text after), and Word/Excel/PowerPoint ⇄ PDF conversion genuinely requires a server-side rendering engine, so it isn't included here — this build only ships tools that can honestly run client-side.
Questions people actually ask
What's the largest number it can convert?
Standard Roman numerals go up to 3,999 (MMMCMXCIX) — there's no standard single-character symbol for 5,000 or beyond in ordinary usage, so this tool caps there rather than inventing a non-standard extension.
Does it handle 0 or negative numbers?
No — Roman numerals have no symbol for zero and no standard way to represent negative numbers, so those aren't valid input for numbers to Roman.
Does Roman to Number accept lowercase letters?
Yes — input is automatically uppercased before parsing, so "mcmxciv" and "MCMXCIV" both work.
What if I enter an invalid Roman numeral, like "IIII" or "VV"?
It's rejected — the converter validates that a decoded numeral, when re-encoded, produces the exact same string, which catches non-canonical or malformed input rather than silently guessing a value.
Why do some numbers use subtractive notation, like IV instead of IIII?
Standard Roman numeral rules place a smaller symbol before a larger one to mean subtraction (IV = 5-1 = 4) for specific cases (4, 9, 40, 90, 400, 900) — this tool follows that standard convention, which is what virtually all modern usage expects.
Can I convert in both directions?
Yes — toggle between "Number → Roman" and "Roman → Number" with the switch at the top.
Is this useful for anything besides curiosity?
Yes — Roman numerals still show up in clock faces, book chapter/edition numbers, movie sequel titles, outline numbering, and some formal document dating.
Is my input sent anywhere?
No — the conversion happens entirely in your browser; nothing is transmitted.
Is this really free, and is there a file size limit?
Yes — no account, no paywall. Since processing happens in your browser's memory rather than uploading anywhere, the practical limit is your device's available RAM, not a server quota. Very large files (500+ pages) may run slower, especially for Compress and PDF→JPG.
Does anything about my file get sent anywhere?
No. Every tool runs with pdf-lib/pdf.js loaded in this page; your file is read into browser memory and never leaves it. The only network call this app makes for your account is Supabase auth — and that only stores which tool you ran and when, never file content.
Why isn't Word/Excel/PowerPoint → PDF included?
Converting Office formats accurately needs a real rendering engine (what Word or LibreOffice use internally) — no browser library does this reliably. Rather than ship a broken version, it's left out.
Does TechDriven Tools have OCR (text recognition)?
Yes — OCR PDF recognizes text in scanned or photographed pages using Tesseract.js, running entirely on your device, and gives you a searchable PDF or a plain text file. Nothing is uploaded for this either.
Can I use this without an internet connection?
Once the page and its libraries have loaded once, yes — the tools themselves need no network access. Signing in and viewing history do require a connection, since those talk to Supabase.
What happens to the "history" if I sign in?
Only a row per tool run — the tool's name and a timestamp. No filename, no file content, ever. You can see the full list any time via the History button.
Are the non-PDF utilities (password generator, JSON formatter, etc.) private too?
Yes — same rule as the PDF tools. Word Counter, Case Converter, Password Generator, UUID Generator, Base64, Hash Generator, JSON Formatter and JWT Decoder all run with plain JavaScript already loaded in this page; nothing you type or paste is sent anywhere.
Roman Numeral Converter, in depth
Convert between numbers and Roman numerals, in either direction, instantly.
Features
Both Directions
Number to Roman, or Roman back to number.
Validates Input
Rejects malformed numerals like "IIII" instead of guessing.
Standard Range
Covers 1 through 3,999, the full range standard numerals support.
Instant
Converted the moment you run it.
Why use Roman Numeral Converter
- Decode a Roman numeral on a clock face, book edition, or movie sequel title.
- Write a numbered outline or document section using Roman numerals correctly.
- Check your own by-hand conversion before using it somewhere formal.
- Learn the subtractive-notation pattern (like IV for 4) by seeing real conversions.
How it works
Number-to-Roman builds the result by repeatedly subtracting the largest matching value (from M=1000 down to I=1, including subtractive pairs like CM=900 and IV=4) and appending its symbol. Roman-to-number reverses this, summing values while checking each symbol against the next one to catch subtractive pairs.
Why some invalid-looking input gets rejected
A string like "IIII" or "VV" could still be summed to a number, but neither is how Roman numerals are actually written (4 is IV, not IIII, in standard usage). This tool re-encodes whatever number it decodes and checks it matches the original input exactly — catching non-canonical numerals rather than silently accepting anything that happens to add up.