API Testing,
Supercharged.
Napper is a free, open-source API testing tool that runs from the command line and integrates natively with VS Code.
Define HTTP requests as plain text .nap files, add declarative assertions, chain them into test suites, and run everything in CI/CD with JUnit output.
As simple as curl for quick requests. As powerful as F# for full test suites.
Run playlists, inspect responses, and verify assertions — all inside VS Code.
What can Napper do?
Everything you need for API testing. Nothing you don't.
CLI First
The command line is the product. Run requests, execute test suites, and integrate with CI/CD pipelines from your terminal.
VS Code Native
Full extension with syntax highlighting, request explorer, environment switching, and Test Explorer integration. Never leave your editor.
F# Scripting
Full power of F# for pre/post request hooks. Extract tokens, build dynamic payloads, orchestrate complex flows. No limits.
Declarative Assertions
Assert on status codes, JSON paths, headers, and response times with a clean, readable syntax. No scripting required for simple checks.
Composable Playlists
Chain requests into test suites with .naplist files. Nest playlists, reference folders, pass variables between steps.
Plain Text, Git Friendly
Every request is a .nap file. Every environment is a .napenv file. Version control everything. No binary blobs, no lock-in.
How does Napper compare to other API testing tools?
See how Napper stacks up against Postman, Bruno, and .http files.
| Feature | Napper | Postman | Bruno | .http files |
|---|---|---|---|---|
| CLI-first design | Yes | No | GUI-first | No CLI |
| VS Code integration | Native | Separate app | Separate app | Built-in |
| Git-friendly files | Yes | JSON blobs | Yes | Yes |
| Assertions | Declarative + scripts | JS scripts | JS scripts | None |
| Full scripting language | F# (.fsx) | Sandboxed JS | Sandboxed JS | None |
| CI/CD output formats | JUnit, TAP, JSON | Via Newman | Via CLI | None |
| Test Explorer | Native | No | No | No |
| Free & open source | Yes | Freemium | Yes | Yes |
| No account required | Yes | Account needed | Yes | Yes |
How do you use Napper?
From one-liners to full test suites.
Minimal request
POST with body
Run from CLI
Frequently Asked Questions
What is Napper?
Napper is a free, open-source, CLI-first API testing tool that integrates natively with VS Code. It lets you define HTTP requests as plain text .nap files, add declarative assertions to validate responses, compose requests into test suites with .naplist files, and run everything from the terminal or your editor. It uses F# for advanced scripting and outputs JUnit XML for CI/CD pipelines.
Is Napper free?
Yes. Napper is completely free and open source under the MIT license. There are no paid tiers, no account requirements, and no feature gates. The CLI binary and the VS Code extension are both free to use.
How is Napper different from Postman?
Postman is a GUI-first tool that requires an account, stores collections as JSON, and locks advanced features behind a paywall. Napper is CLI-first, stores everything as plain text files in your repository, requires no account, and is completely free. Napper also provides F# scripting instead of sandboxed JavaScript, and integrates directly into VS Code with native Test Explorer support.
How is Napper different from Bruno?
Bruno is an excellent open-source alternative to Postman, but it is GUI-first with a standalone desktop application. Napper puts the CLI first and lives inside VS Code. For scripting, Bruno offers sandboxed JavaScript while Napper gives you full F# Interactive with access to the entire .NET ecosystem. Both store requests as plain text files.
Does Napper work with CI/CD pipelines?
Yes. Napper is designed for CI/CD from the ground up. The CLI binary is self-contained with no runtime dependencies. It outputs JUnit XML, TAP, JSON, and NDJSON formats. It integrates with GitHub Actions, GitLab CI, Jenkins, Azure DevOps, and any platform that supports standard test output formats. Exit code 0 means all assertions passed, exit code 1 means a test failed.
What scripting language does Napper use?
Napper uses F# Interactive (.fsx scripts) for pre-request and post-request hooks. Unlike the sandboxed JavaScript in Postman and Bruno, F# scripts in Napper have full access to the .NET ecosystem. You can parse XML, call databases, generate cryptographic tokens, validate complex schemas, and use any NuGet package.
What file formats does Napper use?
Napper uses three plain text file formats: .nap files for individual HTTP requests, .naplist files for composing requests into ordered test suites, and .napenv files for environment-specific variables like base URLs and tokens. All files are human-readable, git-friendly, and produce clean diffs in code reviews.
Does Napper require VS Code?
No. The Napper CLI runs independently from any editor or IDE. You can use it entirely from the terminal. The VS Code extension is optional and provides syntax highlighting, a request explorer, environment switching, and Test Explorer integration for developers who prefer working in an editor.