[ live ]

You don't look at Refract. You type it.

An image API with no dashboard and no console — its whole interface is a URL. Point Refract at an origin you already have; originals are fetched on demand and cached at the edge, never stored permanently.

refract — demo.refract.dev enter run
$ curl -sI "https://demo.refract.dev/hero.jpg?w=1200&fm=auto&q=80"
HTTP/2 200
content-type: image/avif    ← fm=auto negotiated from Accept
x-cache: HIT · served from edge  # cached response p50 21 ms
$

capabilities · 3

Three things, on every request.

Transform, optimize, and deliver — each driven by the same URL. No pipeline to run, no build step to wait on.

  • [+]
    transform

    Ten chainable URL parameters — resize, crop, rotate, and blur in any order. Smart crop keeps the subject in frame.

    ?w=1200&fit=crop&crop=smart
  • [+]
    optimize

    fm=auto negotiates AVIF → WebP → JPEG from the request's Accept header — a 62% average payload reduction versus source JPEG.

    ?fm=auto&q=80
  • [+]
    deliver

    41 edge locations. Cached response p50 21 ms, 98.6% cache hit ratio, cold transform p50 89 ms / p99 340 ms.

    served from the nearest edge

demo · before / after

Type the parameters. Watch the file change.

A working request line. Seven parameters redraw the image in the browser; fm, q, and dpr are chosen at the edge and ride the URL tagged — named, never faked.

refract preview source
source
Sample input: a ceramic vessel on a pale surface.
result
The sample input redrawn by the parameters currently set.

deliver · measured

The numbers, printed like output.

Fig 1. cache hit ratio 98.6%
Fig 2. cached response p50 21 ms
Fig 3. cold transform p50 89 ms / p99 340 ms
Fig 4. edge locations 41
Fig 5. optimize — average payload reduction vs source JPEG 62%
Fig 6. uptime SLA (Scale) 99.95%

Point Refract at a URL and read the response.

Create a key, connect an origin, and request your first transform. The quickstart is three steps.