Real-ESRGAN Download: Install and Use Guide
Learn how to download Real-ESRGAN, install it safely, and start using it for upscaling with fewer setup mistakes.

Hi, I’m Dora. The first time I typed “real-esrgan download,” I wasn’t chasing a miracle. I just wanted to clean up a fuzzy product shot without opening a dozen tabs or wrestling with a GUI that tries to be helpful. I’d seen Real-ESRGAN mentioned for years, but kept skipping it because every guide sounded louder than the tool. In early March 2026, I finally sat down with a quiet goal: install it safely, run a few images, and see where it fits.
Here’s what I learned, where to get the right files, and the setup snags that tripped me before they became muscle memory.

What Real-ESRGAN Is Best For
Image upscaling basics
I treat upscaling as repair more than magic. Real-ESRGAN enlarges a low-resolution image and estimates plausible detail; it cannot recover the exact pixels that were lost. That distinction matters when the source is a screenshot from an old blog or a compressed photo you can’t retake. If you only need an occasional browser workflow, WaveSpeedAI also has an image upscaler. The rest of this guide is about running Real-ESRGAN locally.
When I tested in March 2026 on a Windows 11 laptop (RTX 3060) and a MacBook Air (M2), Real-ESRGAN produced solid, steady results on:
- Old UI screenshots and slide graphics
- Product labels, packaging, and simple textures
- Logos without tiny text
It’s not a “wow” tool; it’s a dependable one. That’s a compliment. I still check any lettering against the original before using the result.
Where it still holds up
I compared it against a few paid options and wrappers I already use. Real-ESRGAN holds up when:
- The input is reasonably clean but small.
- You care about consistency across a batch more than perfection in one image.
- You want a command you can repeat without changing tools every month.
Where it strains: very fine text, faces, and busy natural scenes such as foliage or hair. You can add a face-restoration step, but I prefer to scale first and decide afterward whether a second pass is worth it.
Where to Download Real-ESRGAN Safely
Official or trusted sources
Start at the maintainer’s GitHub repository. It links to both the Python implementation and the portable ncnn-vulkan build.
For a command-line tool without Python, look for the Windows, macOS, or Ubuntu archive in the official Real-ESRGAN releases. Don’t assume the release marked Latest contains the portable program: the newer v0.3.0 release focuses on code and models, while v0.2.5.0 lists the OS-specific ncnn archives. Check the archive name and its contents before running anything.
PyPI’s realesrgan page is a Python package listing, not the portable CLI download. For the Python route, I would still start with the maintainer’s repository and its installation instructions. On a Windows NVIDIA machine, use the official PyTorch installer selector to choose a build your driver supports.
I skip third-party “download” pages and mirrors when the maintainer’s files are available.

Files you actually need
The two routes use different model files:
- ncnn-vulkan: Download the archive for your OS and keep the executable beside its
modelsfolder. The portable archive includes the models; you do not need separate.pthweights, CUDA, or PyTorch. - Python/PyTorch: Clone the repository. For the general 4× model, use
RealESRGAN_x4plus; for anime art, useRealESRGAN_x4plus_anime_6B. Their weights are.pthfiles. The inference script can download a missing supported weight on first run, or you can get it from the official releases and put it inweights/before working offline.
The names are easy to mix up. ncnn uses realesrgan-x4plus with -n; Python uses RealESRGAN_x4plus.
A Quick Check Before You Run the Download
I learned to check what I had downloaded before debugging the install. A Real-ESRGAN model file, a Python source archive, and the portable ncnn program are three different things.
| If you downloaded… | Check for… | If it is missing… |
|---|---|---|
| An OS-specific ncnn zip | realesrgan-ncnn-vulkan (or .exe on Windows) and a models folder | Re-extract the full archive. A lone executable may not find its models. |
| The Python repository | inference_realesrgan.pyand requirements.txt | Go back to the maintainer’s repository; a .pth file alone cannot run the script. |
| A .pth model weight | A matching Python model name, such as RealESRGAN_x4plus | Do not put it in ncnn’s models folder. The two routes use different model formats. |
For the portable version, I open a terminal in the extracted folder and run .\realesrgan-ncnn-vulkan.exe -h on Windows, or ./realesrgan-ncnn-vulkan -h on macOS and Ubuntu. If the help text appears, I know the executable starts and can check its model and output options before feeding it an image. If it reports a missing model, I check the folder I am running it from before reinstalling anything. A working help command is a setup check, not proof that a download is safe; the source still needs to be the maintainer’s release.
How to Install Real-ESRGAN
Basic setup path
I tried two paths in March 2026.
- ncnn-vulkan: quickest first result
Download the archive that matches your system from the official release page: the windows.zip file for Windows, macos.zip for macOS, or ubuntu.zip for Ubuntu. Extract the whole archive into a tools folder. Keep the executable, model files, and any bundled README together.
Open a terminal in that extracted folder. On Windows, use PowerShell and run the .exe; on macOS or Ubuntu, run the file without the .exe extension. If macOS or Linux says permission is denied, run chmod u+x realesrgan-ncnn-vulkan in that folder, then try again. I leave PATH alone until the first image works.
- Python/PyTorch: more control
Clone the main repository and work inside a virtual environment. Install PyTorch using the official selector for your OS and compute platform. Then follow the repository’s dependency steps: install basicsr, facexlib, and gfpgan; install requirements.txt; and run its setup command. On my 3060, the PyTorch build I chose needed a CUDA 12.x-compatible driver. A different build can have different requirements, so I wouldn’t copy a CUDA install command from an old tutorial.
For a first run, keep the input image in the repository folder and let the script create results/. That removes two path questions at once.
What first-time users usually miss
- The two model folders differ. ncnn reads its bundled
modelsdirectory. Python looks for.pthweights underweights/and may download a missing one. Moving only the ncnn executable or using a Python model name in an ncnn command will fail. - “2×” does not always mean a separate 2× model. The ncnn CLI accepts
-s 2, while Python’s--outscale 2can resize the result of a 4× model. However, with the ncnnrealesrgan-x4plusmodel,-s 2can produce broken tiled output. Use-s 4and resize afterward, or use Python’s--outscale 2. Pick the output size you need, then inspect the image rather than assuming the number tells you how good it will look. - A GPU is not guaranteed just because one is installed. Check the selected PyTorch build and device before diagnosing Real-ESRGAN itself. On an Apple Silicon Mac, don’t assume the Python path will use the M2 GPU simply because the ncnn route ran.

How to Run Your First Test
Image input workflow
I started with one small, ugly screenshot. Put input.jpg in the extracted ncnn folder. These commands name the general model explicitly, so the result does not depend on a default setting:
# Windows PowerShell
.\realesrgan-ncnn-vulkan.exe -i input.jpg -o output.png -n realesrgan-x4plus -s 4
# macOS or Ubuntu
./realesrgan-ncnn-vulkan -i input.jpg -o output.png -n realesrgan-x4plus -s 4
Check that output.png appears beside the executable, then open it at full size and inspect edges and text.
For Python, run this from the cloned repository:
python inference_realesrgan.py -n RealESRGAN_x4plus -i input.jpg -o results --outscale 4 --ext png
Here, -o results names an output folder, not a file. With the script’s default suffix, look for results/input_out.png. If the weight is missing, the first run may spend time downloading it.
The first run took me a couple of minutes end-to-end, mostly because I double-checked I was using the right model. After two or three images, I stopped thinking about it.
Output settings for beginners
I keep it simple at first:
- Scale: Try 2× for an image that will be compressed again; use 4× when you need room to crop. Check the actual destination size before choosing.
- Format: Keep PNG when you’ll edit further. Use a smaller final format only after you have checked the image.
- Model: Start with the general x4plus model for a photograph or product shot. Try the anime model for illustration or line art; don’t assume it will preserve tiny lettering.
If a result looks plasticky, I try a smaller output size and inspect it against the source. If tiny text is still wrong, I replace the text manually. Enlarging it does not make an inaccurate letter accurate.
Common Setup Problems and Fixes
Missing dependencies
- PyTorch cannot see the NVIDIA GPU: Check
torch.cuda.is_available()inside the same virtual environment used to run Real-ESRGAN. If it returnsFalse, revisit the PyTorch build and driver combination in the official selector. - Windows reports a missing runtime DLL: Check the exact DLL name before installing anything. If it is a Visual C++ runtime dependency, get the matching redistributable from Microsoft, not a DLL download site.
- macOS blocks the downloaded binary: First confirm it came from the maintainer’s release and that you extracted the complete archive. If macOS still blocks it, follow Apple’s instructions for reviewing an unidentified app; don’t clear a security warning for an unverified mirror.
Path / model file issues
- Python says a model cannot load: Check the
-nspelling, theweights/folder, and whether the first-run download completed. The general model name isRealESRGAN_x4plus, without.pthin the command. - ncnn says it cannot load a model: Run from the extracted folder and confirm
models/is still there. The CLI’s default model path is relative to where you run it; moving only the executable is an easy way to break that relationship. - The command finishes but you cannot find the image: For ncnn, check the path after
-o. For Python, check the output directory and its_outfilename. Quote any path that contains spaces.
GPU or performance issues
- Out-of-memory error: Try a smaller tile. For Python, add
--tile 128; for ncnn, try-t 128. Tiling can be slower, but it may let a large image finish. - Vulkan crash: Check the graphics driver and try one small image before starting a batch. On older Intel iGPUs, I’ve seen it fail silently; trying a different machine saved me time.
- Long laptop batches: Watch thermals before increasing ncnn’s thread settings. I would rather finish steadily than chase a faster first minute and lose the batch.

Real-ESRGAN in a Real Workflow
When it’s enough on its own
Real-ESRGAN earns its keep on quiet, repeatable tasks:
- Refreshing old screenshots for documentation without recapturing every screen
- Making small product shots usable for a newsletter, after checking labels and edges
- Upscaling icons and simple graphics before a design pass
In my March tests, a batch of 40 screenshots took about 8–10 minutes on the 3060 using ncnn-vulkan. That is one batch on one machine, not a speed promise. It was light on my attention: start it, check an output, move on.
When users move to Topaz or wrappers
If you want a friendly UI or saved batch presets, a wrapper may be more comfortable than a terminal. Upscayl and chaiNNer provide UI routes for this kind of work. In the images I compared, Topaz handled some faces, hair, and busy textures better; I would test the same crop in both tools before paying for one based on my results.
I still reach for Real-ESRGAN first when I need a repeatable 2× or 4× pass without much fuss. If the image fights back—tiny serif text, noisy backgrounds, or a face that looks slightly wrong—I stop and check the original. A second tool can help. Sometimes the honest fix is to replace the damaged element by hand.
Previous posts:
/filters:quality(82)/media/images/6a56adde-dadf-4500-9ea7-a1f816ab303c.webp)
/filters:quality(82)/media/images/802a68fa-1373-44c6-9d62-08d195a4e412.webp)
/filters:quality(82)/media/images/1773962750383987480_n3hqzHRZ.webp)