imagegrain

Why Grainy Photos Have Large File Sizes (And How to Fix It)

Adding grain to photos often creates huge files. Learn why this happens and how to add grain while keeping file sizes small.

Published 2026-03-18 · Updated July 12, 2026 · Written and tested by Maximilian Braun

You add a grain effect to a 2MB photo and suddenly it is 15MB. This is one of the most common frustrations with grain tools - but it is not a mystery. Understanding why it happens gives you the tools to fix it.

Why compression hates noise

JPEG and WebP compression work by finding patterns in blocks of pixels. Smooth gradients, solid colors, and repeating textures compress extremely well because there are patterns everywhere. Random noise is the exact opposite - every pixel is different from its neighbors, so there are no patterns to compress. The encoder has to store nearly every pixel individually, which means massive files.

The problem with most grain tools

Most grain effects - including Photoshop's Add Noise filter - generate pure random noise. Each pixel gets an independent random value. This is technically digital noise, not film grain, and it is the worst possible input for image compression. The result: a 2MB JPEG becomes 10-15MB even at modest quality settings.

How real film grain is different

Real film grain is not random per-pixel noise. Silver halide crystals have physical size and cluster together during development. This creates spatially-correlated patterns - nearby grains are similar in size and density. This correlation is exactly what compression algorithms need to work efficiently.

The fix: compression-friendly grain

imagegrain generates grain using smooth interpolation between random sample points, creating spatially-correlated noise that mimics real film. Because nearby pixels share similar grain values, JPEG and WebP can compress the result efficiently - the grain has structure the encoder can work with, instead of pure randomness it has to store pixel by pixel.

Real numbers from a real export

Measured with imagegrain's built-in sample image (1600x1000 pixels) at 40% fine grain: the lossless PNG export is 2.45 MB, the JPEG export at 85% quality is 0.26 MB, and the WebP export at 85% quality is 0.19 MB - roughly 9x and 13x smaller than the PNG. Dropping JPEG quality to 75% brings the same image down to 0.19 MB. Counterintuitively, heavier grain can compress even better: the same photo at 70% coarse grain exports at 0.17 MB as JPEG and 0.13 MB as WebP, because larger grain clusters are more spatially correlated. Your exact sizes will vary with image content and resolution, but the ratios hold.

Other tips for smaller grainy photos

Export as JPEG or WebP instead of PNG - PNG cannot compress noise efficiently regardless of the grain algorithm. Use the quality slider to find the sweet spot between visual quality and file size. For social media, 80-85% quality is usually sufficient. Resize oversized images before adding grain - a 6000px wide photo does not need to be that large for Instagram.

Controlled sample export

FormatSettingMeasured size
PNGLossless2.45 MB
JPEG85% quality0.26 MB
WebP85% quality0.19 MB

Built-in 1600×1000 sample, fine grain at 40%. Results vary with browser, image detail, dimensions, and settings.

Method and disclosure

This guide is written and reviewed by imagegrain's developer. Settings are practical starting points, not exact film-stock measurements. Controlled file-size figures use the documented built-in sample and export settings.

Read the full methodology

Ready to add grain to your photos?

Free, private, no sign-up required. Runs entirely in your browser.

Open Grain Filter