IronBarcode Tutorials Generating Barcode Images in C# .NET How to Generate Barcode Images in C# .NET Applications ByJacob Mellor November 5, 2018 Updated July 13, 2025 Share: Need to quickly generate professional barcode images in your .NET applications? This tutorial shows you exactly how to create, customize, and export barcodes using IronBarcode - from simple one-line implementations to advanced styling techniques that give you complete control over your barcode appearance. View the IronBarcode YouTube Playlist Get started with IronBarcode Start using IronBarcode in your project today with a free trial. First Step: Start for Free How to Generate Barcodes in C# .NET Install IronBarcode via NuGet Package Manager Generate a Simple Barcode with One Line of Code Apply Custom Styling and Annotations to Your Barcode Export Barcodes as Images, PDFs, or HTML Use Fluent API for Efficient Barcode Generation How Do I Install a Barcode Generator Library in C#? Installing IronBarcode takes just seconds using the NuGet Package Manager. You can install it directly through the Package Manager Console or download the DLL manually. Install-Package BarCode IronBarcode provides comprehensive barcode generation capabilities for .NET developers How Can I Generate a Simple Barcode Using C#? Creating your first barcode requires just two lines of code. The example below demonstrates generating a standard Code128 barcode and saving it as an image file. using IronBarCode; // Create a barcode with your desired content and encoding type GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.Code128); // Save the barcode as a PNG image file myBarcode.SaveAsPng("myBarcode.png"); // Optional: Open the generated image in your default viewer System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("myBarcode.png") { UseShellExecute = true }); using IronBarCode; // Create a barcode with your desired content and encoding type GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.Code128); // Save the barcode as a PNG image file myBarcode.SaveAsPng("myBarcode.png"); // Optional: Open the generated image in your default viewer System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo("myBarcode.png") { UseShellExecute = true }); Imports IronBarCode ' Create a barcode with your desired content and encoding type Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.Code128) ' Save the barcode as a PNG image file myBarcode.SaveAsPng("myBarcode.png") ' Optional: Open the generated image in your default viewer System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo("myBarcode.png") With {.UseShellExecute = True}) $vbLabelText $csharpLabel The BarcodeWriter.CreateBarcode() method is your entry point for barcode generation. It accepts two parameters: the data you want to encode and the barcode format from the BarcodeWriterEncoding enum. IronBarcode supports all major barcode formats including Code128, Code39, EAN13, UPC-A, PDF417, DataMatrix, and QR codes. Once generated, the GeneratedBarcode object provides multiple export options. You can save it as various image formats (PNG, JPEG, GIF, TIFF), export to PDF, or even retrieve it as a System.Drawing.Bitmap for further processing in your application. A Code128 barcode generated with IronBarcode displaying a URL Can I Customize the Appearance of Generated Barcodes? IronBarcode offers extensive customization options that go far beyond basic barcode generation. You can add annotations, adjust colors, set margins, and control every aspect of your barcode's appearance. using IronBarCode; using IronSoftware.Drawing; // Create a QR code with advanced styling options GeneratedBarcode myBarCode = BarcodeWriter.CreateBarcode( "https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.QRCode ); // Add descriptive text above the barcode myBarCode.AddAnnotationTextAboveBarcode("Product URL:"); // Display the encoded value below the barcode myBarCode.AddBarcodeValueTextBelowBarcode(); // Set consistent margins around the barcode myBarCode.SetMargins(100); // Customize the barcode color (purple in this example) myBarCode.ChangeBarCodeColor(Color.Purple); // Export as an HTML file for web integration myBarCode.SaveAsHtmlFile("MyBarCode.html"); using IronBarCode; using IronSoftware.Drawing; // Create a QR code with advanced styling options GeneratedBarcode myBarCode = BarcodeWriter.CreateBarcode( "https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.QRCode ); // Add descriptive text above the barcode myBarCode.AddAnnotationTextAboveBarcode("Product URL:"); // Display the encoded value below the barcode myBarCode.AddBarcodeValueTextBelowBarcode(); // Set consistent margins around the barcode myBarCode.SetMargins(100); // Customize the barcode color (purple in this example) myBarCode.ChangeBarCodeColor(Color.Purple); // Export as an HTML file for web integration myBarCode.SaveAsHtmlFile("MyBarCode.html"); Imports IronBarCode Imports IronSoftware.Drawing ' Create a QR code with advanced styling options Private myBarCode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeWriterEncoding.QRCode) ' Add descriptive text above the barcode myBarCode.AddAnnotationTextAboveBarcode("Product URL:") ' Display the encoded value below the barcode myBarCode.AddBarcodeValueTextBelowBarcode() ' Set consistent margins around the barcode myBarCode.SetMargins(100) ' Customize the barcode color (purple in this example) myBarCode.ChangeBarCodeColor(Color.Purple) ' Export as an HTML file for web integration myBarCode.SaveAsHtmlFile("MyBarCode.html") $vbLabelText $csharpLabel The GeneratedBarcode class provides a rich set of methods for customization: Annotations: Use AddAnnotationTextAboveBarcode() and AddAnnotationTextBelowBarcode() to add custom labels or instructions around your barcode Value Display: The AddBarcodeValueTextBelowBarcode() method automatically displays the encoded data in human-readable format Spacing: Control whitespace with SetMargins() to ensure proper scanning and visual appeal Colors: Change foreground and background colors using ChangeBarCodeColor() and ChangeBackgroundColor() Export Options: Save as image files, PDFs, or self-contained HTML documents A styled QR code featuring custom color and annotation text For detailed customization options, explore the GeneratedBarcode class documentation which covers all available styling methods and properties. How Do I Create and Export a Barcode in One Line of Code? IronBarcode implements a fluent API design pattern that enables method chaining for more concise and readable code. This approach is particularly useful when applying multiple transformations to your barcode. using IronBarCode; using IronSoftware.Drawing; // Generate, style, and convert a barcode in a single statement string value = "https://ironsoftware.com/csharp/barcode"; // Create PDF417 barcode with chained operations AnyBitmap barcodeBitmap = BarcodeWriter .CreateBarcode(value, BarcodeWriterEncoding.PDF417) // Create PDF417 barcode .ResizeTo(300, 200) // Set specific dimensions .SetMargins(10) // Add 10px margins .ToBitmap(); // Convert to bitmap // Convert to System.Drawing.Bitmap for legacy compatibility System.Drawing.Bitmap legacyBitmap = barcodeBitmap; using IronBarCode; using IronSoftware.Drawing; // Generate, style, and convert a barcode in a single statement string value = "https://ironsoftware.com/csharp/barcode"; // Create PDF417 barcode with chained operations AnyBitmap barcodeBitmap = BarcodeWriter .CreateBarcode(value, BarcodeWriterEncoding.PDF417) // Create PDF417 barcode .ResizeTo(300, 200) // Set specific dimensions .SetMargins(10) // Add 10px margins .ToBitmap(); // Convert to bitmap // Convert to System.Drawing.Bitmap for legacy compatibility System.Drawing.Bitmap legacyBitmap = barcodeBitmap; Imports IronBarCode Imports IronSoftware.Drawing ' Generate, style, and convert a barcode in a single statement Private value As String = "https://ironsoftware.com/csharp/barcode" ' Create PDF417 barcode with chained operations Private barcodeBitmap As AnyBitmap = BarcodeWriter.CreateBarcode(value, BarcodeWriterEncoding.PDF417).ResizeTo(300, 200).SetMargins(10).ToBitmap() ' Convert to bitmap ' Convert to System.Drawing.Bitmap for legacy compatibility Private legacyBitmap As System.Drawing.Bitmap = barcodeBitmap $vbLabelText $csharpLabel The fluent API pattern offers several advantages: Readability: Chain operations in a logical sequence that reads like natural language Efficiency: Reduce variable declarations and intermediate steps Flexibility: Easily add or remove operations without restructuring your code Common fluent operations include: ResizeTo(): Control exact barcode dimensions SetMargins(): Add consistent spacing ChangeBarCodeColor(): Modify appearance AddAnnotationTextAboveBarcode(): Include descriptive text ToBitmap(), SaveAsPng(), SaveAsPdf(): Export in various formats A PDF417 barcode generated using fluent method chaining What Barcode Formats Are Supported by IronBarcode? IronBarcode supports comprehensive barcode format generation through the BarcodeWriterEncoding enum. Supported formats include: 1D Barcodes: Code128, Code39, Code93, Codabar, ITF, MSI, Plessey, UPCA, UPCE, EAN8, EAN13 2D Barcodes: QRCode, DataMatrix, PDF417, Aztec, MaxiCode Specialized Formats: IntelligentMail, DataBar, DataBarExpanded, and various GS1 standards Each format has specific characteristics and use cases. For example, QR codes excel at storing URLs and large amounts of data, while EAN13 is standard for retail products. Learn more about choosing the right barcode format for your application. How Can I Verify My Generated Barcode Is Readable? Quality assurance is critical for barcode implementation. IronBarcode includes built-in verification to ensure your generated barcodes remain scannable: // Generate and verify a barcode GeneratedBarcode myBarcode = BarcodeWriter .CreateBarcode("TEST123", BarcodeWriterEncoding.Code128) .ResizeTo(200, 100) .ChangeBarCodeColor(Color.DarkBlue); // Verify the barcode is still readable after modifications bool isReadable = myBarcode.Verify(); Console.WriteLine($"Barcode verification: {(isReadable ? "PASS" : "FAIL")}"); // Generate and verify a barcode GeneratedBarcode myBarcode = BarcodeWriter .CreateBarcode("TEST123", BarcodeWriterEncoding.Code128) .ResizeTo(200, 100) .ChangeBarCodeColor(Color.DarkBlue); // Verify the barcode is still readable after modifications bool isReadable = myBarcode.Verify(); Console.WriteLine($"Barcode verification: {(isReadable ? "PASS" : "FAIL")}"); ' Generate and verify a barcode Dim myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("TEST123", BarcodeWriterEncoding.Code128).ResizeTo(200, 100).ChangeBarCodeColor(Color.DarkBlue) ' Verify the barcode is still readable after modifications Dim isReadable As Boolean = myBarcode.Verify() Console.WriteLine($"Barcode verification: {(If(isReadable, "PASS", "FAIL"))}") $vbLabelText $csharpLabel The Verify() method checks whether your barcode remains machine-readable after applying transformations like resizing or recoloring. This is especially important when using non-standard colors or very small sizes. Where Can I Find More Barcode Generation Examples? To expand your barcode generation capabilities, explore these additional resources: Source Code and Examples Download the complete source code for this tutorial: GitHub Repository C# Source Code ZIP Advanced Topics Generate QR Codes with Logos - Add branding to your QR codes Barcode Styling Guide - Master advanced customization techniques Reading Barcodes from Images - Complete the cycle with barcode scanning Batch Barcode Generation - Generate multiple barcodes efficiently API Documentation BarcodeWriter Class Reference - Complete method documentation GeneratedBarcode Class Reference - All customization options BarcodeWriterEncoding Enum - Supported barcode formats Ready to Generate Professional Barcodes in Your Application? IronBarcode makes barcode generation straightforward while providing the flexibility needed for professional applications. Whether you need simple product codes or complex 2D barcodes with custom styling, IronBarcode handles it all with minimal code. Download IronBarcode today and start generating barcodes in minutes. Need help choosing the right license? Check our licensing options or request a free trial key to test IronBarcode in your production environment. Frequently Asked Questions How do I generate a barcode image in C#? You can generate a barcode image in C# using IronBarcode's BarcodeWriter.CreateBarcode() method. Simply pass your data and the desired encoding format, then save using methods like SaveAsPng() or SaveAsJpeg(). What barcode formats can I create in .NET? IronBarcode supports all major barcode formats including Code128, Code39, EAN13, UPC-A, QR codes, DataMatrix, PDF417, and many more through the BarcodeWriterEncoding enum. Can I customize barcode colors and add text annotations? Yes, IronBarcode provides extensive customization options. Use ChangeBarCodeColor() to modify colors, AddAnnotationTextAboveBarcode() for labels, and SetMargins() for spacing control. How do I export a barcode to different file formats? IronBarcode's GeneratedBarcode class offers multiple export methods: SaveAsPng(), SaveAsJpeg(), SaveAsPdf(), SaveAsHtmlFile(), or ToBitmap() for in-memory processing. What's the fastest way to create a styled barcode in one line? IronBarcode's fluent API allows method chaining: BarcodeWriter.CreateBarcode(data, encoding).ResizeTo(300, 200).SetMargins(10).SaveAsPng(path) creates, styles, and saves in one statement. How can I verify my generated barcode is scannable? Use the Verify() method on any GeneratedBarcode object to ensure it remains machine-readable after styling or resizing modifications. Can I generate QR codes with custom logos? Yes, IronBarcode supports QR code generation with embedded logos using the QRCodeWriter class, which provides advanced QR-specific features including logo insertion and error correction levels. Is it possible to generate multiple barcodes efficiently? IronBarcode is optimized for batch processing. You can generate multiple barcodes in loops or use parallel processing for high-volume barcode generation scenarios. What image formats are supported for barcode export? IronBarcode can export barcodes as PNG, JPEG, GIF, TIFF, BMP, PDF, and HTML formats, providing flexibility for various application requirements. How do I add human-readable text below a barcode? Use the AddBarcodeValueTextBelowBarcode() method to automatically display the encoded value in human-readable format below the barcode image. Jacob Mellor Chat with engineering team now Chief Technology Officer Jacob Mellor is Chief Technology Officer at Iron Software and a visionary engineer pioneering C# PDF technology. As the original developer behind Iron Software's core codebase, he has shaped the company's product architecture since its inception, transforming it alongside CEO Cameron Rimington into a 50+ person company serving NASA, Tesla, and global government agencies.Jacob holds a First-Class Honours Bachelor of Engineering (BEng) in Civil Engineering from the University of Manchester (1998–2001). After opening his first software business in London in 1999 and creating his first .NET components in 2005, he specialized in solving complex problems across the Microsoft ecosystem.His flagship IronPDF & IronSuite .NET libraries have achieved over 30 million NuGet installations globally, with his foundational code continuing to power developer tools used worldwide. With 25 years of commercial experience and 41 years of coding expertise, Jacob remains focused on driving innovation in enterprise-grade C#, Java, and Python PDF technologies while mentoring the next generation of technical leaders. Ready to Get Started? Free NuGet Download Total downloads: 1,731,487 View Licenses