Select a low-res photo or Memoji to enlarge it and improve its quality.

Image quality:
Noise reduction

Load a random demo


What is upscaling?

Upscaling (or super resolution) attempts to reconstruct a higher-resolution version of an image from a low-resolution image. As part of the upscaling process, the sharpness or detail in an image may be improved. Ideally, this should look better than simply resizing the dimensions of the low-res image (e.g with bicubic upscaling). Learn more about image super resolution.

What does Ojoy do?

Ojoy upscales low-resolution Memoji and photos in the browser with 100% of the upscaling process performed client-side. Upscaling can be helpful for improving the resolution of stickers, avatars, logos...anything you don't have access to the original high-resolution source of. The training set used by Ojoy is currently the same one used by Upscaler, image-super-resolution. In tests, I have found this works reasonably well for photographic content and even illustrations, but less so images containing text.

Why does Ojoy recommend a background color?

If the image you are selecting uses an alpha-channel / has a transparent background (such as a Memoji, sticker or logo), Ojoy will recommend setting a solid background color. This is a limitation of the models used which only support 3-channels instead of 4. Not setting an alpha channel will result in a black background color otherwise being visible in the output.

What is the maximum resolution input I should use?

Ojoy should be used on images with a low or medium resolution. While you certainly can try processing higher resolution images (e.g 2x, 1000px+), keep in mind that this can both take longer and put a strain on system resources like the GPU.

What is Ojoy built with?

Ojoy uses UpscalerJS, Waifu2x, Waifu2xTF, TensorFlow, models from image-super-resolution and HTML canvas. I strongly recommend trying out to learn more about what Upscaler can do for you.

Ojoy is otherwise built using vanilla JavaScript and Parcel. The import-on-interaction pattern is used to only load Upscaler and the relevant models when interacting with the app.