Skip to content
Cloudflare Docs

Tunnel

Manage Cloudflare Tunnels directly from Wrangler. Create, run, and manage tunnels that securely connect your local services to Cloudflare's network — no public IPs required.

Wrangler manages the cloudflared binary automatically. On first use, Wrangler will prompt you to download cloudflared to a local cache directory. You can skip this by installing cloudflared yourself and adding it to your PATH, or by setting the CLOUDFLARED_PATH environment variable to point to an existing binary.

tunnel create

Create a new remotely managed Cloudflare Tunnel.

wrangler tunnel create <NAME>
  • NAME string required
    • A name for your tunnel. Must be unique within your account.

Tunnels created via Wrangler are always remotely managed — configure them in the Cloudflare dashboard or via the API.

After creation, use wrangler tunnel run with the tunnel ID to start the tunnel.

Terminal window
npx wrangler tunnel create my-app
Creating tunnel "my-app"
Created tunnel.
ID: f70ff985-a4ef-4643-bbbc-4a0ed4fc8415
Name: my-app
To run this tunnel, configure its ingress rules in the Cloudflare dashboard, then run:
wrangler tunnel run f70ff985-a4ef-4643-bbbc-4a0ed4fc8415

The following global flags work on every command:

  • --help boolean
    • Show help.
  • --config string (not supported by Pages)
  • --cwd string
    • Run as if Wrangler was started in the specified directory instead of the current working directory.

tunnel delete

Delete a Cloudflare Tunnel from your account.

wrangler tunnel delete <TUNNEL> [OPTIONS]
  • TUNNEL string required
    • The name or UUID of the tunnel to delete.
  • --force boolean optional
    • Skip the confirmation prompt.
Terminal window
npx wrangler tunnel delete f70ff985-a4ef-4643-bbbc-4a0ed4fc8415
Are you sure you want to delete tunnel "f70ff985-a4ef-4643-bbbc-4a0ed4fc8415"? This action cannot be undone. (y/n)
Deleting tunnel f70ff985-a4ef-4643-bbbc-4a0ed4fc8415
Tunnel deleted.

The following global flags work on every command:

  • --help boolean
    • Show help.
  • --config string (not supported by Pages)
  • --cwd string
    • Run as if Wrangler was started in the specified directory instead of the current working directory.

tunnel info

Display details about a Cloudflare Tunnel, including its ID, name, status, and creation time.

wrangler tunnel info <TUNNEL>
  • TUNNEL string required
    • The name or UUID of the tunnel to inspect.
Terminal window
npx wrangler tunnel info f70ff985-a4ef-4643-bbbc-4a0ed4fc8415
Getting tunnel details
ID: f70ff985-a4ef-4643-bbbc-4a0ed4fc8415
Name: my-app
Status: healthy
Created: 2025-01-15T10:30:00Z
Type: cfd_tunnel

The following global flags work on every command:

  • --help boolean
    • Show help.
  • --config string (not supported by Pages)
  • --cwd string
    • Run as if Wrangler was started in the specified directory instead of the current working directory.

tunnel list

List all Cloudflare Tunnels in your account.

wrangler tunnel list

The output includes the tunnel ID, name, status, and creation date for each tunnel. Only non-deleted tunnels are shown.

Terminal window
npx wrangler tunnel list
Listing Cloudflare Tunnels
ID Name Status Created
f70ff985-a4ef-4643-bbbc-4a0ed4fc8415 my-app healthy 2025-01-15T10:30:00Z
550e8400-e29b-41d4-a716-446655440000 api-tunnel inactive 2025-01-10T15:45:00Z

The following global flags work on every command:

  • --help boolean
    • Show help.
  • --config string (not supported by Pages)
  • --cwd string
    • Run as if Wrangler was started in the specified directory instead of the current working directory.

tunnel run

Run a Cloudflare Tunnel using the cloudflared daemon. This starts a persistent connection between your local machine and Cloudflare's network.

wrangler tunnel run [TUNNEL] [OPTIONS]
  • TUNNEL string optional
    • The name or UUID of the tunnel to run. Required unless --token is provided.
  • --token string optional
    • A tunnel token to use directly. Skips API authentication.
  • --log-level string (default: info) optional
    • Log level for cloudflared. Does not affect Wrangler logs (controlled by WRANGLER_LOG). One of: debug, info, warn, error, fatal.

Named tunnels are remotely managed — configure ingress rules (which local services to expose) in the Cloudflare dashboard or via the API before running the tunnel.

There are two ways to run a tunnel:

By tunnel name or ID (fetches the token via the API):

Terminal window
npx wrangler tunnel run my-app

By token (no API authentication needed — useful for CI/CD or remote servers):

Terminal window
npx wrangler tunnel run --token eyJhIjoiNGE2MjY...

Press Ctrl+C to stop the tunnel. Wrangler will send a graceful shutdown signal to cloudflared before exiting.

The following global flags work on every command:

  • --help boolean
    • Show help.
  • --config string (not supported by Pages)
  • --cwd string
    • Run as if Wrangler was started in the specified directory instead of the current working directory.

tunnel quick-start

Start a free, temporary tunnel without a Cloudflare account using Quick Tunnels. This is useful for quick demos, testing webhooks, or sharing local development servers.

wrangler tunnel quick-start <URL>
  • URL string required
    • The local URL to expose (for example, http://localhost:8080).

The tunnel is assigned a random *.trycloudflare.com subdomain and lasts for the duration of the process.

Terminal window
npx wrangler tunnel quick-start http://localhost:8080
Starting quick tunnel to http://localhost:8080...
Your tunnel URL: https://random-words-here.trycloudflare.com

The following global flags work on every command:

  • --help boolean
    • Show help.
  • --config string (not supported by Pages)
  • --cwd string
    • Run as if Wrangler was started in the specified directory instead of the current working directory.