Old Photo Restoration

Restore faded, yellowed, and low-contrast scanned family photos with automated histogram equalization and tone curves.

Absolute Archival Privacy: All histogram analysis, color balancing, and sharpening mathematics execute inside your browser via the Canvas API. Your scanned memories never leave your device.
Split-Screen Diagnostic Viewport
Archival EngineCanvas API
Drop Scanned Photo Here
JPEG · PNG · WebP · TIFF — Full Resolution
ORIGINAL
RESTORED
Calculating Histogram…
Resolution
Process Time
Archival Status
Awaiting Scan
Split Position
50%

1 The Chemistry of Photographic Fading

Physical photographs are not permanent. The organic dye molecules and silver halide crystals suspended in a gelatin emulsion are highly susceptible to environmental degradation. Over decades, exposure to ultraviolet light, humidity, airborne pollutants, and outgassing from acid-containing album materials causes the chemical bonds in these dyes to irreversibly break.

Critically, cyan and magenta dye layers degrade at a significantly faster rate than yellow dye layers. This differential decay rate produces the characteristic warm yellow-orange color shift universally associated with aged photographs. Simultaneously, the metallic silver density in the emulsion thins out, converting what were once deep blacks to muddy mid-greys — collapsing the image's dynamic range from perhaps 7 stops down to 3–4 stops of visible luminance separation.

Our restoration engine targets both symptoms simultaneously: the histogram stretch algorithm restores the collapsed dynamic range, while the per-channel white balance correction precisely neutralizes the differential dye decay by analyzing and correcting each color channel independently.

2 Archival Digitization: Scanning Best Practices

The quality of the digital restoration is fundamentally bounded by the quality of the initial scan. Before uploading to any restoration tool, obtaining a high-fidelity scan is the most important step in the entire workflow.

Format / SizeMinimum DPIRecommended DPINotes
Standard 4×6 inch print600 DPI1200 DPISafe for A4 reprints
Wallet-size print1200 DPI2400 DPIHigh magnification needed
8×10 inch print400 DPI600 DPIAlready large — 600 DPI exceeds screen PPI
35mm film negative/slide3200 DPI4800 DPISmall frame, maximum detail needed
Medium-format film (120)1600 DPI2400 DPILarger frame, less magnification needed
Polaroid instant print800 DPI1200 DPIEmulsion is fragile — scan once correctly

Critical setting: Disable all automatic enhancement, Auto-Color, Digital ICE, Grain Reduction, and Digital ROC features in your scanner software. These proprietary algorithms apply irreversible destructive compression to your scan before it is saved, permanently discarding the tonal information this tool needs to restore the image correctly. Save the master scan as a lossless TIFF or maximum-quality JPEG before uploading.

3 Histogram Stretch: The Core Contrast Algorithm

When viewed as a digital histogram, a faded photograph displays a characteristic narrow spike clustered in the midtone region, with completely empty zones at both the shadow and highlight extremes. For example, a severely faded scan might have all pixel values compressed between level 60 and level 190, with nothing below 60 (pure black) or above 190 (pure white).

The Histogram Stretch (also called Linear Contrast Stretch or Normalization) algorithm solves this precisely:

  1. Analysis pass: The engine iterates over all pixels to find the actual minimum (P_min) and maximum (P_max) luminance values present in the scan, using the 2nd and 98th percentiles to ignore isolated dust specks that would skew the endpoints.
  2. Remap formula: Each pixel's value is recalculated as: P_new = (P_old − P_min) ÷ (P_max − P_min) × 255
  3. Blend: The slider intensity blends between the original and the stretched value — a value of 0.7 applies 70% stretch, giving you precise control over how aggressively the contrast is recovered.

This is mathematically equivalent to dragging the black point and white point sliders in Lightroom's Develop module — but fully automated, applied to the per-channel luminance values independently.

4 Per-Channel White Balance Correction

The De-Yellowing slider applies a precision per-channel white balance correction — the same mathematical operation used in professional RAW processing workflows. The algorithm works in four steps:

  1. Channel analysis: The engine calculates the 98th percentile value of the Red, Green, and Blue channels separately across all pixels. In a yellow-cast image, Red and Green will have high percentile values; Blue will be low.
  2. Gain calculation: A correction gain (g) is calculated for each channel as g = 255 ÷ P98_channel. This scales each channel so that the near-white tones in that channel map to 255.
  3. Application: Each pixel's channel values are multiplied by their respective gains and clamped to 0–255. This differentially amplifies the deficient Blue channel while attenuating the over-inflated Red channel.
  4. Blend: The slider blends between original and corrected values, preventing over-correction that would push the image toward a cold blue cast.

Unlike simple "reduce red" approaches, this method preserves the underlying color relationships within the image — skin tones remain natural, blue skies become properly saturated, and fabric colors are recovered rather than neutralized to grey.

5 Gamma Correction & Midtone Lift Explained

Gamma Correction applies a power-curve transformation to the pixel values: P_new = (P_old / 255)^(1/γ) × 255. A gamma value above 1.0 brightens the image — particularly the midtones — without clipping highlights. A value below 1.0 darkens and adds tonal depth.

For scanned photos that appear flat and washed-out even after histogram stretching, increasing gamma to 1.2–1.4 lifts the shadow-to-midtone gradient, revealing detail in clothing folds, facial shadows, and background architecture that was previously lost in compressed grey values.

Midtone Lift adds a flat offset to all pixel values before clamping. Positive values brighten all tones uniformly — useful for very dark underexposed scans. Negative values deepen the image. Unlike gamma, this is a linear offset rather than a curve, making it better suited for absolute shadow recovery on severely underexposed scans.

6 Luminance-Only USM Sharpening — Zero Color Halos

The Detail Recovery slider applies a true Unsharp Mask (USM) exclusively to the luminance channel. The process:

  1. Calculate per-pixel luminance using Rec. 601 weights: L = R×0.299 + G×0.587 + B×0.114
  2. Compute a 3×3 box-blur estimate of each pixel using its 8 neighbours
  3. The high-pass signal = L_original − L_blurred
  4. Only apply amplification where |high-pass| > noise_gate (set by the Grain Noise Gate slider)
  5. The sharpened luminance delta is added back to all three RGB channels equally, preserving the original color ratios

Applying USM only to the luminance channel prevents the RGB channel misalignment artifacts that appear as colored halos (green-magenta fringing) when RGB channels are sharpened independently — the professional technique used in all studio-grade retouching workflows.

7 Noise Gate — Protecting Film Grain from USM

Vintage film grain is one of the most recognizable artifacts of analog photography. The Grain Noise Gate slider sets the minimum high-pass delta required before sharpening is applied to a pixel. If the difference between the original pixel and its blurred estimate is below the threshold, the pixel is left completely untouched.

This is critical: film grain is high-frequency variation at roughly the same spatial scale as fine texture detail. Without a noise gate, USM would amplify both the genuine edge data and the grain noise simultaneously, producing a harsh, crunchy "over-sharpened" look. With the noise gate set to 8–15, the fine grain texture passes through untouched while genuine edge transitions (lens boundaries, facial features, clothing seams) are sharpened aggressively.

8 Saturation Recovery After Contrast Restoration

Faded photographs have suppressed colour saturation for the same reason they have collapsed contrast — the dye density is lower throughout. When you stretch the histogram to restore contrast, the luminance channel is expanded but the colour channel relative saturation remains at the faded level.

The Saturation Restore slider applies a targeted colour amplification using the HSL colour model. Each pixel is converted to Hue/Saturation/Lightness, the Saturation value is multiplied by 1 + (slider × 1.5), and the pixel is converted back to RGB. Using HSL ensures that increasing saturation doesn't shift the hue of skin tones or produce illegal out-of-gamut values — the luminance channel is completely preserved during this operation.

9 Client-Side Privacy Architecture

Historical family photographs are among the most sensitive personal data that exists. The overwhelming majority of commercial "AI photo restoration" apps require you to upload your scans to remote cloud servers — where your ancestors' faces, addresses, names visible in photos, and private family moments are exposed to third parties and in many cases used to train facial recognition algorithms.

This tool categorically rejects that architecture. When you select a file, the browser's FileReader API reads it directly into local memory as a DataURL — no network request is made. All five algorithm passes (histogram stretch, per-channel white balance, gamma correction, saturation restore, USM sharpening) execute as JavaScript operating on a Uint8ClampedArray typed buffer inside the browser's sandboxed memory. The restored image is serialized to a download URL using canvas.toDataURL() — entirely locally. Your photos are mathematically impossible to exfiltrate by this tool.

10 JPEG vs PNG vs TIFF: Choosing the Right Archival Format

Choosing the correct export format for your restored photo determines whether your digital archive will remain pristine for the next 50 years or degrade with every copy:

  • JPEG (Share): Maximum compatibility. Excellent for emailing, posting on social media, or sharing with relatives. Use 95%+ quality. However, JPEG is lossy — each re-save discards tonal micro-data. Never use JPEG as your master archival format.
  • PNG (Archival Master): Lossless compression — every pixel is preserved exactly. File sizes are larger but every re-export from PNG is bit-for-bit identical. Use PNG for your master archive copy. This tool exports PNG at maximum bit-depth available from the Canvas API (8-bit per channel, 32-bit RGBA).
  • TIFF (Professional Archive): The gold standard for archival institutions. Supports 16-bit per channel (65,536 tonal levels vs JPEG's 256), multiple layers, embedded color profiles, and metadata. Export as PNG from this tool, then convert to TIFF 16-bit using a dedicated tool for true archival master storage.
  • WebP (Digital Distribution): Google's modern format offering superior compression vs JPEG at equivalent quality. Ideal for web publishing. Lossless WebP is supported for PNG-equivalent output.

11 Full Algorithm Pipeline — Processing Order

PassAlgorithmInputWhat it Fixes
1Histogram StretchOriginal pixelsCollapsed dynamic range — restores blacks and whites
2Midtone Lift + GammaPass 1 outputShadow crushing, flat midtones, overall brightness
3Per-Channel White BalancePass 2 outputYellow/sepia cast from differential dye decay
4Saturation Restore (HSL)Pass 3 outputDull, de-saturated faded colors
5Luminance USM + Noise GatePass 4 outputScanner softness, lens blur, fine edge detail

Processing order is critical: contrast restoration is always applied before color correction, which is always applied before sharpening. Sharpening before color correction would amplify the colour cast artifacts at edges. Color correction before contrast stretching would be operating on the collapsed tonal range, reducing the precision of the channel gain calculation.

12 Common Photo Restoration Mistakes to Avoid

  • Over-sharpening: The most visible mistake. Excessive USM creates bright white halos along every edge, making the photo look digitally manipulated rather than restored. Keep Detail Recovery below 70% and use the Before/After slider at 100% zoom to check for halos.
  • Scanning with Auto-Enhance enabled: Scanner software auto-enhancement irreversibly discards shadow and highlight detail before the JPEG is even saved. You cannot restore data that the scanner already deleted. Always scan in manual mode at maximum bit depth.
  • Over-correcting yellow cast: Pulling De-Yellowing to 100% on a mildly faded photo will push the image to a cold, clinical blue tone. Start at 60–75% and judge the skin tones — they should look warm but not orange.
  • Sharpening from a low-resolution scan: Sharpening a 300 DPI scan creates visible pixel staircase artifacts on diagonal edges. Re-scan at 600+ DPI before applying any sharpening operations.
  • Saving restored JPEG multiple times: Every JPEG save cycle applies additional lossy compression to the already-compressed image. Save your master restoration as PNG, then export a JPEG copy for sharing. Never re-compress the master.
How does this tool fix faded old photos?
The engine runs three sequential passes: (1) Histogram stretch — it finds the actual darkest and lightest pixels in your scan and remaps the full 0-255 tonal range to those bounds, restoring crushed blacks and faded whites. (2) Per-channel white balance — it calculates each channel's mean, compares it to the target white point, and applies a multiplicative gain correction to neutralize yellow/sepia cast without destroying color information. (3) Luminance-only USM sharpening — a box-blur-derived high-pass signal is amplified exclusively on the luma channel to recover edge crispness without introducing color noise.
Why do old photos turn yellow and lose contrast?
Photographic paper uses organic dye molecules and silver halide crystals suspended in a gelatin emulsion. Cyan and magenta dyes degrade significantly faster than yellow dyes when exposed to UV light, humidity, and airborne pollutants. This differential dye decay creates the characteristic yellow-orange color shift. Simultaneously, the silver density in the emulsion thins out, converting pure black areas to muddy grey and collapsing the dynamic range.
What resolution should I scan old photos at?
For standard 4x6 inch prints: scan at minimum 600 DPI. For wallet-sized prints: 1200 DPI. For 35mm film negatives or slides: minimum 3200 DPI. For medium-format film (120/220): 1600 DPI minimum. Always disable your scanner's Auto-Enhance, Digital ICE, or Grain Reduction features before scanning — these irreversibly destroy tonal information before restoration can begin.
What is histogram stretching and how does it fix contrast?
A faded photo has its pixel values clustered in a narrow band — for example, between level 60 and 190 instead of the full 0-255 range. Histogram stretching remaps this compressed range to fill the full scale: level 60 becomes 0 (pure black), level 190 becomes 255 (pure white), and all values in between are proportionally stretched. This mathematically restores full dynamic range without clipping any data.
What is per-channel white balance correction?
The tool calculates the 98th percentile value of each color channel (R, G, B) separately across the entire image. It then calculates how much gain needs to be applied to each channel so that all three channels reach the same target white point. Since yellow cast means R and G channels are inflated relative to B, the algorithm applies a higher gain to B and attenuates R and G, neutralizing the cast without converting to grayscale.
Will this work on black and white photos?
Yes. Black and white photos benefit from the contrast stretch (histogram equalization) and the detail recovery (USM sharpening). Since there is no color cast to correct, you can set the De-Yellowing slider to 0. The contrast and sharpening algorithms operate on luminance, so they are fully effective on monochrome scans.
Are my photos uploaded to a server?
No. Every computation — histogram analysis, pixel remapping, color balance, and sharpening — executes entirely inside your browser using the HTML5 Canvas API and JavaScript typed arrays. Your image data never leaves your device. This is critical for historical family photos which may contain private information.
What export format should I use to archive restored photos?
For sharing or displaying: export as JPEG at maximum quality. For long-term archival storage: export PNG (lossless, no generational quality loss). For true archival master files, re-save using a dedicated tool to TIFF 16-bit, which preserves maximum bit depth. Never re-compress your restored master file as a low-quality JPEG — every save cycle degrades fine tonal gradients.
Why does the before/after comparison show a black divider line?
The divider line is drawn directly on the canvas to create a precise split between the original pixel data (left) and the restored pixel data (right). Drag the line horizontally to reveal different parts of both versions simultaneously, allowing precise evaluation of the restoration effect across different regions of the photo.
Can this fix water-damaged or mold-stained photos?
The tool corrects tonal contrast and color cast extremely well. However, physical stains — water marks, mold foxing, chemical spills — exist as actual discolored pixel regions that the contrast algorithms cannot distinguish from intentional image content. For physical damage removal, manual retouching or an AI-inpainting tool is required after contrast restoration.
Why do old photographs turn yellow and fade?

Analog photographs are printed on paper coated with a chemical emulsion containing light-sensitive silver halides and organic dyes. Over time, exposure to ultraviolet (UV) light, ambient humidity, and acidic storage materials (like cheap photo albums) causes these chemical bonds to break down. Cyan and magenta dyes degrade much faster than yellow dyes, leaving behind a distinct sepia or yellow color cast, while the absolute blacks fade to gray.

How does your Histogram Equalization engine work?

Instead of simply applying a 'brightness' filter, our engine analyzes the mathematical distribution of your image's pixels. It identifies the darkest and lightest points in your faded scan, and stretches the entire tonal curve to map those points back to absolute black and pure white. This instantly restores the original dynamic range without aggressively clipping or destroying highlight detail.

What is Auto-White Balance (De-Yellowing)?

Our De-Yellowing algorithm utilizes 'Gray World Assumption' color science. It calculates the average luminosity of the Red, Green, and Blue channels independently. Recognizing the massive spike in the red/green spectrum (which makes yellow), the engine mathematically scales the channels to neutralize the tint, restoring the natural skin tones and original grayscale accuracy.

What is the best DPI for scanning old photos?

For archival preservation, you should scan standard paper prints at a minimum of 600 DPI (Dots Per Inch). If you are scanning small formats like 35mm film negatives or slides, increase the resolution to at least 3200 DPI to accurately capture the microscopic film grain structure.

Why should I disable my scanner's 'Auto-Enhance' feature?

Proprietary scanner software often uses destructive, low-quality algorithms to artificially boost contrast or remove dust (like Digital ICE), which can accidentally erase fine details like eyelashes or texture in clothing. It is always better to scan the image completely 'flat' (raw) and use a professional mathematical engine like ours to restore the contrast non-destructively.

What is Unsharp Masking?

Unsharp Masking (USM) is an old darkroom technique brought into the digital age. Our algorithm creates a slightly blurred copy of your photograph, subtracts it from the original to detect the high-contrast edges, and then selectively boosts the luminosity of those specific edges. This restores perceived optical sharpness without magnifying unwanted film grain or scanner dust.

Are my family photos uploaded to a cloud server?

No. Absolute privacy is guaranteed. We understand that historical archives are deeply personal. Our platform uses HTML5 Canvas APIs to execute the complex pixel math entirely within your local browser memory. Your precious memories never leave your physical device.

How do I use the Split-Screen viewport?

Once you upload a photograph, a purple vertical slider will appear in the center of the image. Simply click and drag this line left or right. The left side displays the faded original scan, while the right side displays the mathematically restored image, allowing you to instantly diagnose the improvements.

Why does the tool take a second to process large images?

High-resolution archival scans contain millions of pixels. Because our engine performs localized matrix convolution (like the Unsharp Mask) and individual pixel color-balancing across the entire array, it requires massive mathematical computation. However, because it runs locally, it is still exponentially faster than uploading a 50MB TIFF file to a remote server.

Should I export as JPEG or TIFF?

While our tool exports a high-quality (95% retention) JPEG for easy sharing, true archival preservation requires lossless formats like TIFF. We recommend keeping your original 'flat' TIFF scans securely backed up on external hard drives, using our tool to generate beautiful JPEGs for printing and family distribution.

Rate Old Photo Restoration

Help us improve by rating this tool.

4.9/5
665 reviews