Decoding 35mm DX Film Edge Barcodes

A bit of background

My dad brought home our first digital camera, a Sony Mavica MVC-FD5 (which he borrowed from work), in 1999. The camera saved pictures on a 3.5" floppy back then. Fast forward 20 years and I have over 100,000 digital photos in my library. Unfortunately, I am unable to browse anything from before 1999 since all our pictures were stored on film, and thousands of negatives and slides are stored in boxes at my parent’s.

Sony Mavica

To resolve this issue and prevent us from losing any old picture I’ve equipped my parents with a second-hand Nikon Coolscan LS-5000 ED scanner and asked them to carefully and slowly scan all the negatives & slides, they have in their possession. The process is long and tedious but well worth the effort as old memories come back to life with each scan.

Nikon Super Coolscan 5000 ED

We decided to invest in a good software solution for scanning those negatives and settled on SilverFast Ai Studio 8. One of the great features of SilverFast is the ability to colour-correct the output based on the film stock that was used to shoot the image. All you have to do is tell the software what stock was used and it applies the matching profile.

Since most are 35mm negatives, all we have to go by is what we can read on the negatives itself. In some situation, we could tell what stock was used as it was written at the top of the film (e.g. Kodak GOLD 200) but in most cases, nothing or very little was written (e.g. Fuji). This is when I started wondering and looking into the barcode printed at the bottom of each negative.

The barcode in question is part of the DX encoding system, which is well described for the cartridge (as per the Wikipedia article and many other online resources). Unfortunately, we do not have the cartridges and the DX encoding present on the film edge is poorly documented thus making it very hard to decode. I’ve searched far and wide for over a week, and unfortunately, most of the related resources are non-existent or now gone. Luckily I’ve managed to cobble some tidbits which I have regrouped here.

Decoding the barcode

There are 2 types of barcodes, a short version and a long version. No matter which one is present on your film, the instructions below will help you decode the relevant information.

Reading the stripes

The barcode is made of multiple parts, each coded in binary. The table below matches each stripe with its binary value, starting from the left of the barcode. You can ignore everything after stripe 18. The top line is only used as a reference to help you read the bottom one.

DX film edge barcode User:Caltrop [CC BY-SA]

Stripe 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18
Value - - - - - - 64 32 16 8 4 2 1 - 8 4 2 1
  • Stripes 01 to 06: the start of the barcode (do not count)
  • Stripes 07 to 13: DX code part 1 (film manufacturer)
  • Stripe 14: separator (do not count)
  • Stripes 15 to 18: DX code part 2 (film type)

Counting the stripes

For each stripe, if printed black count the value as per the table above, otherwise count the value as zero (0) if transparent. Once you’ve identified all the values, add them together for each part.


  • part 1: stripes 08 & 12 are black, others are transparent, 32+2=34
  • part 2: stripes 16 & 17 are black, others are transparent, 4+2=6

Matching the decoded barcode

Once decoded, you will need to match the 2 parts using a reference list. I have found and recovered this now-deleted list from the International Imaging Industry Association (I3A) using the Wayback Machine which references many film stock codes until 2008: I3A_DX_codes.pdf.

Using the above list and our previous example, we would decode the DX barcode as:

  • part 1 (34) = FUJIFILM

An alternative way to match the decoded barcode

Another way to match the decoded barcode is to leverage the amazing “The Big Film Database” which references DX cartridge codes.

To deduct the DX code from the film edge barcode, apply this formula:

16 x Part 1 + Part 2

Which in our example is equal to:

16 x 34 + 6 = 550

Once you have the math result, add as many leading zeros (0) as required to make it a 5-digit number, using our example we would get “00550”.

Finally, complete the link below with the resulting number:

If you’re in luck the website will return at least one potential film matches.


  • gvk for review & comments