I built Colorize Old Photos to colorize black-and-white pictures and repair scratches, creases, and fading. The main lesson: treat slow image generation as an asynchronous job, treat restoration as a separate task from colorization, and account for every provider that may retain an uploaded or generated image. The implementation details and model observations below are my own report, not independently reproduced tests.
What I built and how the pieces fit
I’m Jason Guo, the maker of Colorize Old Photos. The app offers a free watermarked preview and one-time credit packs for full-resolution downloads; it does not use a subscription. Its reported stack combines a Next.js 16 App Router application deployed to Cloudflare Workers with OpenNext, D1 for accounts, credits, jobs, and rate limits, and R2 for uploads and results. A one-day lifecycle rule removes stored objects from R2. Cloudflare Images creates a watermarked 720-pixel preview. For the AI steps, I used fal.ai’s fal-ai/ddcolor for colorization and fal-ai/nano-banana-2/edit at 2K for restoration. PayPal Orders v2 and a webhook handle payments; Google OAuth and email magic links handle sign-in. Source account
As an Amazon Associate I earn from qualifying purchases.
This is an account of one implementation and its reported behavior. It is not a controlled comparison of models, a general benchmark, or a complete cost analysis.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Why model inference became a background job
A model call that can take a long time is a poor fit for a browser request that must remain open. In my experience, a cold DDColor start could take about 90 seconds. That is my approximate observation, not a benchmark or an industry-wide latency figure.
#1 Best Overall
- The easiest way to scan photos and documents. Supports 3x5, 4x6, 5x7, and 8x10 in sizes photo scanning but also letter and A4 size paper. Optical Resolution is up to 600 dpi ( PS: two setting: 300dpi/ 600dpi).
- Fast and easy, 2 seconds for one 4x6 photo and 5 seconds for one 8x10 size photo@300dpi. You can easily convert about 1000 photos to digitize files in one afternoon and share with your family or friends.
- More efficient than a flatbed scanner. Just insert the photos one by one and then scan. This makes ePhoto much more efficient than a flatbed scanner.
- Powerful Image Enhancement functions included. Quickly enhance and restore old faded images with a click of the mouse.
I made generation a job flow instead: the application stores a job, returns its ID to the client, and the client polls for fal’s status. When the provider reports progress or completion, the application advances the stored job. This keeps the user-facing request from having to stay open for the entire inference run and gives the app a durable place to track the work.
- Create and persist the job. Record the requested operation and enough state to reconnect it to the user and resulting media.
- Return an identifier promptly. The client receives a job ID rather than waiting for the model output in the original request.
- Poll provider status and advance state. Use the provider’s status to move the stored job through its lifecycle and make the result available when it is ready.
The exact polling interval, retry policy, and timeout behavior are not specified in my account, so this should be read as the architecture I used rather than a fully prescribed implementation recipe. Source account
Rank #2
- HIGH-SPEED PERSONAL PHOTO SCANNER¹ — Scan thousands of photos as quickly as 1 photo per second at 300 dpi ²; Further increasing your efficiency, this Epson picture scanner also allows you to batch-scan up to 36 photos at a time
- PRESERVE YOUR PRICELESS PHOTOS — Photo scanner for transforming old pictures to digital fast; Restore, organize, protect, and share your special photos; Scan Polaroid photos, panoramas, postcards, and photos up to 8 x 10 in
- SHARE STORES FOR FUTURE GENERATIONS — After scanning your photos with this Epson FastFoto scanner, use the Epson FastFoto app³ to add voice and text over your photos, or create slideshows right from your smartphone
- PRECISE PICTURE IMAGING SYSTEM — When you use this wireless, high-speed scanner you can bring new life to old photos with the help of auto enhancement, color restoration, red-eye reduction, de-skew, crop, and rotate
- SINGLE-STEP TECHNOLOGY — With this double sided scanner you can capture both the image and any handwritten notes on the back of a photo in a single scan; Duplex scanner's functionality helps you preserve what matters
Colorizing and repairing damage needed different workflows
Adding plausible color and removing physical-looking damage are not the same operation. I tested a damaged public-domain Library of Congress photo. In that reported test, CodeFormer plus DDColor added color but did not repair scratches or creases, and CodeFormer smoothed faces. I therefore used DDColor for colorize-only requests and an image-editing model for restoration. That is my observation on this example, not a universal model ranking.
| Workflow | Intended task | Reported effect on damage and faces | Duration and retention considerations |
|---|---|---|---|
Colorize only: fal-ai/ddcolor |
Add plausible color to a black-and-white image. | My reported CodeFormer-plus-DDColor test did not remove scratches or creases, and CodeFormer smoothed faces; I used DDColor alone for colorize-only requests. | A cold DDColor start could take about 90 seconds in my observation, so I handled it as a job. I added an expiry preference to each fal submit request to address the provider’s generated-media copy. |
Colorize plus restoration: fal-ai/nano-banana-2/edit at 2K |
Colorize while also addressing visible damage such as scratches, creases, and fading. | I selected an image-editing model for restoration after the reported test showed colorization alone did not repair the visible damage. My account does not provide a controlled quality comparison for this model. | My account does not state a separate duration comparison. The same provider-retention check matters for generated media. |
These workflows reflect the needs of the image, not a declared overall winner. My account does not establish a controlled quality comparison or complete price comparison between them. Source account
Rank #3
- Scanner type: Document
- Connectivity technology: USB
- With Auto Scan Mode, the scanner automatically detects what you're scanning
- Digitize documents and images
Deletion promises must include provider copies
My app used a one-day R2 lifecycle rule, but that alone did not cover a copy of generated media held by fal. I added X-Fal-Object-Lifecycle-Preference with a 3600-second expiry to each submit request. I report verifying that the file then stopped being served. In my words: “If you promise deletion, check your providers’ copies too.”
The practical point is to map retention across the entire media path, not just the storage bucket you control. Check uploaded originals, intermediate files, generated outputs, previews, and any copies held by inference or image-processing providers. The one-day R2 rule and fal expiry preference applied to my setup; they do not establish the retention behavior of other services or configurations. Source account
Rank #4
- Amazing image clarity and detail — 4800 dpi optical resolution (1), ideal for photo enlargements
- Epson ScanSmart software included (4) — easily scan photos, artwork, illustrations, books, documents and more
- One-touch scanning (2) — scan in fewer steps with easy-to-use buttons (2)
- Restore color to faded photos — with one click, Easy Photo Fix technology makes it simple
- Scan books and photo albums — high-rise, removable lid
Free previews need explicit abuse and spend controls
A free preview still triggers paid or resource-intensive processing. I used several controls together rather than relying on a watermark alone:
Recommended Free Tools
- A daily budget cap in USD.
- Fixed-window request limits in D1 keyed by IP address, subnet, and device.
- Turnstile.
- Upload moderation.
These are the controls I reported using; my account does not give numerical rate-limit thresholds or a full incident analysis. Budget limits constrain exposure to runaway inference spend, while request limits and moderation address different paths to abuse. Source account
Best Value
- Scan Photos in Seconds – Quickly digitize printed photos and preserve your memories for a lifetime.
- Handles Multiple Photo Sizes – Scan 3"×5", 4"×6", 5"×7", 8"×10", small 1"×1" photos, and panoramic images up to 12".
- High-Quality Resolution Options – Choose between crisp 300 DPI or ultra-high 600 DPI scanning for archival-quality images.
- Clean & Protect Delicate Photos – Keep photos pristine with the photo cleaning kit that includes a bellow-based blower, microfiber cloth and anti-static soft brush. Protect fragile prints and safely scan with the protective carrier sheet.
- Import Your Existing Digital Photos – Upload images from Apple Photos, Google Photos, digital cameras, memory drives, and more to keep everything together in Picture Studio by AMBIR.
Two setup details worth handling before launch
Convert HEIC before sending it through the image pipeline
In my setup, Cloudflare Images could not decode HEIC. Since iPhone photos may arrive in that format, I converted them client-side before upload. This is a report about the configuration I used, not a claim that every image service or future version has the same limitation. Source account
Make build-time variables available to Workers Builds
I found that NEXT_PUBLIC_* values had to be configured as build variables in Workers Builds. I also set keep_vars: true so wrangler deploy would preserve variables configured only in the dashboard. These settings mattered because build-time public values and deployment-time configuration do not necessarily travel through the same path. Source account
What this account does and does not establish
The deployment, latency estimate, and image observations here come from my account as the app’s maker. They are not independently verified, and the reported Library of Congress image test is not a benchmark across models or photographs. The source page displays “Posted on Oct 1” but does not state a publication year, so no year is attached to these observations. Source account
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




