Voiden vs The Rest
| Feature | Postman | Insomnia | Bruno | Voiden |
|---|---|---|---|---|
| Open Source | ||||
| Git-Native (No Export) | Git Sync. Free up to 3 users | |||
| Plain Text Format | ||||
| Executable Documentation | ||||
| Reusable Block System | Variables Only | Variables Only | Variables Only | |
| Plugins | ||||
| Works Offline | ||||
| No Vendor Lock-in | Partial. Account required | Partial. Account required | ||
| Built-in Terminal | ||||
| Pre and Post Requests | Sandboxed packages. JS only | Limited sandbox. JS only | npm modules. JS only | Real runtimes. JS, Python and Bash |
| Free Git UI | Free plan. Single user | Free up to 3 users | Commit & pull only. Push paid | |
| Multiple Requests per File | ||||
| Collection Runs (Stitch Runner) | ||||
| No Subscription Required | Freemium | Freemium | Freemium | |
| MCP Client (Built-in) | ||||
| MCP Server for Your Coding Agent | Separate server. Cloud API key | Separate package | One click in-app. Local, per project | |
| Publish Requests as MCP Tools | Via API network | Third-party only. via bruno-api-mcp | Per-request opt-in. Test-gated |
Bring Your Collections With You
You don't have to start from scratch. Import what you already have and get ready-to-run .void files in minutes.
Migrate from Postman
Export your collection as JSON and import it. Folders, requests, headers, bodies and auth come across as .void files.
Import Postman collectionsMigrate from Insomnia
Bring over your Insomnia workspace with the Insomnia importer plugin. Folder structure, params, bodies and auth are converted for you.
Import Insomnia collectionsMigrate from Bruno
Point Voiden at your Bruno repository. .bru files and OpenCollection YAML exports are imported, with environments, auth, assertions and simple scripts.
Import Bruno repositoriesStart from an OpenAPI spec
Import an OpenAPI or Swagger spec and turn every endpoint into a request you can run, document and test.
Import OpenAPI specsWhat Makes It Different
Most API clients can store collections in Git now. Here's what's still different.
Collection Files vs Documents You Write
Others
Postman, Insomnia and Bruno can all save collections as YAML files in your repo. But those files are written by the app, usually one file per request, and you edit them through the app's UI. Postman and Insomnia also need an account for most features.
Result: Git-friendly, but built for the tool to read
Voiden
A .void file is a Markdown document you write yourself. Put several requests, notes and checks in one file, read it on GitHub, and open it without an account.
Result: Your repo is readable by people, not just the app
Inherited Settings vs Composable Blocks
Others
You can set auth (and in Insomnia and Bruno, headers) on a collection or folder, and requests inside it inherit them. But reuse follows the folder tree: a request only inherits from its parents, and parts like bodies can't be shared except through variables.
Result: Reuse is tied to where a request sits
Voiden
Every part of a request is a block. Create an auth block once, import it into any file. Create a headers block, reuse it across folders and projects. Change the block, and every request that imports it updates.
Result: DRY (Don't Repeat Yourself) for API work
A Docs Tab vs Docs Around Your Requests
Others
Each request or collection has a Markdown docs tab, and Postman and Bruno can publish those docs as a site. But the docs sit in a separate tab from the request you run, so explaining a whole flow means jumping between requests.
Result: Docs and requests live side by side, not together
Voiden
Write Markdown around your requests. Explain the endpoint, show examples and describe edge cases in the same file, then run each request right where it's documented. The response shows whether the docs are still true.
Result: One document that explains and runs the flow
Ready to Try a Different Approach?
Bring your Postman, Insomnia or Bruno collections and keep working in plain files.
Free and open source. No account needed.