The URL is the darkroom.
Refract turns a plain image address into a set of instructions — width, format, crop, blur — and renders the result at the edge, the moment it is asked for.
Refract points at an image you already host, and never asks for a copy of it. Each original is fetched from your origin on demand, rendered into the variant a URL describes, and cached at the edge; the source is kept only as long as the transform takes, and is never stored permanently. What reaches the browser is precisely the picture the parameters asked for — and nothing was re-uploaded to make it.
Transform
Ten chainable URL parameters resize, recut, rotate, and blur an image. Smart crop keeps the subject in frame while the frame around it changes.
Optimize
fm=auto negotiates AVIF, WebP, or JPEG from the request's Accept header, trimming an average of 62% from the source JPEG without a line of markup changing.
Deliver
41 edge locations answer a cached request in a median of 21 ms, at a 98.6% hit ratio; a cold transform clears in 89 ms at the median, 340 ms at the tail.
The transform, live
The line beneath a picture is written after the picture. Here it is written by you, and the picture obeys it. Change any word set in black and the plate at the right repaints — no request is in flight, and nothing is fetched.
The sentence grows. Set a height and it takes a fit; a fit that crops takes a crop; contain opens a letterbox, and a letterbox takes a bg. Three of the seven are waiting on that height.
† Not controls. fm=auto resolves AVIF → WebP → JPEG from the request's Accept header and q is applied at the edge — a browser cannot demonstrate either re-encode. dpr is reported by the browser itself.
The reference is three pages long, and the first transform is one line of code. Start where the parameters are documented.
Start building