惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
F
Fortinet All Blogs
小众软件
小众软件
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Azure Blog
Microsoft Azure Blog
J
Java Code Geeks
有赞技术团队
有赞技术团队
D
DataBreaches.Net
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
A
About on SuperTechFans
I
InfoQ
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
C
Check Point Blog
大猫的无限游戏
大猫的无限游戏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
MyScale Blog
MyScale Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Why I Left Postman — The Real Cost of a Cloud-First API C...
FlutWiz · 2026-06-23 · via DEV Community

FlutWiz

I used Postman for years. It was the first thing I installed on every new laptop, the default answer to "how do I test this endpoint," and for a long time it was genuinely good at that job.

Then Postman killed free teams.
That wasn't what made me leave, but it did make me look at my setup again.
I realised something weird, why does testing an API running on my own machine require a cloud account?

What started bothering me

This isn't really about pricing. Plenty of people will tell you to just pay for Postman, or just use the free tier, or just wait for them to walk it back. That misses the point.

At first I didn't care. Then I started noticing things

Your data isn't really yours. Every request, every header, every auth token you've ever tested lives on Postman's infrastructure, not your machine. I went looking and found that Postman, like most cloud-first tools, collects telemetry by default. None of this is secret or hidden, it's in the privacy policy, but most of us never read it before clicking through setup.

You're testing a localhost API through someone else's cloud. This one actually bothered me once I noticed it. Hitting an endpoint running on my own laptop, through a tool that wants an internet connection and an account first, started to feel backwards.

Vendor lock-in is real, even with an export button. Postman lets you export collections as JSON. In practice, every export I've done has lost something: an OAuth flow, a binary body, a header that didn't quite map. "You can always export" is true and also not the same as actually owning your data.

What I looked at instead

I didn't jump straight to one alternative. A few options came up enough times in threads and comment sections that I actually tried them.

The first thing I tried was Bruno because that's what almost everyone recommends when somebody says they're leaving Postman.
I actually liked it. Requests live on disk, Git works properly, and I never felt like I was fighting the tool. For a while I thought my search was over.
The thing that eventually bothered me was the .bru format.
Maybe this won't matter to everyone, but one of the things I was trying to get away from was tool-specific formats. If I open a request file in a text editor, I want to immediately understand what's going on. With .bru files, I still felt tied to Bruno.

I also spent some time with Yaak.
The UI is great. It's fast, lightweight, and honestly one of the nicest API clients I've used. If all I cared about was the experience of sending requests, I could have happily stayed there.
But I kept coming back to the same question:
"If this tool disappeared tomorrow, what happens to my API definitions?"
That's when I started paying a lot more attention to the actual files being stored on disk rather than the application around them.

Where I landed

I ended up on Voiden, and the reason is almost embarrassingly simple: it stores API requests as plain Markdown files.

Not a proprietary format that happens to live on disk. Actual Markdown. A .void file opens and reads fine in VS Code, in Vim, in GitHub's file viewer, with nothing installed beyond a text editor. That's the whole pitch, and it turned out to matter more to me than I expected.

A few things that made the actual switch from Postman easier than I assumed it would be:

  • It imports Postman collections directly, drag and drop, into native .void files. I lost less in that import than I lost moving between two different versions of Postman itself a few years back.
  • Requests are built from reusable blocks instead of static forms. Auth, headers, and params can be shared across requests instead of duplicated in every single one. The first time I updated one auth block and watched a dozen requests update with it, I understood why people make a big deal out of this.
  • No account, no login screen, nothing to set up before sending a request. The thing I do most often, test something on localhost, finally just works without a network round-trip to someone else's server first.
  • It's open source under Apache 2.0, which matters to me more after this whole experience than it did before. If a small team's funding model changes, I want my tooling to survive that, not vanish behind a new pricing page.

It's not the most established option here. Bruno has a much bigger community, and that's worth weighing honestly if community size and plugin ecosystem matter to you more than file format does. For me, the actual day-to-day difference, files I can read, share, and review like code, was worth being on a smaller, younger project.

The actual lesson here

I'm not saying Postman is bad.
It solved a lot of problems and I used it for years.

I just realized I care more about local files, Git, Markdown and owning my data than I do about cloud workspaces.
That's what made me switch.

Download Voiden here: https://voiden.md/download
Repo, if you want to see how it actually works: https://github.com/VoidenHQ/voiden