# https://tunnels.io/learn

Learn

# Tunnels, explained properly.

Short, direct answers to the questions developers actually search for. What a tunnel is, how reverse tunnels and SSH forwarding work, and how to get a local server onto the internet without breaking anything.

[Start with the basics →](https://tunnels.io/learn/what-is-tunneling) [Get started free](https://tunnels.io/get-started)

## Concepts

The vocabulary, without the hand-waving.

[What is tunneling? Wrapping one protocol inside another so traffic crosses a network that would not otherwise carry it. Start here.](https://tunnels.io/learn/what-is-tunneling) [What is a reverse tunnel? The one that matters for local development, because it works from behind NAT with no inbound port open.](https://tunnels.io/learn/what-is-a-reverse-tunnel) [What is SSH tunneling? Local, remote and dynamic port forwarding, the commands that do each, and where SSH stops being enough.](https://tunnels.io/learn/what-is-ssh-tunneling) [What is a VPN tunnel? How a VPN encapsulates traffic between two endpoints, and why it is a different tool from a public URL.](https://tunnels.io/learn/what-is-a-vpn-tunnel) [What is split tunneling? Sending some traffic through the VPN and the rest straight out, and the trade-offs that come with it.](https://tunnels.io/learn/what-is-split-tunneling) [localhost vs 127.0.0.1 A hostname and an address are not the same thing, and the difference is why your server is not reachable.](https://tunnels.io/learn/localhost-vs-127-0-0-1) [HTTP vs HTTPS tunnels Where TLS gets terminated, and why webhook providers increasingly refuse anything but HTTPS.](https://tunnels.io/learn/http-vs-https-tunnels) [What is a reserved subdomain? Why a URL that changes on every restart quietly breaks every webhook you registered with it.](https://tunnels.io/learn/what-is-a-reserved-subdomain)

## How to

The tasks people are actually trying to finish.

[How to expose localhost to the internet Four approaches compared: a tunnel, SSH forwarding, router port forwarding, and just deploying it. With the honest trade-offs of each.](https://tunnels.io/learn/how-to-expose-localhost) [How to test webhooks locally Stripe, GitHub and every other provider need a public HTTPS URL. How to give them one that points at your laptop.](https://tunnels.io/learn/how-to-test-webhooks-locally) [How to share a local site with a client Show work in progress without deploying it, and without explaining to a client why the link stopped working.](https://tunnels.io/learn/how-to-share-a-local-site-with-a-client) [How to test a mobile app against localhost Your phone cannot see your laptop's localhost. Three ways to point a real device at your local API, and when each breaks.](https://tunnels.io/learn/how-to-test-a-mobile-app-against-localhost)

## Reading about it is slower than trying it.

The free plan needs no credit card. One command gives your local server a public HTTPS URL.

[Get started →](https://tunnels.io/get-started) [Compare the alternatives](https://tunnels.io/compare)
