Convert video, download from YouTube, edit PDFs, enlarge photos and read text from scans on Windows, without typing a command.
Tools4Devs puts twenty-five open-source tools (FFmpeg, yt-dlp, qpdf, ImageMagick, Tesseract and others) in one window with one queue. Nine of them ship inside the installer. The app downloads, verifies and installs the rest on its own, and shows the download size before it starts.
It also has about ninety small tools built in: text, hashes, dates, calculators, colours, CSS generators, QR codes, test data and chat or post mockups. These run inside the app and need nothing installed.
You don't need a browser, a package manager or PATH changes. Everything runs on your machine, in English or Brazilian Portuguese.
- Nothing to install by hand. Each tool is pinned to an exact URL, version and SHA-256. A download that doesn't match its digest is refused, and nothing asks for administrator rights.
- Find a tool in a few keys. A sidebar tree lists every tool and each of its actions, and Ctrl+K searches all of them, accents and word order aside. Hover a card to see a short clip of what the tool does. Drop a file on the window and the tools that can open it are suggested.
- Tools grouped by result. Categories are named after what you want to get (a smaller video, a merged PDF, the text from a scan), not after the project that does the work.
- A queue that keeps running. Start a job, close the tool, and the job continues. Stopping a job ends its whole process tree, and the history survives a restart.
- Built-in quick tools. Case changes, Base64, hashes, date math, financing and BMI calculators, colour conversion, CSS generators, CSS and HTML minifiers, QR codes and barcodes, CPF, CNPJ and test card numbers, dice and raffles. Results show up as you type.
- Chat and post mockups. Build a WhatsApp, iMessage or Instagram DM conversation, or a tweet or Instagram post, and save it as an image.
- Automatic updates. Updates are checked against a signature built into the app, and a running job is never interrupted. You install the update with a button when you are ready.
- English and Brazilian Portuguese, switched in Settings. Tools, options, errors and the queue are all translated.
- No account, no cloud, no telemetry. OCR and photo upscaling use local models on your own CPU or GPU. The three network lookups and reverse image search are the only features that contact an outside server, and they say so on screen.
Download the installer from the latest release and run it. Requires Windows 10 or 11, 64-bit.
| File | What it is |
|---|---|
tools4devs_<version>_x64-setup.exe |
Installer (recommended) |
tools4devs_<version>_x64_en-US.msi |
MSI, for managed deployment |
tools4devs_<version>_x64-portable.zip |
Portable, unzip and run |
Note
The installer isn't code-signed yet, so SmartScreen shows a warning the first time you run it. Each release includes SHA-256 checksums. The portable build doesn't update itself.
Important
On 4.0.0 or older? Install 5.0.0 by hand once. Updates are signed with a new key from 5.0.0, which older versions cannot verify, so they will not offer it. Run the new installer over the old one: preferences, history and downloaded tools are kept, and automatic updates work again from then on.
| Category | Tools | What you can do |
|---|---|---|
| Video and audio | FFmpeg, ffprobe, SongRec, MKVToolNix | transcode, compress, trim, make GIFs and contact sheets, inspect codecs, remux to MKV, identify the song that is playing |
| Downloads | yt-dlp, gallery-dl | download video and audio from a link, and image galleries |
| Images | libvips, Nomos8kSC, reverse image search, ImageMagick, Oxipng, ExifTool | resize, crop, convert, upscale with a model, find where a picture came from, optimise PNG, read and remove metadata |
| PDFs and documents | qpdf, Poppler, Tesseract, Pandoc | merge, split, rotate, protect, extract text, render a page, OCR into a searchable PDF, convert between formats |
| Text and data | jq, yq, Miller, ripgrep, fd, Difftastic | JSON and YAML, CSV to JSON, search, find files, structural diff |
| Quick tools | built in | text, codes and hashes, test data, CSS generators, minify and format, QR codes and barcodes |
| Calculators | built in | dates and time, math and finance, colours, everyday calculators, network lookups, random picks |
| Files and disk | 7-Zip, Dust, tokei, hexyl | archives, disk usage, line counts, hex view |
| Mockups | built in | chat and post images |
apps/desktop/src/ React 19 + TypeScript interface, Tailwind CSS 4 and shadcn/ui
apps/desktop/src-tauri/ Rust host: adapters, component store, process supervision
tooling/tools.json every tool, pinned to a URL, a version and a SHA-256
scripts/ manifest validation, staging, release manifest
tests/ manifest, installation, execution and stylesheet rules
Some design decisions:
- No shell. An operation is a typed request (tool, operation, inputs, output, options). A resolver turns it into an executable name and a list of arguments. No string is passed to a shell, so a file named
; rm -rfis just a file name. - Components are stored by digest. FFmpeg and ffprobe come from the same archive, so it is downloaded once. Installs are staged in a separate folder under
%LOCALAPPDATA%and activated with an atomic rename. Nothing is written to Program Files. - Pinned versions come first. The app looks in
<install dir>/tools/, then the component store, then PATH. Git for Windows ships an Xpdfpdftotext.exethat is often first on PATH, so Poppler is found through a binary Xpdf doesn't include. A test covers this.
You need Node 24+, Rust (MSVC toolchain) and the Visual Studio C++ build tools.
npm install
npm run tools:stage # downloads and verifies the bundled tools
npm run tauri:devnpm test # manifest, execution, interface and component tests
npm run test:e2e # the real interface in Chromium over a simulated host; report in e2e-report/
npm run tauri:build # installer, MSI and portable buildImportant
A release that clients can update to must be signed. Set both variables, even if the key has no password. Without the second one the build waits for a password prompt and produces no signature.
TAURI_SIGNING_PRIVATE_KEY="$(cat ~/.tools4devs/updater.key)" \
TAURI_SIGNING_PRIVATE_KEY_PASSWORD="" npm run tauri:buildTo cut a release, run one command:
npm run release -- 5.0.1It sets the version everywhere, adds a CHANGELOG.md section from the commits since the last tag (unless you already wrote one), runs the tests, builds and signs, and puts the installer, MSI, portable zip, signatures, checksums.txt, the three update manifests and RELEASE-NOTES.md in Releases/<version>/. It signs with ~/.tools4devs/updater.key unless TAURI_SIGNING_PRIVATE_KEY is set. That key replaced the original one, lost on 2026-10-01; copies live in Backups\tools4devs-updater-key on each local drive, and one should also be kept off this machine. It doesn't commit, tag or publish.
Before a release, check that every pinned download still installs and runs (about 900 MB):
cargo test --manifest-path apps/desktop/src-tauri/Cargo.toml --lib -- --ignored --nocapture installs_and_runs_every_toolEach installed version reads one manifest from the latest GitHub release, so every release carries all three:
| Manifest | Advertises | Read by |
|---|---|---|
tools4devs-updates.json |
the current release | 5.0.0 and later, signed with the current key |
tools4devs.json |
4.0.0, frozen | 3.4.0 to 4.0.0, which trust only the original key |
latest.json |
3.4.0, frozen | ToolHaven 2.1.0 to 3.3.0, which stop at the 3.4.0 bridge |
The original signing key was lost after 4.0.0, so 5.0.0 starts a new key and channel; older versions keep seeing the last release they can verify instead of an update they would reject. See the Windows upgrade contract before changing the channels or data identities.
The README uses lossless PNG captures at 3840 × 2580 pixels, rendered at 3x rather than enlarged from older images. The landing page serves lossless WebP versions, including the original resolution and responsive sizes.
With the development server running:
npm run screenshots
npm run screenshots -- --lang ptEnglish and Brazilian Portuguese, chosen in Settings and saved on the machine. Translations use the English sentence as the key, so the source code shows the real text, and a missing translation falls back to English instead of showing a key.
apps/desktop/src/i18n/pt.ts the interface
apps/desktop/src/i18n/catalog-pt.ts the tools, their operations and options
tests/interface/translations.test.mjs fails on any string without a translation
See LIMITATIONS.md for what this release can't do: formats 7-Zip can't read, what the upscaler needs from your GPU, the parts of the update path that are still untested, and more.
Tauri 2, Rust (host, adapters, component store), React 19, TypeScript, Vite, and ureq, zip and sha2 for the installer. There are no runtime dependencies besides the tools themselves.
The project's own code is MIT licensed. Each third-party executable keeps its own licence, recorded with its version, origin, download URL and SHA-256 in vendor/THIRD-PARTY-NOTICES.txt, which the build generates.

