How it works: private, in-browser tools
95 of the 103 tools on 10.tools process your files with code that runs inside your browser tab, so the file stays on your device. This page explains how that works, which tools need our server and why, what we log, and how you can check all of it yourself.
Last updated October 20, 2026
What happens when you use an in-browser tool
- The page loads like any web page: HTML, styles and the code for the tool's controls. No processing code loads yet.
- You choose a file. The browser reads it into the tab's memory; it is not sent anywhere. This is the same mechanism a web mail app uses to preview an attachment before you send it.
- Only now does the tool download its processing library, usually a WebAssembly build of an established open-source program. It is cached, so the second time it loads instantly.
- The work runs in a Web Worker, a background thread of the same tab, so the page stays responsive and you can cancel at any time.
- The result is created in memory and handed to your browser as a download. When you close the tab, the file, the result and the library's working memory are discarded.
The libraries that do the work
These are the open-source projects behind the in-browser tools. When a library or model comes from a public CDN rather than from this site, the request downloads code or model weights; it never carries your file.
| Task | Library | Downloaded from |
|---|---|---|
| Read, render and split PDFs | PDF.js (Mozilla) and pdf-lib | Served from this site; PDF.js font and character maps from jsDelivr |
| Lock and unlock PDFs | qpdf compiled to WebAssembly | Served from this site |
| Word documents and spreadsheets | docx, docx-preview and SheetJS's number formatter | Served from this site |
| Compress and convert images | Squoosh's codecs (MozJPEG, OxiPNG, WebP, AVIF) via jSquash, and pica for resizing | Served from this site |
| Open iPhone HEIC photos | libheif compiled to WebAssembly | jsDelivr CDN |
| Read photo metadata | exifr | Served from this site |
| Convert, trim and compress video and audio | Your browser's WebCodecs through Mediabunny; ffmpeg.wasm (single-threaded) when a codec isn't supported | Served from this site; ffmpeg core from jsDelivr or unpkg |
| Recognise text in images and scans | Tesseract.js with its language data | Engine and language data from jsDelivr |
| Remove backgrounds and upscale images | Transformers.js running BiRefNet lite, ORMBG and Swin2SR models | Library from jsDelivr; model files from Hugging Face |
| Find faces to blur or crop | MediaPipe face detection (BlazeFace) | Library from jsDelivr; model file from Google Cloud Storage |
| Transcribe speech and make subtitles | Whisper (tiny, base or small) through Transformers.js | Library from jsDelivr; model files from Hugging Face |
| Read text aloud | Your system's voices through the Web Speech API | Built into your browser |
| Create ZIP files | fflate | Served from this site |
| Open ZIP, RAR, 7z and TAR archives | libarchive compiled to WebAssembly (libarchive.js) | jsDelivr CDN |
| Convert CSV, Excel and JSON | SheetJS and PapaParse | Served from this site |
| Record your screen, voice or webcam | Your browser's MediaRecorder and screen-capture APIs, with Mediabunny for MP4 and MP3 | Built into your browser; served from this site |
| Compare two texts | jsdiff | Served from this site |
| Fonts for signatures, added text and memes | Open-licence fonts from Fontsource and Google Fonts | jsDelivr CDN and Google Fonts |
Large models are downloaded only by the tools that need them, the first time you use them, and your browser keeps them for next time: the background remover fetches between 44 and 224 MB depending on the model and your device, the transcriber between about 40 and 250 MB depending on the model you pick. Each tool shows the download size.
Tools that use our server, and why
Some jobs cannot be done inside a browser: checking a website from the outside, redirecting a short link, or watching a site while your computer is off. Those tools say “Processed on our server” on the page instead of “Runs in your browser”, and they send only what the job needs.
| Tool | What is sent | What is kept |
|---|---|---|
| Mock REST API | Create fake JSON endpoints with your own method, path, status, delay and body or generated fake data, served with CORS from our server for prototyping and tests. | endpoint JSON kept until you delete it or 7 days pass without a request |
| Website speed & SEO checker | Audit a public page for on-page SEO, from titles, headings and canonical tags to robots.txt, hreflang and structured data, plus Core Web Vitals; our server fetches the URL and stores nothing. | the URL is fetched on demand and results are not stored |
| Open Graph & meta tag previewer | See how a link looks on Google, Facebook, X, LinkedIn, Slack, Discord and iMessage; our server fetches the public page to read its tags, or write new tags in your browser. | the URL is fetched on demand and nothing is stored |
| Robots.txt & sitemap generator | Write robots.txt rules for search and AI crawlers, test any URL against them, and build an XML sitemap from a URL list in your browser or from a crawl our server runs on your site. | crawl results are not stored |
| What's my IP & DNS lookup | See the public IP address your connection uses, IPv4 or IPv6, with an approximate location when our host provides one, and look up DNS records for any domain; our server reads your request and stores nothing. | your IP is shown to you and not stored |
| Business name generator | Get brandable business name ideas from your keywords, made in your browser, and check whether matching domains are free; domain checks and optional AI ideas run on our server. | keywords are used to generate ideas and check domains and are not stored |
| Link shortener | Turn a long URL into a short link with a QR code and see clicks by day, referrer, device and country; links and daily click totals are stored on our server. | links kept until you delete them, daily click totals for 12 months |
| Uptime monitor | Check a website or API from our server every few minutes, track response times and uptime, and get a Slack, Discord or webhook alert when it goes down. | monitors kept until you delete them, check history for 30 days |
A few in-browser tools also have an optional online lookup, such as reading a web page's title and author to fill in a citation. The note next to that field says what is sent and where; everything else on the page works without it.
What we log
- Request logs. Like every website, our server records each page request: the time, the address requested, your IP address, your browser's user agent and the response status. They are deleted after 14 days. In-browser tools send no file data, so there is none to log.
- Usage statistics. With your consent where the law requires it, Google Analytics receives events such as “file selected”, “processing finished” or “download” with the tool name, a size range like “1–10 MB”, how long the job took and a short error code if it failed. File names, file contents and exact sizes are never sent.
- Rate limits. Server tools count requests per IP address in memory for 60 seconds to stop abuse; the counters are not written to disk.
- Your settings. Preferences and drafts (an invoice, a resume, a note) are saved in your browser's local storage on your device. We cannot see them, and clearing your browser data removes them.
Advertising on free pages is served by Google and is governed by the consent choice you make in the banner. The full policy is on the privacy page.
Check it yourself
You don't have to take our word for it. Any desktop browser can show you every request a page makes:
- Open a tool, then open the developer tools with
F12(orCmd+Option+Ion a Mac) and choose the Network tab. - Clear the list, choose a file and run the tool.
- Look at the requests. You will see the library or model being downloaded (files ending in
.js,.wasmor.onnx) and analytics pings, but no request whose payload contains your file. Click any request and open its Payload tab to confirm. - For a stronger test, run the tool once, turn off your Wi-Fi, and process a second file in the same tab. It still works, because nothing needs the network after the library has loaded.
Limits of running in the browser
Your device does the work, so a phone takes longer than a laptop on a large video, and very large files are limited by the memory your browser allows a tab, typically 2 to 4 GB. Each tool page lists its free limits in numbers. The Pro plan raises them; it does not move processing to our servers.