diff --git a/components/barcodes/barcode/overview.md b/components/barcodes/barcode/overview.md
index 497db50dfc..e9a8002fd7 100644
--- a/components/barcodes/barcode/overview.md
+++ b/components/barcodes/barcode/overview.md
@@ -133,5 +133,6 @@ The nested `BarcodePadding` tag exposes parameters that enable you to customize
## See Also
- * [Live Demo: Barcode](https://demos.telerik.com/blazor-ui/barcode/overview)
- * [Live Demo: Barcode Encoding](https://demos.telerik.com/blazor-ui/barcode/encodings)
\ No newline at end of file
+* [Live Demo: Barcode](https://demos.telerik.com/blazor-ui/barcode/overview)
+* [Live Demo: Barcode Encoding](https://demos.telerik.com/blazor-ui/barcode/encodings)
+* [Export Barcode to Image]({%slug qrcode-barcode-chart-kb-export-to-image%})
diff --git a/components/barcodes/qrcode/overview.md b/components/barcodes/qrcode/overview.md
index 7fa7f3c48d..6145e053a7 100644
--- a/components/barcodes/qrcode/overview.md
+++ b/components/barcodes/qrcode/overview.md
@@ -94,4 +94,5 @@ The nested `QRCodeBorder` tag exposes parameters that enable you to customize th
## See Also
- * [Live Demo: QRCode](https://demos.telerik.com/blazor-ui/qrcode/overview)
+* [Live Demo: QRCode](https://demos.telerik.com/blazor-ui/qrcode/overview)
+* [Export QRCode to Image]({%slug qrcode-barcode-chart-kb-export-to-image%})
diff --git a/knowledge-base/qrcode-barcode-chart-export-to-image.md b/knowledge-base/qrcode-barcode-chart-export-to-image.md
new file mode 100644
index 0000000000..105066838a
--- /dev/null
+++ b/knowledge-base/qrcode-barcode-chart-export-to-image.md
@@ -0,0 +1,263 @@
+---
+title: Export QRCode, Barcode, or Chart to Image
+description: Learn how to convert and export a Telerik Blazor QRCode, Barcode, or Chart to an image and send it to the .NET runtime.
+type: how-to
+page_title: How to Export Telerik QRCode, Barcode, or Chart to Image
+slug: qrcode-barcode-chart-kb-export-to-image
+tags: telerik, blazor, qrcode, barcode, chart
+ticketid: 1572189, 1588186, 1667798
+res_type: kb
+---
+
+## Environment
+
+
+
+
+ Product |
+
+ QRCode for Blazor,
+ Barcode for Blazor,
+ Chart for Blazor
+ |
+
+
+
+
+## Description
+
+This KB answers the following questions:
+
+* How to export a generated QRCode to a PNG or JPG image for saving on the server or download?
+* How to create an image from the Telerik QRCode for Blazor?
+* How to convert a Barcode, Chart, or QRCode from SVG to an image?
+* How to save a Barcode or QRCode as an image?
+
+## Solution
+
+Use `JSInterop` and JavaScript APIs to convert the Telerik component to a Base64 string and send it to the server.
+
+When using the `Canvas` `RenderingMode` of the Telerik component (Barcode, Chart, QRCode), use the [`toDataURL`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL) method of the `canvas` HTML element to obtain a Base64 data URI for the image.
+
+When using the `SVG` rendering mode:
+
+1. Use an [`XMLSerializer`](https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer) to create an image [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob).
+1. Create a `canvas` element and [get its 2D context](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext).
+1. [Draw the image](https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/drawImage) into the `canvas` element.
+1. Use the [`toDataURL`](https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toDataURL) method of the `canvas` HTML element to obtain a Base64 data URI for the image.
+
+> When using a Blazor app with **Server** render mode, make sure to [increase the SignalR max message size]({%slug common-kb-increase-signalr-max-message-size%}), otherwise the Base64 data URI may not reach the .NET runtime.
+
+>caption Export QRCode, BarCode, or Chart to Image
+
+````RAZOR
+@inject IJSRuntime js
+
+
+
+ Use SVG
+
+
+ Use Canvas
+
+
+
+Export to PNG
+
+
+
+
@RenderingMode QR Code
+
+
+
+ @if (!string.IsNullOrEmpty(QrImageDataUrl))
+ {
+
QR Code PNG
+

+ }
+
+
+
+
@RenderingMode Chart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ @if (!string.IsNullOrEmpty(ChartImageDataUrl))
+ {
+
Chart PNG
+

+ }
+
+
+
+@* Move JavaScript code to a separate JS file *@
+
+
+@code {
+ #nullable enable
+
+ private RenderingMode RenderingMode { get; set; } = RenderingMode.SVG;
+
+ private string QrImageDataUrl { get; set; } = string.Empty;
+ private string ChartImageDataUrl { get; set; } = string.Empty;
+
+ private List SeriesData1 { get; set; } = new();
+ private List SeriesData2 { get; set; } = new();
+
+ private async Task OnQrCodeExportButtonClick()
+ {
+ string jsFunctionName = RenderingMode == RenderingMode.SVG ? "getImageFromSvg" : "getImageFromCanvas";
+
+ QrImageDataUrl = await js.InvokeAsync(jsFunctionName, ".exportable-qrcode");
+ ChartImageDataUrl = await js.InvokeAsync(jsFunctionName, ".exportable-chart");
+ }
+
+ private void ToggleRenderingMode(RenderingMode newMode)
+ {
+ RenderingMode = newMode;
+
+ QrImageDataUrl = ChartImageDataUrl = string.Empty;
+ }
+
+ #region Data Generation
+
+ protected override async Task OnInitializedAsync()
+ {
+ var now = DateTime.Today;
+ var monthsBack = 6;
+
+ for (int i = 1; i <= monthsBack; i++)
+ {
+ var dateTimeValue = now.AddMonths(-monthsBack + i);
+
+ SeriesData1.Add(new ChartModel()
+ {
+ Id = i,
+ Product = "Product 1",
+ Revenue = Random.Shared.Next(1, 900),
+ TimePeriod = dateTimeValue
+ });
+
+ SeriesData2.Add(new ChartModel()
+ {
+ Id = i,
+ Product = "Product 2",
+ Revenue = Random.Shared.Next(1, 900),
+ TimePeriod = dateTimeValue
+ });
+ }
+
+ await base.OnInitializedAsync();
+ }
+
+ public class ChartModel
+ {
+ public int Id { get; set; }
+ public string Product { get; set; } = string.Empty;
+ public DateTime TimePeriod { get; set; }
+ public decimal Revenue { get; set; }
+ }
+
+ #endregion Data Generation
+}
+````
+
+> The example in this KB article demonstrates JavaScript APIs, which are not subject to Telerik technical support.
+
+## See Also
+
+* [Barcode Overview]({%slug barcode-overview%})
+* [Chart Overview]({%slug components/chart/overview%})
+* [QRCore Overview]({%slug qrcode-overview%})