I built an old-photo restoration tool on fal's photo-restoration model — here's the actual pipeline
Old scanned family photos usually have three separate problems layered on top of each other: physical damage (creases, tears, water stains), faded/shifted color from chemical degradation, and low resolution from the original print or scan. Most consumer "restore my photo" apps handle one of these well and ignore the other two.
I built Reviva around fal.ai's dedicated photo-restoration model specifically because it's trained to address all three simultaneously rather than treating restoration as a generic image-to-image style transfer.
Why a dedicated restoration model beats a general img2img prompt
Before settling on this model, the naive approach was: run the damaged photo through a general-purpose image model with a prompt like "restore this old photo, fix damage, enhance quality." That works about as well as it sounds:
- Faces frequently get subtly regenerated rather than restored — a general model "fills in" facial detail from its training distribution instead of recovering what was actually in the photo, which for restoration is the opposite of what you want.
- Damage removal (scratches, creases) and colorization get inconsistent results because a single generic prompt is doing three different jobs at once.
- No control over how aggressive the model gets, so you either under-restore (still faded) or over-restore (looks AI-generated, waxy skin, plastic-looking texture).
A restoration-specific model constrains the problem: it's optimized to recover the actual photo underneath the damage, not to generate a plausible new image inspired by it. That distinction matters most on faces, which is exactly what people care about most in an inherited family photo.
The actual flow
upload scanned/damaged photo (JPEG/PNG, any resolution)
→ fal photo-restoration inference
→ damage removal + color recovery + light upscale
→ before/after comparison slider
→ download at full resolution
Pricing is flat per-photo ($9), not a subscription — most people restoring family photos are doing a one-time batch (an inherited photo album, a specific damaged print), not a recurring task, so a subscription model would be the wrong fit for the actual usage pattern.
Lessons for anyone building on restoration-class models
- Give users a before/after slider, not just an output image. Restoration quality is much easier to judge in direct comparison, and it's also the single highest-converting UI element I've shipped for this kind of tool.
- Don't upscale and restore in the same pass if you can help it — sequencing damage-removal before upscaling gives cleaner results than trying to do both in one inference call.
- Set expectations on faded color photos specifically. Physical damage (tears, creases) restores close to perfectly. Severe chemical color-shift (photos gone orange/magenta with age) restores well but isn't always a perfect color match to the original because that information is genuinely gone, not just degraded.
Live tool: https://photo-restore-hyn.pages.dev/
If you're working with fal's restoration or upscaling models and want to compare notes on parameters, happy to talk in the comments.
Top comments (0)