About Sofritools
One person, 29 tools, no servers.
Hand-built, not generatedHi — I am Jaime, a data engineer based in Puerto Rico. Sofritools is mine: I write the tools, the copy, and the Spanish, and I run it under the name of my small indie studio, Sofritó con Recao.
The name is a bad pun I am not sorry about. Sofrito is the base you make first, before the actual dish — the thing you keep in the fridge because you reach for it constantly. That is roughly what these are: small utilities you grab on the way to doing the real work.
Why the site exists
Most free online tools want you to upload your file to a server you know nothing about, wait for a progress bar, and then read your result through a layer of ads. When the file is a customer export, a config with an API key in it, or a client contract, that is a genuinely bad trade — you gave a stranger a copy of the data to save yourself ten seconds.
Every tool here does the work in your browser instead. Nothing is uploaded, because there is nowhere to upload it to: there is no backend, no database, and no account system. The honest, boring details of what does and does not leave your device are on the privacy page, including the two outbound requests the site genuinely makes.
How it is built
Sofritools is a static Astro build with zero runtime dependencies. No React, no jQuery, no analytics SDK, no ad tech, no chat bubble, no cookie banner, no third-party widget of any kind. Each tool is a page with a small block of plain JavaScript in it. That is why pages open fast on a phone on bad hotel Wi-Fi, and it is also what makes the privacy claim keepable: code that is not there cannot phone home.
A few pieces are hand-written that most sites would install from npm. The QR generator implements the encoder itself — Reed-Solomon error correction, the eight mask patterns and their penalty scoring, the format and version bits. The YAML and TOML converters run on parsers written for this site rather than on a library. That is more work, and it means those particular tools support a practical subset of each format rather than every corner of the spec, which is said plainly on the tool pages themselves. In exchange the dependency count stays at zero, and every dependency you do not have is one less thing that can quietly change what it does in a patch release.
Both languages, on purpose
Every tool ships in English and Spanish, with real Spanish URLs — not a machine translation bolted onto the English page. The Spanish is written, not generated. There is a lot of good tooling documentation in the world and an uncomfortable amount of it is English-only, so Spanish-speaking developers and students get the same tools with the same explanations here.
What is next
The catalog grows in batches: image tools that run on canvas and WebAssembly, PDF and media tools that other sites pay server bills for, and a set of data-engineering tools that come straight out of my day job — Parquet and SQLite viewers, spreadsheet and CSV cleanup, SQL generators. Which one comes first is decided by what people actually search for and land on, not by what I feel like building. Same rule for all of them: it runs on your machine or it does not ship.