# Smart Placement Probe (/docs/experiments/smart-placement-probe)



Demonstrate **Workers Smart Placement** by fetching an origin URL and reporting latency alongside the request colo. `wrangler.json` sets `"placement": { "mode": "smart" }` so Cloudflare can place the Worker closer to back-end origins based on traffic patterns.

## API Reference [#api-reference]

### GET / [#get-]

Explains Smart Placement and returns app metadata.

### GET /probe [#get-probe]

Fetch a URL and report status, latency, and colo.

**`url`** `string` (required)

`http://` or `https://` target.

#### Example Request [#example-request]

```bash
curl "https://your-worker.workers.dev/probe?url=https://example.com"
```

#### Success Response [#success-response]

```json
{
  "url": "https://example.com/",
  "status": 200,
  "latencyMs": 42,
  "cf": { "colo": "SJC" },
  "workerPlacement": "Smart Placement may move this Worker closer to back-end origins based on request patterns."
}
```

`cf.colo` comes from the incoming `request.cf` when available (empty object in local dev).

#### Error Codes [#error-codes]

* `400` - Missing or non-http(s) url (`INVALID_URL`)

## Use Cases [#use-cases]

* Learn Smart Placement configuration and behavior
* Measure origin latency from the serving colo
* Compare placement effects after repeated traffic to distant origins
* Debug whether a Worker is running near your back-end

## Limitations [#limitations]

* Smart Placement effects are most visible after deploy with repeated traffic
* Single PoP / colo per request - not a multi-region map
* `cf.colo` may be empty in local `wrangler dev`
* No control plane API to force a specific colo

## Deployment [#deployment]

<Steps>
  <Step>
    ### Click the deploy button [#click-the-deploy-button]

    [![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/shrinathsnayak/cloudflare-experiments/tree/main/apps/experiments/smart-placement-probe)
  </Step>

  <Step>
    ### Deploy [#deploy]

    No extra bindings - `placement.mode: "smart"` is already set in `wrangler.json`.
  </Step>

  <Step>
    ### Test your deployment [#test-your-deployment]

    ```bash
    curl "https://your-worker.workers.dev/probe?url=https://example.com"
    ```
  </Step>
</Steps>

## Local Development [#local-development]

```bash
cd apps/experiments/smart-placement-probe
npm install
npm run dev
```

```bash
curl "http://localhost:8787/probe?url=https://example.com"
```

<Callout>
  Smart Placement behavior is most visible after deploy with repeated requests to distant origins.
</Callout>

## Cloudflare Features Used [#cloudflare-features-used]

* **[Workers](https://developers.cloudflare.com/workers/)** - Edge compute runtime
* **[Smart Placement](https://developers.cloudflare.com/workers/configuration/smart-placement/)** - Place Workers closer to back-end origins
