wsrv.nl (Images.weserv) API
Free image proxy and resizing API with no key: fetch any public image through a URL, resize, crop, convert format and serve it from a CDN. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the wsrv.nl (Images.weserv) API?
wsrv.nl is a free image proxy and manipulation service needing no API key. Pass any public image URL and it fetches, transforms and serves the result from Cloudflare's CDN, with resizing, cropping, format conversion and filters all controlled by query parameters.
This is an image pipeline you do not have to run. Point it at a public image URL, add parameters for width, height, fit mode, output format and quality, and it returns the transformed result from a CDN edge. Built on libvips, it is fast, and it has been operating free of charge for well over a decade — long enough that a great many sites quietly depend on it.
Two things save the most work in practice. Automatic format negotiation means adding `output=webp` or letting it detect browser support serves modern formats without you maintaining variants. And because it fetches over HTTP itself, it neatly solves the mixed-content problem: an http-only image can be served to an https page through the proxy. The URL you pass does not need its scheme — `?url=picsum.photos/400` works, and https is assumed. Do note that you are handing a third party your image traffic, and that only publicly reachable URLs can be fetched.
Quick facts
- Base URL
https://images.weserv.nl- Authentication
- No API key and no account. The service has been free since 2007 and is funded by donations.
- Rate limit
- No published limit, but the service asks that you not use it as a permanent origin for very high traffic. Results are CDN-cached.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the wsrv.nl (Images.weserv) API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Resize a remote image through the proxy
GET https://images.weserv.nl/?url=picsum.photos/400&w=120
curl 'https://images.weserv.nl/?url=picsum.photos/400&w=120'const res = await fetch("https://images.weserv.nl/?url=picsum.photos/400&w=120");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://images.weserv.nl/?url=picsum.photos/400&w=120", timeout=20)
res.raise_for_status()
print(res.json())# This endpoint returns image/jpeg, not JSON.
# The response body is the image itself, so it can be used directly as an
# <img src="..."> or saved to a file — there is nothing to parse.
#
# Verified: HTTP 200, Content-Type: image/jpegParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
url | query | Required | The source image URL. The scheme can be omitted — https is assumed. picsum.photos/400 |
w / h | query | Optional | Target width and height in pixels. 120 |
fit | query | Optional | How to fit the target box: `inside`, `outside`, `cover`, `fill` or `contain`. cover |
output | query | Optional | Output format — `webp`, `avif`, `jpg`, `png` or `gif`. webp |
q | query | Optional | Output quality, 1 to 100. 80 |
blur / sharp / filt | query | Optional | Image filters: blur radius, sharpening, and named filters such as greyscale or sepia. 5 |
we | query | Optional | Set to serve WebP to browsers that support it and the original format otherwise. 1 |
Response fields
(body)image- The transformed image bytes. There is no JSON — the URL is the API.
Content-Typeheader- Reflects the output format, which is JPEG unless you asked for something else.
(CORS)header- A permissive Access-Control-Allow-Origin header is sent, so canvas and fetch access work — unusual among image services.
(errors)image- Failures come back as a rendered error image rather than an HTTP error status, which can hide problems in an `img` tag.
What you can build with the wsrv.nl (Images.weserv) API
- Serve responsive image sizes without building an image pipeline
- Convert legacy JPEGs to WebP or AVIF on the fly
- Proxy http-only images into an https page without mixed-content warnings
- Generate thumbnails from user-supplied image URLs
Common errors and how to fix them
An error image is displayed
Failures are rendered as an image rather than returned as an HTTP status.
Fix: Fetch the URL directly when debugging rather than relying on the `img` tag, which will happily display the error picture.
Source could not be fetched
The URL is not publicly reachable.
Fix: The proxy fetches from the open internet. Anything behind authentication, a firewall or localhost will fail.
Unexpected crop
The default fit mode may not be what you assumed.
Fix: Set `fit` explicitly. `cover` crops to fill, `inside` scales to fit within the box.
Slow first request
The first fetch of an image is uncached.
Fix: Subsequent requests come from the CDN edge. Warm frequently used sizes if first-paint latency matters.
wsrv.nl (Images.weserv) API — frequently asked questions
Is wsrv.nl really free?
Yes, with no key and no account. It has operated free of charge since 2007 and is donation-funded. The operators ask that you not treat it as a permanent origin for very high traffic.
What can it do to an image?
Resize, crop, rotate, convert format, adjust quality, blur, sharpen and apply named filters, all through query parameters on the URL.
Can it fetch images from behind a login?
No. Only publicly reachable URLs can be proxied, since the service fetches them itself over the open internet.
Why do I see a picture of an error message?
Because failures are rendered as an image rather than returned as an HTTP error. Request the URL directly when debugging to see what actually went wrong.
Tools that pair with this API
Bulk Image Resizer
Resize up to 30 images at once by width, height, percentage or exact dimensions. Batch photo resizing that runs entirely in your browser.
Convert to WebP
Convert JPG, PNG and AVIF images to WebP with an adjustable quality slider. Batch convert in your browser — smaller files, faster pages, no uploads.
Compress Image to Size (KB)
Compress a JPG, PNG or WebP to an exact file size in KB — 20KB, 50KB, 100KB, 200KB presets for online forms. Free and 100% in-browser.
wsrv.nl (Images.weserv) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.