Oh Dear is the all-in-one monitoring tool for your entire website. We monitor uptime, SSL certificates, broken links, scheduled tasks and more. You'll get a notifications for us when something's wrong. All that paired with a developer friendly API and kick-ass documentation. O, and you'll also be able to create a public status page under a minute. Start monitoring using our free trial now.

Introducing Visit: a CLI tool made for humans to make network requests

Link –

I'm happy to announce that we have released Visit. This tool can display the response of any URL. Think of it as curl for humans. By default, the output will be colourized, and the response code and time will be displayed after the response.


JSON responses will be colourized by default as well.


And there's integration with Laravel: it can log in any user, report the numbers of queries used to build up the response, and more.


I'd like to tell you all about it in this blog post.

Installing visit

Getting started with visit is simple: just issue this command and you're good to go.

composer global require spatie/visit 

Comparing visit with curl

Curl is a great application that manages network requests for about every device connected to the internet. It has a gazillion of options and supports any protocol you can think of.

It's also designed using the Unix philosophy: do only one thing well. In this spirit, curl only takes care of the network requests. It does not try to be clever and add more features. If you want to have colourized output? Just pipe curl's output to another utility that handles colourization.

For most things, this philosophy is great. You have infinite possibilities connecting small little apps. But this can result in long commands that use lots of options and piping to get the output you want.

Let's look at what happens when we try to retrieve spatie.be using curl.


Curl could reach spatie.be just fine. But it used http:// by default. The result is seemingly a redirect, but the output doesn't show where it redirects to. No attempt is made to colourize the output. That makes sense from curl's viewpoint: it does not try to be clever. But as a human, you might have expected more.

Let's compare that with the output from Visit.


If you don't specify any protocol, Visit will assume https://. The output will be beautifully colourized. At the bottom of the response, you'll see that we added a nice little block with the response code and the duration of the request. The background is green because the response code is in the 200-399 range.

That results block is added to the bottom and not at the top for a reason. The source of most HTML pages is longer than your CLI. If Visit would put the results block on top, you would always have to scroll up to see it.

But what if I actually wanted to see the response from http://. Well... simply add the protocol to your command.


In contrast to curl, Visit will show you where it's redirecting to in the results block.

If you want to show the response after allow redirects have been followed, just add the --follow-redirects option.

Here's the bottom of Visit's output when executing this command:

visit http://spatie.be --follow-redirects


You can see that visit appended a redirects section, listing all followed redirects.

More options and features for humans

The headers of a response can be shown by adding the --headers option.


If you want to see the text displayed on the response, then the surrounding HTML can be overwhelming. Pass the --text option to only show the text. The response will be rendered as something markdown-like, so you can still see where links are pointing to.


Visit can also colourize JSON response. Let's try something with the Star Wars API.


You can pass a --filter option to only display a specific piece of the response. ` screenshot

Visit can also pass a payload. It should be formatted as JSON. Here's a small example.

visit <your-url> --payload='{"testKey":"testValue"}'

When you pass a payload, we'll assume that you want to make a POST request. If you want to use another HTTP verb, pass it explicitly.

visit <your-url> --method=patch --payload='{"testKey":"testValue"}'

Integration with Laravel

Visit has some more tricks up its sleeve. The visit command can reach into a Laravel app and do stuff like:

  • logging in a user
  • visiting a route name
  • reporting the number of queries performed and models hydrated to build up the response.

To enable this, you must install the spatie/laravel-visit package inside your Laravel app.

To visit a route in your Laravel app, ensure you execute visit when the current working directory is your Laravel app. You should also use a relative URL (omitting the app URL).


Your can use these extra options:

  • --user: you can pass this option a user id or email that will be logged in before rendering the response
  • --route: pass this option the route's name; you don't have to specify an URL anymore. For example visit --route=contact
  • --show-exceptions: when your app throws an exception, this option will show that exception.

Here's an example of the route option:


In the stats block at the end, you'll see the number of queries and models hydrated.


You can easily add more stats to the results block. You can learn how to do this in our documentation.

In closing

By creating Visit, I've very much scratched my own itch. By creating my own tool, I can set the defaults that make sense to me. And since I primarily work in Laravel, it made sense to go the extra mile when visiting Laravel apps.

Visit has a couple of more options. Head over to the documentation to learn them all.

Visit is written in PHP. I'm open for PRs to both spatie/visit and spatie/laravel-visit, to make the tools even better. If you're looking for a good project to contribute to, this might be it.

Be sure to also... 🥁 visit our company website to see an extensive list of packages and tools we released previously. If you want to support us, consider buying one of our paid products and courses, or sponsor us via GitHub.

I hope you'll like Visit as much as I do!

Stay up to date with all things Laravel, PHP, and JavaScript.

You can follow me on these platforms:

On all these platforms, regularly share programming tips, and what I myself have learned in ongoing projects.

Every month I send out a newsletter containing lots of interesting stuff for the modern PHP developer.

Expect quick tips & tricks, interesting tutorials, opinions and packages. Because I work with Laravel every day there is an emphasis on that framework.

Rest assured that I will only use your email address to send you the newsletter and will not use it for any other purposes.


What are your thoughts on "Introducing Visit: a CLI tool made for humans to make network requests"?

Comments powered by Laravel Comments
Want to join the conversation? Log in or create an account to post a comment.