Rendex
Use Case

Screenshot Any Page on Any Device — One Parameter

Set device: "iphone_15" and Rendex renders at that device's exact viewport, pixel density, and user-agent. Capture desktop, iPhone, Pixel, and iPad in one pass for responsive QA and mobile previews — no device lab, no hand-tuned browser descriptors.

The Problem

Verifying a page on mobile usually means juggling browser device descriptors, hand-tuning viewport widths and devicePixelRatio, and spoofing user-agents one device at a time. Getting the iPhone vs. Pixel vs. iPad combination right — and keeping it accurate as new devices ship — is fiddly, and a wrong pixel ratio gives you blurry or mis-scaled captures.

The Solution

Rendex ships curated device presets. Pass a single device value — desktop, iphone_15, iphone_se, pixel_8, ipad, or ipad_pro — and the API sets the viewport, deviceScaleFactor, and user-agent to match the real device. Loop the same URL over several presets to build a responsive QA set, or feed a preset capture into a device-frame mockup. Explicit width, height, or userAgent still win when you need a custom size.

See it in action

A single screenshot request with a device parameter on the left, and the same page rendered across iPhone, Pixel, and iPad device frames on the right.

Get Started in Minutes

responsive-set.sh
# Build a responsive preview set across device presets (GET → great for <img>)
for d in desktop iphone_15 ipad pixel_8; do
  curl -s -H "Authorization: Bearer YOUR_API_KEY" \
    "https://api.rendex.dev/v1/screenshot?url=https://example.com&device=$d" \
    -o "preview-$d.png"
done
responsive_set.py
from rendex import Rendex

rendex = Rendex("YOUR_API_KEY")

# One responsive QA pass across real device presets.
for device in ["desktop", "iphone_15", "ipad", "pixel_8"]:
    shot = rendex.screenshot(url="https://example.com", device=device)
    with open("preview-" + device + ".png", "wb") as f:
        f.write(shot.image)
responsive-set.js
import Rendex from "@copperline/rendex";
import { writeFileSync } from "fs";

const rendex = new Rendex("YOUR_API_KEY");

// Capture the same URL on every device your users are on.
for (const device of ["desktop", "iphone_15", "ipad", "pixel_8"]) {
  const shot = await rendex.screenshot({ url: "https://example.com", device });
  writeFileSync("preview-" + device + ".png", shot.image);
}

100 free API calls/month — no credit card required. Get your API key and start building.

Built for This Use Case

Six Real Device Presets

desktop, iphone_15, iphone_se, pixel_8, ipad, and ipad_pro — each sets the matching viewport, pixel density, and user-agent in a single device field.

Accurate Viewport & Scale

Every preset uses the device's true CSS viewport and deviceScaleFactor, so mobile captures come back crisp and correctly sized — not a desktop page squeezed narrow.

Responsive QA in One Loop

Run the same URL across presets to catch layout breaks before release. Pairs with batch rendering to check hundreds of pages on every device at once.

Override When You Need To

Need a size no preset covers? Pass explicit width, height, or userAgent and those win over the preset — presets are a fast default, not a cage.

Device-Frame Mockups

Feed a mobile-preset capture straight into a phone or tablet frame for landing pages, app store shots, and marketing mockups — no manual resizing.

Free on Every Plan

Device presets are available on every plan, including Free. No add-on, no tier gate — just one parameter on the same render call.

Start Free, Scale as You Grow

100 calls/month free. Starter at $69/mo for 10K calls (or $58/mo billed annually — 2 months free). Pro at $179/mo for 100K calls.

Frequently Asked Questions

Related Resources