Downloading data from a remote URL is probably the single most common operation people do with curl.
Often, users then add various additional options to the command line to extract information from that transfer but may also decide that the actually fetched data is not interesting. Sometimes they don’t get the accurate meta-data if the full download is not made, sometimes they run performance measurements where the actual content is not important, and so on. Users sometimes have reasons for not saving their downloads.
They do downloads where the actual downloaded content is tossed away. On GitHub alone, we can find almost one million command lines doing such curl invokes.
curl of course offers multiple ways to discard the downloaded data, but the maybe most straight-forward way is to write the contents to a null device such as /dev/null
on *nix systems or NUL:
on windows. Like this:
curl https://example.com/ --output /dev/null
or using the short option
curl https://example.com/ -o /dev/null
In many cases we can accomplish the same thing with a shell redirect – which also redirects multiple URLs at once:
curl https://example.com/ >/dev/null
Improving nothing
The command line above is perfectly fine and works fine and has been doing so for decades. It does however have two drawbacks:
- Lack of portability. curl runs on most operating systems and most options and operations work identically, to the degree that you can often copy command lines back and forth between machines without thinking much about it. Outputting data to /dev/null is however not terribly portable and trying that operation on Windows for example will cause the command line to fail.
- Performance. It may not look like much, but completely avoiding writing the data instead of writing it to
/dev/null
makes benchmarks show a measurable improvement. So if you don’t want the data, why not do the operation faster rather than slower?
The shell redirect approach has the same drawbacks.
Usage
The new option is used as follows, where it needs one --out-null
occurrence per URL it wants to redirect.
curl https://example.com/ --out-null
This allows you to for example send one to null and save the other:
curl https://example.com/ --out-null https://example.net/ --output save-data
Coming in 8.16.0
This command line option debuts in curl 8.16.0, shipping in September 2025.
Credits
Stefan Eissing brought this option. He also benchmarked this option.