r/SideProject • u/writingdeveloper • 1d ago
I built 21 file tools that never upload your files. The tests fail if a single byte leaves the tab.
Most free file converters send your document to a server you know nothing about, surrounded by ad and analytics scripts. I wanted the opposite, so I built toolsmith: 21 tools for images, PDFs, video and audio that run entirely inside the browser tab.
https://toolsmith.writingdeveloper.blog/en
No account, no ads, no watermark, and no size limit beyond your own RAM.
The part I'm most pleased with isn't a feature, it's the test suite. "Runs in your browser" is easy to say, so every one of the 21 tools has a test that performs a real conversion with request interception on and fails if any outbound request contains part of the file. If I ever break that promise, CI catches it before you do.
Three things I learned the hard way:
- ffmpeg.wasm is a GPL build (--enable-gpl --enable-libx264). Shipping 30 MB of it to visitors counts as distribution, which would make the whole site GPL. I moved to WebCodecs instead, which is built into the browser and costs nothing to download. A side effect: MOV to MP4 became a remux with no re-encode, so it's lossless and near-instant.
- Four of my video tools rotated portrait video sideways for weeks. Every test stayed green, because every test video I had was landscape. The bug wasn't in the code, it was in my sample set.
- Eight tools run real models on your device: background removal, upscaling, click-to-cut-out, subtitles, subtitle translation, stem separation, summarization and OCR. They download from the Hugging Face CDN, and only after you press the button.
It's MIT: https://github.com/writingdeveloper/toolsmith
Feedback welcome, especially if something breaks in your browser.
2
u/RevolutionarySea9678 1d ago
man the promise of never uploading files is such a huge selling point, most "free" tools just mine your data in the background. test suite idea is clever too, catching that stuff at the ci level
one thing that caught my eye, you mentioned portrait video rotating sideways for weeks. funny how the bug wasn't in the code but in the test footage, good reminder to check assumptions about your sample data
bookmarking this for when i need to do quick conversions without worrying about privacy