back to top

What Is ISO Invariance?

A- A+

Subscribe Below to Download the Article Immediately

You can also select your interests for free access to our premium training:

Your privacy is safe. I will never share your information.
Related course: Photography for Beginners

ISO invariance is the idea that the quality of your photos stay the same no matter what ISO you use.

This concept can be quite technical. We will discuss it in the simplest way that you can understand and apply your photography.

Nikon DSLR camera

What Is ISO?

ISO is a photography term that describes the sensitivity of your camera to light. The acronym comes from the International Organization for Standardization, which developed the system.

Back in the days of film photography, the ISO was marked on film canisters. The higher that number, the more sensitive the film is to light. The common range you’ll encounter is 100-800. Although, you can find ones as low as 25 and as high as 3200 in some cases.

So how does ISO work? If a film canister says ISO 100, it has a relatively low sensitivity to light. Meaning, you can only use it in the daytime. ISO 800 would be perfect for night time photos because it is sensitive enough to record images in low-light situations.

When digital cameras became the norm, they adopted the ISO system that film cameras used as well. Most modern cameras also start from 100, but can now go as high as 25,000 or even more.

Diptych street photo showing effects of ISO invariance

What is the Difference Between Film ISO and Digital ISO?

The main difference between film and digital is how they process light sensitivity. With film, the photosensitive chemicals determine the film’s light sensitivity. Meanwhile, in digital cameras, the sensor can change light into an electric signal that determines it.

Since the processes between film and digital are distinct, that means that they “read” ISO differently as well.

For instance, the film’s ISO is set. If your film canister says 800, you can’t simply adjust it back to 100. The reason is that the chemicals that coat your film were developed for that amount of sensitivity.

But with digital, you can easily move from 100 to 1600 or more with just a flick of a dial. Since it uses electronic signals, all it has to do is amplify the data coming from the sensor to make it more “sensitive.”

The Concept of ISO Invariance

There are a lot of concepts surrounding ISO variance that can be too technical for an average photographer. For this article, our goal is to simplify those ideas so that you can have at least a basic understanding of how it is and how it works.

ISO invariance comes from the fact that the electric signals coming from the sensor are more or less constant no matter what ISO you’re using. In other words, the output from your camera is the same, whether you’re using ISO 100 or 800. The only change is how those signals are amplified afterwards.

So what does this all mean? In the grand scheme of things, it doesn’t matter what ISO you’re using when you have a digital camera (especially a modern one). Try it by doing a few test shots.

Go to a dark room and take a picture with ISO 100. Then bump up your ISO to 800 and take another picture.

a picture of a vase of flowers with ISO 100.

Now open the ISO100 image in editing software and bump up the exposure to match the ISO 800 image you took.

Diptych of a vase of flowers at different iso settings

As shown in the sample images I took, you barely see any difference. This is because the camera you’re using is almost ISO invariant (why almost? We’ll answer that in the next few sections). Even if we end up with a pitch-black photo, you can still get back all those details when you increase the exposure in your editing software.

Why Should You Change the ISO?

There are several reasons why ISO is still necessary for digital cameras. The most obvious one is that it provides us with a visual gauge when taking pictures. If you always use ISO 100, you may not even see your pictures on the screen when you use your camera in the dark.

But another major reason is that ISO is still the basis of how much your camera needs to “amplify” those electrical signals from the sensor. In other words, the ISO allows your camera to automatically “brighten” the pictures to a degree that corresponds to the ISO value you’re using.

Plus, choosing the right ISO still matters because it can drastically affect the quality of your images. The higher your ISO value, the more noise your pictures will have no matter how modern your camera. But it’s worth noting that some devices manage noise better than others.

For instance, an ISO 800 from one camera may have less noticeable noise from another. This is due to the technology each device uses to minimize the grain introduced by using high ISO.

Types of ISO Noise

Remember when I mentioned that using high ISO values can cause noise? Let’s discuss the two types of image noise you’ll encounter when taking pictures.

Photon Noise is what your camera records from the scene. This type of noise is present in the environment and is not caused by your device at all. So even when you’re using ISO 100, you’ll still see some “grain” in your image because of the presence of photon noise.

Read Noise is produced by your device. They occur when the sensor amplifies the photons that it records. This type of noise also appears when the analog signal is turned into digital data that is readable by the computer.

grainy close up of the exterior of an old building

What Is Native and Extended ISO?

Before we proceed to the best ISO to use, let’s quickly go through the two types of ISOs your camera has. First is what’s called a native ISO. The term simply refers to the camera’s effective ISO range where it doesn’t have to do any digital enhancement. Most high-end options have a native ISO range of 50 to 25,000 or more.

Then there is the Extended ISO where your device “adds” pixels to your image to artificially make your image brighter. Some cameras have an extended ISO range of 30,000 to 100,000 or more. Although it’s not recommended to use such high values because it introduces a lot of noise to your image that renders it unusable.

Your native ISO is the range where you can safely experiment with ISO invariance. In other words, it’s fairly safe to say that you can push an ISO 50 image to an ISO 25,000 without worrying about sacrificing too much quality

In reality, however, it all depends on your camera’s capabilities on how much you can push your ISO. In most cases, 25,000 would still be unusable because of the amount of noise it introduces to your image.

diptych of a person using a smartphone at different iso invariance

What ISO Value is Best?

What makes ISO variance useful is the fact that it makes you confident to underexpose your shots and still get great results. So even if you underexpose a photo shot at ISO 800, you can raise your exposure in post that’s equivalent to 3500 or higher and not worry about losing quality.

For the most part, it would still be best to use the value that best matches your shooting situation. For instance, you can use ISO 100 when shooting in daylight. And for low light conditions, you can go up to ISO 800, 3500, or even higher.

The reason why it’s still necessary to use the correct ISO is that your camera’s dynamic range. So what’s dynamic range? Put simply, it’s the spectrum where you can safely adjust highlights and shadows without losing details. Every camera has a specific dynamic range. Options with a HIGH dynamic range means that they retain details better even when under or overexposed.

So what does it all mean, then? While your sensor may retain great detail when you push your ISO to 8 or 10 stops (i.e. ISO 100 to ISO 800-1000), it may start losing quality if you go beyond that.

What Is ISO Invariance Best Used for?

The best use for ISO invariance is in night time photography such as astrophotography or long exposure photography. Since using extremely high ISOs such as 25,000 produce super grainy photos, you can try a lower value instead, so you don’t end up with too much noise. You can then adjust the exposure in post.

The next technique is for general photography. It involves underexposing your pictures. This ensures that you keep the details in your image even when you adjust the exposure in editing. However, you also need to remember that it doesn’t work the same when you overexpose shots in-camera. If everything’s too bright, you may never recover the details in your image.

Remember that you can only take advantage of ISO invariance when you’re using RAW. It will not work with JPEG since such a format is not editable. Increasing the brightness 2 to 3 stops of a JPEG image alone can ruin it.

A DSLR recording light spirals at night

Conclusion

As mentioned, this article has simplified the concept of ISO invariance so that it would be easier for the regular photographer to understand. But the points that we mentioned here are nonetheless going to be useful in situations where ISO invariance will be effective.

You should also remember that not every camera is ISO invariant. Many new cameras (especially the professional options) are ISO invariant. But the older ones may lack the sensor technology to compete with the newer models.

Show Comments (0)
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]
[type='text']
[type='text']
[type='password']
[type='password']
[activeKey]
[activeKey]
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
['rmockx.RealPlayer G2 Control', 'rmocx.RealPlayer G2 Control.1', 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)', 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)', 'RealPlayer']
[index]
[index]
[i]
[i]