Topaz Labs Wonder 3.5

Wonder 3.5 is Topaz Labs' updated generative image enhancement and upscaling model for recovering detail and realism from both high-quality and degraded source images. It builds on Wonder 3 with finer detail generation, fewer repetitive patterns, improved handling of visual noise, and better precision on structured content such as tables, charts, and text-heavy graphics. It is well suited to photo restoration, compressed-image cleanup, creative enlargement, and enhancement workflows that need stronger texture recovery without drifting into overly artificial output.

Complete technical specification for integration
Step-by-step tutorials for advanced use cases
← All GuidesAdding film grain
How to add film grain to a Wonder 3.5 upscale with settings.grain: the silver, gaussian, and grey grain models and the strength, density, and size controls.
A hard upscale can come back looking too clean to be a photograph. When Wonder rebuilds a smooth sky or a car panel at high strength, the result is sharp and even in a way real film never is, which is one of the tells of an enhanced image. settings.grain puts the texture back, laying an organic grain over the frame so the upscale reads as shot rather than synthesised. The clean upscale below and the same frame with grain sit side by side:
Grain is a texture, so it lives at the pixel level and mostly disappears at page width. A 100% crop of the sky is where the difference shows, the flat gradient picking up a fine, even tooth:


The request
settings.grain takes a boolean or an object. Pass true to apply the default grain, or an object to control the look. The object has four keys: model, strength, density, and size. Omitting grain, or setting it to false, leaves it off.
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'topazlabs:wonder@3.5',
upscaleFactor: 2,
settings: {
grain: {
model: 'silver',
strength: 0.5,
density: 0.5,
size: 1
}
},
inputs: {
image: 'https://im.runware.ai/image/os/a14d18/ws/2/ii/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.jpg'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "topazlabs:wonder@3.5",
"upscaleFactor": 2,
"settings": {
"grain": {
"model": "silver",
"strength": 0.5,
"density": 0.5,
"size": 1
}
},
"inputs": {
"image": "https://im.runware.ai/image/os/a14d18/ws/2/ii/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.jpg"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "upscale",
"taskUUID": "d9e0f1a2-3b4c-4d5e-9f6a-7b8c9d0e1f2a",
"model": "topazlabs:wonder@3.5",
"upscaleFactor": 2,
"settings": {
"grain": {
"model": "silver",
"strength": 0.5,
"density": 0.5,
"size": 1
}
},
"inputs": {
"image": "https://im.runware.ai/image/os/a14d18/ws/2/ii/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.jpg"
}
}
]'runware run topazlabs:wonder@3.5 \
upscaleFactor=2 \
settings.grain.model=silver \
settings.grain.strength=0.5 \
settings.grain.density=0.5 \
settings.grain.size=1 \
inputs.image=https://im.runware.ai/image/os/a14d18/ws/2/ii/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.jpg{
"taskType": "upscale",
"taskUUID": "d9e0f1a2-3b4c-4d5e-9f6a-7b8c9d0e1f2a",
"model": "topazlabs:wonder@3.5",
"upscaleFactor": 2,
"settings": {
"grain": {
"model": "silver",
"strength": 0.5,
"density": 0.5,
"size": 1
}
},
"inputs": {
"image": "https://im.runware.ai/image/os/a14d18/ws/2/ii/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.jpg"
}
}[
{
"taskType": "upscale",
"taskUUID": "d9e0f1a2-3b4c-4d5e-9f6a-7b8c9d0e1f2a",
"imageUUID": "6c7d8e9f-0a1b-4c2d-8e3f-4a5b6c7d8e9f",
"imageURL": "https://im.runware.ai/image/os/a14d18/ws/2/ii/6c7d8e9f-0a1b-4c2d-8e3f-4a5b6c7d8e9f.jpg"
}
]Grain models
model sets the character of the grain. silver is the default and emulates the fine, slightly clumped grain of photographic film. gaussian lays down even statistical noise for a more digital, uniform speckle. grey applies grain to luminance only, so the texture appears without the colour flecks the other two can introduce. The three read clearly at 100%:



Reach for silver when you want a photographic film look, gaussian when you want a flatter digital noise, and grey when colour speckle would fight a clean grade or a monochrome image.
Strength, density, and size
Three numbers shape how the chosen grain sits on the frame:
strength(0 to 1, default 0.5) sets how visible the grain is, from a whisper of texture to a heavy overlay.density(0 to 1, default 0.5) sets how thickly the grains are packed across the image, from sparse and open to dense and busy.size(1 to 5, default 1) sets the particle size, from a fine tooth at 1 to a coarse, chunky grain at 5.
Strength is the control you will reach for most. Stepping it from low to high takes the sky from a barely-there texture to an unmistakable film overlay:



size changes the feel rather than the amount. A fine grain suits a clean, modern look, while a coarser particle reads as older or higher-speed stock:


Grain is easy to overdo. On a portrait or a product shot a light touch, strength around 0.2 to 0.3, reads as film texture, while the default 0.5 can look heavy up close. Judge it at 100%, since anything you can clearly see at page width will be strong in the file.
When to reach for it
Grain earns its place in three jobs. The first is undoing the too-clean look of a hard upscale, giving a reconstructed frame back the organic texture that sells it as a photograph. The second is matching an upscaled still into grainy footage, so a frame lifted from a film-look sequence carries the same tooth as the shots around it instead of standing out as suspiciously smooth. The third is unifying a set: running a batch through the same grain settings gives a mixed collection of clean and textured sources one consistent finish.
Because grain is applied as the final step of the upscale, it lands on the reconstructed detail rather than the source, so you get an even, deliberate texture instead of the uneven noise a degraded original carried.
Tips
-
Start with the default model.
silveris the film-like default and the right starting point for most photographic work. Switch togaussianfor a flatter digital noise orgreyto keep grain out of the colour channels. -
Lead with the strength control.
strengthchanges the result more than the others. Start low, around 0.2 to 0.3, and raise it only if the texture is too faint. -
Match grain size to the era. A fine
sizereads clean and modern, a coarse one reads like older or high-speed film stock. Pick it for the look you are after. -
Judge grain at 100%. It vanishes at page width and can be far too strong in the full-resolution file. Always check the native size before committing.
-
Use one recipe across a set. Applying the same grain settings to every image in a batch ties clean and textured sources into a single, consistent look.

