IRONSOFTWAREHOME
USING IRONBARCODE

How to Create a Code 39 Barcode Generator in C#

Curtis Chau
Curtis Chau
Updated: May 8, 2026

Barcodes have become an integral part of modern business operations, facilitating efficient inventory management, point-of-sale transactions, and data tracking. Among the various barcode symbologies, Code 39 stands out as one of the most widely used and versatile options.

A checksum digit, also known as a check digit or validation digit, is a digit added to a sequence of numbers (or alphanumeric characters) to help detect errors in the data. The purpose of the checksum digit is to ensure the integrity of the data by providing a simple method of error detection during data transmission or processing. One common application of a checksum digit is in barcodes, where it is often used to verify the accuracy of the scanned data. One of the barcode symbologies that uses a checksum digit is Code 39.

Code 39 encodes alphanumeric characters, including uppercase letters, numeric digits, and a few special characters. It includes a start character, an optional checksum character, and a stop character, making it self-checking to ensure accurate data capture. Also, human-readable text can be displayed below the generated barcode image.

IronBarcode (produced by Iron Software) is the leading .NET C# Barcode library for reading and creating barcodes. The user-friendly API allows developers to add barcode functionality to .NET applications in minutes. Developers can generate a Code 39 barcoding project and barcoding test in minutes using this library.

In this article, we'll explore the process of building a Code 39 barcode generator using IronBarcode.

How to Create a Code 39 Barcode Generator in C#

  1. Create a new C# project in Visual Studio
  2. Install the IronBarcode library and add it to your project.
  3. Generate Code 39 Barcode using the IronBarcode class library
  4. Add annotation text to the Code 39 Barcode images
  5. Add styling to the Code 39 Barcode images

Prerequisites

  1. Visual Studio: Ensure you have Visual Studio or any other C# development environment installed.
  2. NuGet Package Manager: Make sure you can use NuGet to manage packages in your project.

Step 1: Create a New C# Project in Visual Studio

Create a new C# console application or use an existing project where you want to generate new barcode images. This library can also be used on a .NET Windows forms application. For the sake of this tutorial, let's consider a console application.

Select the console application template and click next.

How to Create a Code 39 Barcode Generator in C#: Figure 1 - Selecting the console application template

In the next step, you can provide the solution and project names.

How to Create a Code 39 Barcode Generator in C#: Figure 2 - Configuring the project name and solution

Select the .NET Version and click "Create".

How to Create a Code 39 Barcode Generator in C#: Figure 3 - Creating the project with the correct .NET version

Step 2: Install the IronBarcode library

IronBarcode can be installed from the NuGet Package Manager.

How to Create a Code 39 Barcode Generator in C#: Figure 4 - IronBarcode on the NuGet package manager

It can also be installed from the Visual Studio package manager. Search for IronBarcode in Package Manager and click install.

How to Create a Code 39 Barcode Generator in C#: Figure 5 - Installing IronBarcode from the Visual Studio Package manager

Step 3: Generate Code 39 Barcode using the IronBarcode Library

Now, let's write the code to generate Code 39 barcodes using the IronBarcode library. Below is a simple example:

using IronBarCode;

Console.WriteLine("Code 39 Barcode Generator");

// Generate a Code 39 Barcode using the BarcodeWriter class
GeneratedBarcode code39Barcode = BarcodeWriter.CreateBarcode(
    "https://ironsoftware.com/csharp/barcode", 
    BarcodeEncoding.Code39
);

// Save the generated barcode image as a PNG file
code39Barcode.SaveAsImage("ironSoftwareBarcode.png");

This simple program initializes a BarcodeWriter C# class, sets the encoding format to Code39, and generates a barcode PNG using the provided data. The barcode image is then saved as ironSoftwareBarcode.png.

Output:

How to Create a Code 39 Barcode Generator in C#: Figure 6 - Outputted barcode image encoded in Code 39

Here we are using the BarcodeWriter class from the IronBarcode library to create Code 39 barcodes with the URL data provided. Every time the code is run, a new barcode image is generated.

Add Annotation Text to Code 39 Barcode images

Annotation text can be added to barcodes easily with IronBarcode. The BarcodeWriter object generates a barcode object which has a Fluent API, allowing barcode text to be set in a single line of code.

using IronBarCode;

Console.WriteLine("Code 39 Barcode Generator");

// Generate a Code 39 Barcode
GeneratedBarcode code39Barcode = BarcodeWriter.CreateBarcode(
    "https://ironsoftware.com/csharp/barcode", 
    BarcodeEncoding.Code39
);

// Add annotation text above and the barcode value text below the barcode
code39Barcode.AddAnnotationTextAboveBarcode("Product URL:");
code39Barcode.AddBarcodeValueTextBelowBarcode();

// Save the barcode image with annotation text
code39Barcode.SaveAsImage("ironSoftwareBarcodeWithText.png");

Output:

How to Create a Code 39 Barcode Generator in C#: Figure 7 - Outputted annotated barcode image from the previous code

Here you can see the product URL human-readable text is added above the barcode, and the value of the barcode in human-readable text is added below the barcode image.

Add Styling to Code 39 Barcode images

IronBarcode allows the barcode and the human-readable text to be styled. Usually, styling barcodes include resizing, setting margins, changing background colors, changing barcode colors, fonts, and verifying that the output barcode is still readable. All these methods are available on the BarcodeWriter object. The width and height are set in pixels.

How to Create a Code 39 Barcode Generator in C#: Figure 8 - How to simply add styling to a BarcodeWriter object

Generate with a Stream Object

The BarcodeWriter object can also work with a Stream object as shown below. This is particularly helpful in web API applications to save memory. A graphics object can also take advantage of this.

How to Create a Code 39 Barcode Generator in C#: Figure 9 - Generating a barcode with a Stream type object

Licensing (Free Trial Available)

IronBarcode requires a license key. The key needs to be placed in appsettings.json.

{
    "IronBarcode.LicenseKey": "MYLICENSE.KEY.TRIAL"
}
JSON

Provide your email to get a trial license. After submitting your email ID, the key will be delivered via email.

How to Create a Code 39 Barcode Generator in C#: Figure 10 - Popup showing a successful trial license application

Conclusion

In this comprehensive guide, we have explored the process of building a Code 39 barcode generator using the C# programming language. Code 39 is versatile and widely used in barcode symbology, known for its simplicity and ability to encode alphanumeric characters. By leveraging the capabilities of the IronBarcode library, we have demonstrated a step-by-step approach to create a C# application capable of generating Code 39 barcodes with optional checksum digits.

As technology continues to advance, the importance of accurate and efficient data encoding and decoding becomes increasingly critical. Building a Code 39 barcode generator in C# not only provides a practical tool for businesses and developers but also serves as an educational exercise in understanding barcode symbologies, checksum algorithms, and the integration of third-party libraries in C# applications.

In conclusion, this guide equips developers with the knowledge and tools needed to create a robust Code 39 barcode generator, fostering the integration of reliable barcode solutions into their projects. Whether you are a seasoned developer or a newcomer to barcode generation, this article provides a solid foundation for further exploration and customization based on the specific requirements of your applications.

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

Related Articles

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