Image Upscaler
Upload Image
Drag & drop an image or click to browse
PNG, JPG, JPEG, WebP (max 10MB)
Settings
About the AI Image Upscaler
The AI Image Upscaler enlarges images 2× or 4× using a Real-ESRGAN ONNX model that runs entirely in your browser via onnxruntime-web. No server, no upload, no rate limits. The model recovers detail through learned image priors — sharper than bilinear upscaling, faster than cloud APIs, and private enough to use on internal mockups, design comps, or photos you would not paste into a third-party service. The first run loads the model (~25 MB compressed); subsequent runs are cached.
Updated: May 8, 2026
Related Tools
How to use the upscaler
- Drop or click to upload an image (PNG, JPEG, WebP). The first upload triggers the ONNX model download; this is a one-time ~25 MB download cached by your browser.
- Pick the upscale factor: 2× (faster, suitable for slight enlargements) or 4× (slower, for printed materials and high-DPI displays).
- Click Upscale. Inference runs in a Web Worker via onnxruntime-web — the page stays responsive while the model processes the image.
- Preview the result side-by-side with the original and a zoom slider. Download as PNG to preserve the upscale.
- For batch processing, upload one image at a time. The tool is designed for single-image quality work, not bulk pipelines.
Common use cases
- Recovering low-resolution screenshots for documentation. A 400×300 screenshot from a customer support ticket becomes a 1600×1200 image suitable for a slide.
- Print preparation. Web-resolution images (72 dpi) get upscaled to 4× for 300 dpi print without obvious blurring.
- Restoring older photo assets. Family photos scanned at 600 dpi can go to 2400 dpi for archival.
- Game / design mockups. Concept art and design comps benefit from 2× when projected on large displays.
- Historical document digitization. Old document scans gain readability after 2× upscale, especially for OCR pre-processing.
Privacy and security
The Real-ESRGAN model is downloaded once (about 25 MB compressed) and stored in your browser cache. Inference runs locally via onnxruntime-web in a Web Worker — your image bytes never leave the browser. This is critical for upscaling internal mockups, customer support screenshots containing PII, or any image you would not upload to a cloud service. Disconnect from the network after the model loads and the upscaler still works.
Tips and pitfalls
- Quality varies by input. Real-ESRGAN was trained on natural images; it works well on photos, screenshots with text, and mixed content. Pure-vector / pure-text content may show artifacts — for those, vector regeneration or font-aware upscaling beats the AI model.
- Memory limits. The 4× factor on a 4MP input produces a 64MP output — about 250 MB of decoded RGBA in memory. Browsers may run out on mid-range hardware; 2× is safer for large inputs.
- JPEG compression artifacts get amplified. If your input has visible blockiness, the upscaler enlarges those artifacts. Consider denoising before upscaling.
- Faces. Real-ESRGAN is not face-specialized — for portraits, dedicated face-restoration models (GFPGAN, CodeFormer) produce cleaner results, but those models are larger and not bundled here.
- Output is PNG only by default — PNG preserves the upscaled detail without lossy compression. For web use you may want to re-compress as JPEG/WebP after downloading.
Frequently Asked Questions
- Which upscaling model is used?
- Real-ESRGAN (xinntao/Real-ESRGAN) — a GAN-based super-resolution model that recovers high-frequency detail through learned priors. The ONNX-converted version runs in browsers via onnxruntime-web with WebAssembly + SIMD acceleration.
- Is my image uploaded?
- No. The model runs in your browser via onnxruntime-web. Images are decoded into ImageData in JavaScript, fed to the model in a Web Worker, and the result is decoded back into a canvas — all locally. No outbound request happens during inference.
- How big is the model download?
- About 25 MB compressed. Downloaded once on first use and cached by the browser via the standard HTTP cache. Subsequent uses load from cache instantly. The model is hosted on the same origin as the page.
- Why does the first upscale take longer?
- The model file (25 MB) downloads on first use. Subsequent upscales reuse the cached model and run in seconds. If you clear browser cache, the next upscale will re-download.
- Why is 4× slower than 2×?
- 4× upscaling produces 16× the pixel count (each input pixel becomes 16 output pixels). The model runs proportionally more inference operations. On a typical laptop, a 1MP input takes ~3 seconds at 2× and ~12 seconds at 4×.
- What about face-specific upscaling?
- Real-ESRGAN handles general images well but is not face-specialized. For portraits with visible faces, dedicated models (GFPGAN, CodeFormer, Topaz Photo AI) produce cleaner skin and feature reconstruction. Those models are larger and not bundled here.
- Maximum input size?
- 4MP (about 2000×2000) is the practical limit on most hardware due to browser memory. Beyond that, 4× upscaling can run out of memory. Split larger images into tiles, upscale each, and stitch — or use a desktop tool (Real-ESRGAN-ncnn-vulkan, Topaz, ESRGAN-Tile) for very large inputs.
- Why ONNX Runtime instead of TensorFlow.js?
- onnxruntime-web has better performance for CNN-style super-resolution models and supports the full ONNX operator set used by Real-ESRGAN. TensorFlow.js works but requires re-training or model conversion for full compatibility.