This commit is contained in:
Timo Knuth
2026-04-27 22:21:52 +02:00
parent c4fac0f726
commit 9b31e77daa
9 changed files with 371 additions and 56 deletions

View File

@@ -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() {
</svg>
Download All as ZIP
</Button>
<Button onClick={saveQRCodesToDatabase} loading={loading}>
<svg className="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7H5a2 2 0 00-2 2v9a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-3m-1 4l-3 3m0 0l-3-3m3 3V4" />
</svg>
Save QR Codes
</Button>
{!isDynamic && (
<Button onClick={saveQRCodesToDatabase} loading={loading}>
<svg className="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M8 7H5a2 2 0 00-2 2v9a2 2 0 002 2h14a2 2 0 002-2V9a2 2 0 00-2-2h-3m-1 4l-3 3m0 0l-3-3m3 3V4" />
</svg>
Save QR Codes
</Button>
)}
</div>
</CardContent>
</Card>

View File

@@ -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',

View File

@@ -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() {
<BarcodeGeneratorClient />
</section>
{/* AI-EXTRACTABLE DEFINITION + STATS BLOCK */}
<section className="py-12 px-4 sm:px-6 lg:px-8 bg-white border-b border-slate-100">
<div className="max-w-4xl mx-auto">
<div className="bg-blue-50 border-l-4 border-blue-500 rounded-xl p-6 mb-8">
<h2 className="text-xl font-bold text-slate-900 mb-2">What is a Barcode Generator?</h2>
<p className="text-slate-700 leading-relaxed">
A <strong>barcode generator</strong> 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.
</p>
</div>
<div className="grid md:grid-cols-3 gap-6 mb-8">
<div className="text-center p-5 rounded-xl bg-slate-50 border border-slate-200">
<div className="text-3xl font-extrabold text-blue-600 mb-1">EAN-13</div>
<div className="text-sm font-semibold text-slate-700 mb-1">Global Retail Standard</div>
<div className="text-xs text-slate-500">Used on over 5 billion product labels worldwide (GS1, 2024)</div>
</div>
<div className="text-center p-5 rounded-xl bg-slate-50 border border-slate-200">
<div className="text-3xl font-extrabold text-blue-600 mb-1">UPC-A</div>
<div className="text-sm font-semibold text-slate-700 mb-1">North America Standard</div>
<div className="text-xs text-slate-500">Required by Amazon, Walmart, Target for product listings</div>
</div>
<div className="text-center p-5 rounded-xl bg-slate-50 border border-slate-200">
<div className="text-3xl font-extrabold text-blue-600 mb-1">Code 128</div>
<div className="text-sm font-semibold text-slate-700 mb-1">Inventory &amp; Logistics</div>
<div className="text-xs text-slate-500">Supports letters + numbers best for internal SKU systems</div>
</div>
</div>
<div className="bg-amber-50 border border-amber-200 rounded-xl p-5">
<h3 className="font-bold text-slate-900 mb-2">Barcode vs. QR Code When to Use Which</h3>
<div className="grid md:grid-cols-2 gap-4 text-sm text-slate-700">
<div>
<p className="font-semibold text-slate-800 mb-1"> Use a barcode for:</p>
<ul className="space-y-1 list-disc list-inside text-slate-600">
<li>Product SKUs and retail checkout</li>
<li>Warehouse shelf and bin labels</li>
<li>Inventory counting and stock control</li>
<li>Order fulfillment and packing verification</li>
</ul>
</div>
<div>
<p className="font-semibold text-slate-800 mb-1"> Use a QR code for:</p>
<ul className="space-y-1 list-disc list-inside text-slate-600">
<li>Restaurant menus and digital content</li>
<li>Marketing campaigns and landing pages</li>
<li>Review collection and customer feedback</li>
<li>Product setup guides and support pages</li>
</ul>
</div>
</div>
</div>
</div>
</section>
{/* HOW IT WORKS */}
<section className="py-16 px-4 sm:px-6 lg:px-8 bg-white">
<div className="max-w-4xl mx-auto">

View File

@@ -50,10 +50,17 @@ export default function sitemap(): MetadataRoute.Sitemap {
'barcode-generator': 0.95,
};
const toolLastModified: Record<string, Date> = {
'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`,