IRONSOFTWAREHOME

How to Adjust Reading Speed in C# with IronBarcode

Curtis Chau
Curtis Chau
Updated: August 2, 2026

IronBarcode provides four reading speed options (Faster, Balanced, Detailed, ExtremeDetail) that let you control the trade-off between processing speed and accuracy when reading barcodes in C#, with Balanced being the recommended starting point for most applications.

Introduction

Accuracy is essential when reading large sets of barcodes, but resource allocation and processing efficiency are equally important considerations. The quality of input images determines how a barcode reader should process them - whether to skip preprocessing for clear images or use more resource-intensive options to improve accuracy for degraded barcodes.

IronBarcode provides flexibility to choose the processing speed and accuracy level, allowing you to control every aspect of the barcode reading process. You can make decisions based on your input images and available resources. For more advanced barcode reading scenarios, explore our comprehensive barcode reading tutorial that covers various formats and techniques.

This article provides guidelines for choosing the optimal reading speed for different scenarios. We'll use QR code samples to demonstrate how changing the reading speed affects results. If you're working specifically with QR codes, check our C# QR Code Generator tutorial for creating test samples.

Quickstart: Read a Barcode with Balanced Speed

Use IronBarcode's BarcodeReaderOptions to instantly set the Speed level for your scan. This example shows how to quickly read barcodes using the Balanced setting for fast and reliable results.

  1. 1Install IronBarcode with NuGet Package Manager

    PM > Install-Package BarCode

  2. 2Copy and run this code snippet.

    var results = IronBarCode.BarcodeReader.Read("path/to/image.png", new IronBarCode.BarcodeReaderOptions { Speed = IronBarCode.ReadingSpeed.Balanced });
    C#
  3. 3Deploy to test on your live environment

    Start using IronBarcode in your project today with a free trial
    arrow pointer

What Are the Different Reading Speed Options?

IronBarcode offers four ReadingSpeed options: Faster, Balanced, Detailed, and ExtremeDetail. We'll examine each option's intended use case, and how to measure its speed and accuracy against your own images. For a complete list of supported formats, visit our supported barcode formats page.

Because processing time, accuracy, and memory use all depend heavily on your dataset, hardware, and image quality, this guide does not publish fixed benchmark numbers. Instead, each option below explains what trade-off it makes and when to reach for it - measure the options yourself against a representative sample of your own images using a .NET benchmark library, and a straightforward method for counting successfully read barcodes. For more details on configuring reader options, see our barcode reader settings example.

When Should I Use the Faster Speed Option?

The Faster option provides the fastest barcode reading with minimal resources but reduces accuracy. This process skips image preprocessing and works best when input images are already sharp and clear.

This example sets the Speed property to ReadingSpeed.Faster, imports a directory of barcodes, and prints found barcodes with their values, types, and count per image. To better understand reading barcodes from various image formats, check our guide on reading barcodes from images.

using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

var optionsFaster = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Faster
};

// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";

// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    if (results.Any())
    {
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
        foreach (var result in results)
        {
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}");
            countFaster++;
        }
    }
    else
    {
        Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
    }
}

stopwatch.Stop();

// Print number of images the barcode reader could decode
Console.WriteLine($"Faster could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");

The Faster option skips preprocessing entirely, so it is the fastest and lowest-overhead of the four settings, but it will miss a meaningfully larger share of degraded or low-quality barcodes than the other options. It suits only pristine image conditions. When dealing with multiple barcodes in a single image, consider our guide on reading multiple barcodes for optimal configuration.

The Balanced option balances accuracy and read performance. IronBarcode applies light image processing to clarify the barcode area, making it easier to detect and read. This setting is recommended for most modern images, as light processing typically produces accurate results.

Let's use the same images to demonstrate how Balanced affects output results. For asynchronous operations, explore our guide on async and multithreading with IronBarcode.

using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

var optionsFaster = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced
};

// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";

// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    if (results.Any())
    {
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
        foreach (var result in results)
        {
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}");
            countFaster++;
        }
    }
    else
    {
        Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
    }
}

stopwatch.Stop();

// Print number of images the barcode reader could decode
Console.WriteLine($"Balanced could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");

The Balanced option applies light preprocessing, giving a meaningfully better detection rate than Faster on degraded images for only a modest increase in processing time. This option maintains an efficient balance between memory and speed, making it ideal for most situations and the recommended starting point. This balanced approach works particularly well with proper image preprocessing techniques.

When Do I Need the Detailed Speed Option?

When images are heavily blurred or distorted and Balanced cannot produce clear results, use the Detailed option. It applies medium preprocessing to clarify the barcode area and reduce digital noise for better detection. For severely degraded images, consult our image correction guide which covers various preprocessing techniques.

Let's apply the Detailed setting and observe its effect on output.

using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

var optionsFaster = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed
};

// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";

// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    if (results.Any())
    {
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
        foreach (var result in results)
        {
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}");
            countFaster++;
        }
    }
    else
    {
        Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
    }
}

stopwatch.Stop();

// Print number of images the barcode reader could decode
Console.WriteLine($"Detailed could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");

The Detailed option's medium preprocessing comes at a substantial processing-time cost compared to Balanced, without necessarily improving detection further on every dataset - test it against Balanced on your own images before adopting it. Because of the added cost, this option should be reserved exclusively for degraded barcode images. When working with imperfect barcodes, consult our imperfect barcode handling example for additional strategies.

What Situations Require ExtremeDetail Speed?

The ExtremeDetail setting applies heavy processing to barcode images, significantly reducing reading performance. This CPU-intensive option works best for scanning multiple unclear or blurry barcodes within one input file. Use it as a last resort when other options fail to produce desired results. For high-volume processing scenarios, explore reading barcodes from PDF files which often contain multiple barcodes per page.

Let's apply the ExtremeDetail setting to observe its impact.

using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

var optionsFaster = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.ExtremeDetail
};

// Directory containing PDF files
string folderPath = @"YOUR_FILE_PATH";

// Get all PDF files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

int countFaster = 0;
var stopwatch = Stopwatch.StartNew();
foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    if (results.Any())
    {
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
        foreach (var result in results)
        {
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}");
            countFaster++;
        }
    }
    else
    {
        Console.WriteLine($"No barcode found in: {Path.GetFileName(file)}");
    }
}

stopwatch.Stop();

// Print number of images the barcode reader could decode
Console.WriteLine($"ExtremeDetail could read = {countFaster} out of {pdfFiles.Length} in {stopwatch.ElapsedMilliseconds}ms");

The ExtremeDetail option applies the heaviest preprocessing of the four settings, and can recover barcodes the other options miss on severely degraded images - but its processing time and memory overhead are substantially higher, making it suitable only as a last resort. Consider preprocessing images before using this option.

How Do the Different Speeds Compare?

The table below is a relative, qualitative comparison - actual counts, timings, and memory use depend entirely on your dataset, hardware, and image quality, so no fixed figures are published here. Benchmark the options against a representative sample of your own images before choosing one for production.

ModeRelative SpeedRelative Memory UseBest For
FasterFastestLowestClean, high-quality images
BalancedFastLowMost applications (recommended default)
DetailedSlowHighModerately degraded images
ExtremeDetailSlowestHighestSeverely degraded images, as a last resort

How Do I Choose the Right Speed for My Application?

Based on the comparisons above, start with the Faster setting and progress through Balanced, Detailed, and ExtremeDetail to identify significant output differences. For most scenarios, Balanced handles everything adequately. Use Detailed and ExtremeDetail only for heavily distorted images. For thin or low-quality barcodes, combine your speed setting with MinScanLines = 1 to increase detection sensitivity.

Although Detailed and ExtremeDetail apply medium and heavy processing, sometimes it's more efficient to split the process - apply image filters manually before barcode reading rather than using a single process. For more information on preprocessing images, refer to this guide.

Which Speed Setting Matches My Use Case?

Decision tree for sampling speed selection based on image quality, from Faster to Detailed+ExtremeDetail options

Frequently Asked Questions

What are the different reading speed options in IronBarcode?

IronBarcode offers four reading speed options: Faster, Balanced, Detailed, and ExtremeDetail. Each option caters to different needs in terms of speed and accuracy, allowing users to optimize performance based on their specific requirements.

Why is the Balanced option recommended for barcode reading?

The Balanced option is recommended because it strikes a balance between speed and accuracy by applying light image processing. This makes it suitable for most modern, clear images, providing reliable results without significantly increasing resource consumption.

When should I use the Faster speed option?

Use the Faster speed option when you are working with clear, high-quality barcode images. This setting skips preprocessing of images, offering the fastest processing time and lowest resource use, but may sacrifice accuracy for images that aren't pristine.

How does the Detailed option improve barcode detection?

The Detailed option applies medium-level preprocessing to enhance the barcode area and reduce digital noise, making it ideal for moderately degraded or blurred images where the Balanced option may not suffice.

What scenarios are best suited for the ExtremeDetail speed setting?

The ExtremeDetail setting is best used for severely degraded, unclear, or blurry barcodes where other options fail to produce satisfactory results. It applies heavy preprocessing, which increases resource usage considerably, and should only be used as a last resort.

How do I choose the right speed option for my barcode reading needs?

Begin with the Faster setting and progress through Balanced, Detailed, and ExtremeDetail while evaluating output differences. Most applications will benefit from the Balanced setting. Use Detailed and ExtremeDetail for more distorted images.

Can I manually preprocess images before using IronBarcode?

Yes, applying manual image preprocessing before using IronBarcode can sometimes be more efficient, especially when dealing with low-quality barcodes. This allows for better control over image quality improvement.

How can the reading speed settings affect memory use?

Each reading speed setting in IronBarcode trades off between speed, accuracy, and memory use. Faster uses the least memory, while ExtremeDetail requires the most due to the heavy processing it applies.

What is the impact of applying heavy processing in the ExtremeDetail setting?

The ExtremeDetail setting significantly lowers reading performance and increases CPU usage due to intensive image preprocessing. It can recover certain barcodes more effectively than other settings, particularly in highly degraded images.

Which barcode reading speed setting should I use for high-volume processing?

For high-volume processing with clear, high-quality images, the Faster setting is optimal due to its speed and low resource consumption. However, it's important to test it against your specific data set to ensure it meets your needs.

Curtis Chau
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...
Read More

Ready to Get Started?

Nuget Downloads 2,422,100Version:2026.9just released

Get your free 30-day Trial Key instantly.
No credit card or account creation required
C# NuGet Library for PDF
Install with NuGet

Version: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. In Solution Explorer, right-click References, Manage NuGet Packages
  2. Select Browse and search "IronBarCode"
  3. Select the package and install
C# PDF DLL
Download DLL

Version: 2026.9

  1. Download and unzip IronBarCode to a location such as ~/Libs within your Solution directory
  2. In Visual Studio Solution Explorer, right click References. Select Browse, "IronBarCode.dll"

Licenses from $999

Key in blue circle

Get your free 30-day Trial Key instantly.

Your trial license will be sent to your email address

No limitations. 100% unlocked. No credit card.

bullet_checkedNo credit card or account creation requiredNo limitations. 100% unlocked. No credit card.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Book your free Live Demo
Booking Badge

Trusted by Millions of Engineers Worldwide

Iron Software's customer logos
Get Your No-Obligation Consult
Complete the form below or email sales@ironsoftware.com
Your details will always be kept confidential.
Trusted by Millions of Engineers Worldwide
Iron Software's customer logos
Get your free 30-day Trial Key instantly.
No credit card or account creation required