diff --git a/next.config.mjs b/next.config.mjs
index 8d526a6..9902ae7 100644
--- a/next.config.mjs
+++ b/next.config.mjs
@@ -1,18 +1,18 @@
-import os from 'os';
-import path from 'path';
-
-function isWslOnWindowsMount() {
- return process.platform === 'linux' && process.cwd().startsWith('/mnt/');
-}
-
-/** @type {import('next').NextConfig} */
-const nextConfig = {
- output: 'standalone',
- skipTrailingSlashRedirect: true,
- eslint: {
- ignoreDuringBuilds: true,
- },
- images: {
+import os from 'os';
+import path from 'path';
+
+function isWslOnWindowsMount() {
+ return process.platform === 'linux' && process.cwd().startsWith('/mnt/');
+}
+
+/** @type {import('next').NextConfig} */
+const nextConfig = {
+ output: 'standalone',
+ skipTrailingSlashRedirect: true,
+ eslint: {
+ ignoreDuringBuilds: true,
+ },
+ images: {
unoptimized: false,
remotePatterns: [
{ protocol: 'https', hostname: 'www.qrmaster.net' },
@@ -29,23 +29,23 @@ const nextConfig = {
// Allow build to succeed even with prerender errors
// Pages with useSearchParams() will be rendered dynamically at runtime
staticPageGenerationTimeout: 120,
- onDemandEntries: {
- maxInactiveAge: 25 * 1000,
- pagesBufferLength: 2,
- },
- poweredByHeader: false,
- webpack: (config, { dev }) => {
- if (!dev && isWslOnWindowsMount()) {
- config.cache = {
- type: 'filesystem',
- cacheDirectory: path.join(os.tmpdir(), 'qrmaster-next-webpack-cache'),
- };
- }
-
- return config;
- },
- async redirects() {
- return [
+ onDemandEntries: {
+ maxInactiveAge: 25 * 1000,
+ pagesBufferLength: 2,
+ },
+ poweredByHeader: false,
+ webpack: (config, { dev }) => {
+ if (!dev && isWslOnWindowsMount()) {
+ config.cache = {
+ type: 'filesystem',
+ cacheDirectory: path.join(os.tmpdir(), 'qrmaster-next-webpack-cache'),
+ };
+ }
+
+ return config;
+ },
+ async redirects() {
+ return [
{
source: '/create-qr',
destination: '/dynamic-qr-code-generator',
@@ -71,14 +71,9 @@ const nextConfig = {
destination: '/tools/call-qr-code-generator',
permanent: true,
},
- {
- source: '/barcode-generator',
- destination: '/tools/barcode-generator',
- permanent: true,
- },
{
source: '/bar-code-generator',
- destination: '/tools/barcode-generator',
+ destination: '/barcode-generator',
permanent: true,
},
{
diff --git a/quora_antwort_statisch_dynamisch.txt b/quora_antwort_statisch_dynamisch.txt
new file mode 100644
index 0000000..57f4b75
--- /dev/null
+++ b/quora_antwort_statisch_dynamisch.txt
@@ -0,0 +1,45 @@
+Frage: Was ist der Unterschied zwischen statischen und dynamischen QR-Codes, und welche eignen sich am besten für welche Zwecke?
+
+---
+
+Kurz gesagt: Der Unterschied liegt darin, was im QR-Code steckt.
+
+Ein statischer QR-Code kodiert die Ziel-URL direkt ins Muster. Einmal gedruckt, ist alles fest — du kannst nichts mehr ändern. Ändert sich deine URL, ist der Code wertlos.
+
+Ein dynamischer QR-Code kodiert nur eine kurze Weiterleitungs-URL (z.B. qrmaster.net/r/xyz). Wo die hinführt, steuerst du jederzeit über ein Dashboard — ohne den gedruckten Code anzufassen.
+
+---
+
+Wann statisch reicht:
+
+- WLAN-Passwort, das sich nie ändert
+- Einmalige Events (z.B. Einlass-Scan)
+- Visitenkarte mit fixer vCard
+- Alles, wo du sicher bist, dass sich die URL nie ändert
+
+Wann dynamisch die bessere Wahl ist:
+
+- Restaurantmenüs, Flyer, Plakate — alles was länger gedruckt bleibt
+- Marketingkampagnen mit wechselnden Landingpages
+- Wenn du wissen willst, wer, wann und womit gescannt hat
+- Wenn du nach dem Druck noch einen Tippfehler in der URL korrigieren willst
+
+---
+
+Was viele unterschätzen — die Druckkosten:
+
+Statische Codes wirken erstmal kostenlos. Aber sobald sich die URL ändert, musst du alles neu drucken.
+
+Beispiel: 500 Flyer à 0,18 € = 90 € pro Neudruck. Wer das zweimal im Jahr macht, hat den Preis eines Jahresabos für dynamische Codes längst überschritten.
+
+---
+
+Was dynamische Codes zusätzlich bieten:
+
+- Scan-Statistiken: Gerät, Land, Uhrzeit
+- UTM-Parameter für Google Analytics
+- Zentrale Verwaltung aller Codes im Dashboard
+
+Für eigene Kampagnen nutze ich den dynamischen QR-Code-Generator von QR Master (https://www.qrmaster.net/dynamic-qr-code-generator) — Ziele lassen sich nach dem Druck in Sekunden ändern, und man sieht genau welcher Code wie performt.
+
+Fazit: Für einmaligen Privatgebrauch reicht statisch völlig. Sobald QR-Codes gedruckt werden und länger im Einsatz sind, ist dynamisch fast immer die günstigere Wahl.
diff --git a/src/app/(main)/(app)/bulk-creation/page.tsx b/src/app/(main)/(app)/bulk-creation/page.tsx
index 3c63b80..b1b97c2 100644
--- a/src/app/(main)/(app)/bulk-creation/page.tsx
+++ b/src/app/(main)/(app)/bulk-creation/page.tsx
@@ -285,6 +285,7 @@ export default function BulkCreationPage() {
};
const saveQRCodesToDatabase = async () => {
+ if (isDynamic) return; // dynamic codes are already saved during generation
setLoading(true);
try {
@@ -817,12 +818,14 @@ export default function BulkCreationPage() {
Download All as ZIP
-
+ {!isDynamic && (
+
+ )}
diff --git a/src/app/(main)/(marketing)/dynamic-qr-code-generator/page.tsx b/src/app/(main)/(marketing)/dynamic-qr-code-generator/page.tsx
index 5bb6419..8d341c5 100644
--- a/src/app/(main)/(marketing)/dynamic-qr-code-generator/page.tsx
+++ b/src/app/(main)/(marketing)/dynamic-qr-code-generator/page.tsx
@@ -262,6 +262,16 @@ const softwareSchema = {
},
description:
'Create dynamic QR codes that can be updated after printing. Change destinations later and review scan context from one dashboard.',
+ speakable: {
+ '@type': 'SpeakableSpecification',
+ cssSelector: ['h1', '.answer-first-block', '.bg-green-50'],
+ },
+ author: {
+ '@type': 'Person',
+ name: 'Timo Knuth',
+ url: 'https://www.qrmaster.net/authors/timo',
+ },
+ dateModified: '2026-04-27',
featureList: [
'Edit QR code destinations after printing',
'Review scan analytics in the dashboard',
diff --git a/src/app/(main)/(marketing)/tools/barcode-generator/page.tsx b/src/app/(main)/(marketing)/tools/barcode-generator/page.tsx
index 21bf367..0f15de1 100644
--- a/src/app/(main)/(marketing)/tools/barcode-generator/page.tsx
+++ b/src/app/(main)/(marketing)/tools/barcode-generator/page.tsx
@@ -52,6 +52,22 @@ const jsonLd = {
'/barcode-generator-preview.png',
'UtilitiesApplication'
),
+ {
+ '@type': 'WebPage',
+ '@id': 'https://www.qrmaster.net/tools/barcode-generator',
+ name: 'Free Barcode Generator Online – EAN, UPC, Code 128',
+ description: 'A barcode generator converts any number or text into a scannable barcode image for retail labels, inventory, and product packaging. Supports EAN-13, UPC-A, and Code 128.',
+ speakable: {
+ '@type': 'SpeakableSpecification',
+ cssSelector: ['.bg-blue-50', 'h1'],
+ },
+ author: {
+ '@type': 'Person',
+ name: 'Timo Knuth',
+ url: 'https://www.qrmaster.net/authors/timo',
+ },
+ dateModified: '2026-04-27',
+ },
{
'@type': 'HowTo',
name: 'How to Create a Barcode',
@@ -239,6 +255,58 @@ export default function BarcodeGeneratorPage() {
+ {/* AI-EXTRACTABLE DEFINITION + STATS BLOCK */}
+
+
+
+
What is a Barcode Generator?
+
+ A barcode generator is an online tool that converts a number or text string into a scannable barcode image (EAN-13, UPC-A, or Code 128). The generated barcode can be downloaded as PNG or SVG and printed on product labels, packaging, or inventory stickers for use with any standard barcode scanner.
+
+
+
+
+
EAN-13
+
Global Retail Standard
+
Used on over 5 billion product labels worldwide (GS1, 2024)
+
+
+
UPC-A
+
North America Standard
+
Required by Amazon, Walmart, Target for product listings
+
+
+
Code 128
+
Inventory & Logistics
+
Supports letters + numbers — best for internal SKU systems
+
+
+
+
Barcode vs. QR Code — When to Use Which
+
+
+
✓ Use a barcode for:
+
+
Product SKUs and retail checkout
+
Warehouse shelf and bin labels
+
Inventory counting and stock control
+
Order fulfillment and packing verification
+
+
+
+
✓ Use a QR code for:
+
+
Restaurant menus and digital content
+
Marketing campaigns and landing pages
+
Review collection and customer feedback
+
Product setup guides and support pages
+
+
+
+
+
+
+
{/* HOW IT WORKS */}
diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts
index a148210..0beb684 100644
--- a/src/app/sitemap.ts
+++ b/src/app/sitemap.ts
@@ -50,10 +50,17 @@ export default function sitemap(): MetadataRoute.Sitemap {
'barcode-generator': 0.95,
};
+ const toolLastModified: Record = {
+ 'barcode-generator': new Date('2026-04-27'),
+ 'vcard-qr-code': new Date('2026-04-27'),
+ 'instagram-qr-code': new Date('2026-04-27'),
+ 'wifi-qr-code': new Date('2026-04-27'),
+ };
+
const toolPages = freeTools.map((slug) => ({
url: `${baseUrl}/tools/${slug}`,
- lastModified: new Date(),
- changeFrequency: 'monthly' as const,
+ lastModified: toolLastModified[slug] ?? new Date('2026-01-01'),
+ changeFrequency: slug === 'barcode-generator' ? 'weekly' as const : 'monthly' as const,
priority: highPriorityTools[slug] ?? 0.8,
}));
@@ -202,9 +209,9 @@ export default function sitemap(): MetadataRoute.Sitemap {
},
{
url: `${baseUrl}/dynamic-qr-code-generator`,
- lastModified: new Date(),
- changeFrequency: 'monthly',
- priority: 0.9,
+ lastModified: new Date('2026-04-27'),
+ changeFrequency: 'weekly',
+ priority: 0.95,
},
{
url: `${baseUrl}/dynamic-barcode-generator`,
diff --git a/src/components/ui/Footer.tsx b/src/components/ui/Footer.tsx
index 42c176c..539f3de 100644
--- a/src/components/ui/Footer.tsx
+++ b/src/components/ui/Footer.tsx
@@ -63,6 +63,8 @@ export function Footer({ variant = 'marketing', t }: FooterProps) {
{translations.full_pricing}
{translations.all_questions}
{translations.all_articles}
+
Barcode Generator
+
Dynamic QR Code Generator
Bulk QR Generator
Dynamic Barcode Generator
@@ -120,6 +122,7 @@ export function Footer({ variant = 'marketing', t }: FooterProps) {
{translations.privacy_policy}
Contact
QR Code Erstellen (DE)
+
Barcode Generator (DE)
diff --git a/src/lib/blog-data.ts b/src/lib/blog-data.ts
index 31abcb3..aeabe4b 100644
--- a/src/lib/blog-data.ts
+++ b/src/lib/blog-data.ts
@@ -68,7 +68,7 @@ export const blogPosts: BlogPost[] = [
answer: "Only if your subscription expires. As long as your account is active, dynamic QR codes redirect indefinitely. QR Master offers a free tier with basic dynamic codes so you can test before committing.",
},
],
- relatedSlugs: ["trackable-qr-codes", "microsoft-teams-qr-code"],
+ relatedSlugs: ["trackable-qr-codes", "microsoft-teams-qr-code", "barcode-generator-tool"],
sources: [
{ name: "ISO/IEC 18004:2015 — QR Code bar code symbology specification", url: "https://www.iso.org/standard/62021.html", accessDate: "April 2026" },
{ name: "Denso Wave — QR Code inventor, official QR code information", url: "https://www.qrcode.com/en/about/", accessDate: "April 2026" },
@@ -584,7 +584,7 @@ export const blogPosts: BlogPost[] = [
{ question: "Can I track QR codes for free?", answer: "Basic tracking may be free in some tools, but advanced analytics usually requires dynamic QR features." },
{ question: "What's the best QR code use case for ROI?", answer: "Lead capture, reviews/feedback, menu ordering, and promotions work best when tracked and optimized." },
],
- relatedSlugs: ["qr-code-marketing", "qr-code-analytics", "free-vs-paid-qr-generator", "best-qr-code-generator-2026"],
+ relatedSlugs: ["qr-code-marketing", "qr-code-analytics", "free-vs-paid-qr-generator", "best-qr-code-generator-2026", "barcode-generator-tool"],
authorName: "Timo Knuth",
authorTitle: "QR Code & Marketing Expert",
content: `
@@ -735,7 +735,7 @@ export const blogPosts: BlogPost[] = [
{ question: "Do dynamic QR codes expire?", answer: "They can if the service is disabled. Keep the plan/account active for long-term campaigns." },
{ question: "Why do dynamic QR codes enable tracking?", answer: "Because scans go through a redirect that logs scan events before sending users to the final destination." },
],
- relatedSlugs: ["qr-code-tracking-guide-2025", "trackable-qr-codes", "free-vs-paid-qr-generator", "best-qr-code-generator-2026"],
+ relatedSlugs: ["qr-code-tracking-guide-2025", "trackable-qr-codes", "free-vs-paid-qr-generator", "best-qr-code-generator-2026", "barcode-generator-tool"],
authorName: "Timo Knuth",
authorTitle: "QR Code & Marketing Expert",
sources: [
@@ -788,7 +788,7 @@ export const blogPosts: BlogPost[] = [
{ question: "How many QR codes can I generate at once?", answer: "Depends on the tool/plan. For large batches, use bulk features with limits (e.g., 1,000 rows)." },
{ question: "How do I add UTM tracking for each QR?", answer: "Add UTM columns or append UTMs in your URL column before upload." },
],
- relatedSlugs: ["qr-code-api-documentation", "qr-code-tracking-guide-2025", "dynamic-vs-static-qr-codes", "qr-code-print-size-guide"],
+ relatedSlugs: ["qr-code-api-documentation", "qr-code-tracking-guide-2025", "dynamic-vs-static-qr-codes", "qr-code-print-size-guide", "barcode-generator-tool"],
authorName: "Timo Knuth",
authorTitle: "QR Code & Marketing Expert",
sources: [
@@ -907,17 +907,66 @@ export const blogPosts: BlogPost[] = [
{ question: "Is this barcode generator free for commercial use?", answer: "Yes—our tool lets you generate and download high-resolution barcode images for commercial packaging and labels." },
{ question: "How do I print barcode labels correctly?", answer: "Use a high-resolution printer (300 DPI+) and ensure high contrast, typically black bars on a solid white background, to ensure reliable scanning." },
],
- relatedSlugs: ["dynamic-vs-static-qr-codes", "qr-code-print-size-guide"],
+ relatedSlugs: ["dynamic-vs-static-qr-codes", "qr-code-print-size-guide", "qr-code-small-business", "bulk-qr-code-generator-excel"],
authorName: "Timo Knuth",
authorTitle: "QR Code & Marketing Expert",
content: `
- Author: Timo Knuth, QR Code & Marketing Expert
+ Author: Timo Knuth, QR Code & Marketing Expert
📅 Published: January 29, 2026 | Last updated: January 26, 2026
-
Free Barcode Generator
Content coming soon.
`
+
+
What Is a Barcode Generator?
+
A barcode generator is a tool that turns a number or text string into a scannable barcode image. You enter a value — a SKU, product ID, or inventory code — and the tool outputs a barcode you can download and print on labels, packaging, or shelf tags.
+
QR Master includes a free barcode generator that supports the most common formats used in retail and inventory management: EAN-13, UPC-A, and Code 128. No account required, no watermarks.
+
+
Supported Barcode Formats
+
+
EAN-13 — The global standard for retail products. Used on nearly every consumer product sold outside North America. Requires a 13-digit number.
+
UPC-A — The North American retail standard. 12 digits. Used by Amazon, Walmart, Target, and most US/Canada retail systems.
+
Code 128 — The most flexible format. Supports letters and numbers. Ideal for internal inventory codes, warehouse labels, and shipping references.
Select the barcode type (EAN-13 for retail, Code 128 for inventory).
+
Enter your code number or alphanumeric string.
+
Download as PNG (for digital use) or SVG (for print, scales without blurring).
+
Test the printed barcode with a scanner or smartphone app before mass printing.
+
+
+
Barcode vs. QR Code: When to Use Which
+
Barcodes and QR codes solve different problems. Use a barcode when the code identifies a physical item in an internal or retail system. Use a QR code when you want a customer or employee to scan and open a URL, form, or digital resource.
If the QR code destination might change after printing, use a dynamic QR code — the printed code stays the same, but you can update the link at any time.
+
+
Printing Tips for Reliable Scanning
+
+
Use black bars on a white background — avoid colored barcodes unless tested
+
Print at 300 DPI or higher for physical labels
+
Leave a quiet zone (blank margin) around the barcode of at least 10 bar widths
+
Minimum recommended width: 25mm for EAN-13, 20mm for Code 128
+
Always scan a printed test copy before ordering bulk labels
+
+
+
Use Cases
+
The most common uses for an online barcode generator include:
+
+
Product labels — give every SKU a scannable identity before retail listing
+
Inventory management — label storage bins, shelves, and stock items
+
eCommerce fulfillment — reduce packing errors by scanning products during order picking
+
Event tickets — generate unique codes per ticket for check-in scanning
+
Internal asset tracking — label equipment, tools, and office assets