mehr SEO
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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 & 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">
|
||||
|
||||
@@ -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`,
|
||||
|
||||
@@ -63,6 +63,8 @@ export function Footer({ variant = 'marketing', t }: FooterProps) {
|
||||
<li><Link href="/#pricing" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>{translations.full_pricing}</Link></li>
|
||||
<li><Link href="/faq" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>{translations.all_questions}</Link></li>
|
||||
<li><Link href="/blog" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>{translations.all_articles}</Link></li>
|
||||
<li><Link href="/tools/barcode-generator" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>Barcode Generator</Link></li>
|
||||
<li><Link href="/dynamic-qr-code-generator" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>Dynamic QR Code Generator</Link></li>
|
||||
<li><Link href="/bulk-qr-code-generator" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>Bulk QR Generator</Link></li>
|
||||
<li><Link href="/dynamic-barcode-generator" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>Dynamic Barcode Generator</Link></li>
|
||||
|
||||
@@ -120,6 +122,7 @@ export function Footer({ variant = 'marketing', t }: FooterProps) {
|
||||
<li><Link href="/privacy" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>{translations.privacy_policy}</Link></li>
|
||||
<li><Link href="/contact" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>Contact</Link></li>
|
||||
<li><Link href="/qr-code-erstellen" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>QR Code Erstellen (DE)</Link></li>
|
||||
<li><Link href="/barcode-generator" className={isDashboard ? 'hover:text-primary-600' : 'hover:text-white'}>Barcode Generator (DE)</Link></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -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: `<div class="blog-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: `<div class="blog-content">
|
||||
<div class="post-metadata bg-blue-50 p-4 rounded-lg mb-8 border-l-4 border-blue-500">
|
||||
<p class="text-sm text-gray-700">
|
||||
<strong>Author:</strong> Timo Knuth, QR Code & Marketing Expert<br/>
|
||||
<strong>Author:</strong> Timo Knuth, QR Code & Marketing Expert<br/>
|
||||
📅 <strong>Published:</strong> January 29, 2026 | <strong>Last updated:</strong> January 26, 2026
|
||||
</p>
|
||||
</div>
|
||||
<h2>Free Barcode Generator</h2><p>Content coming soon.</p></div>`
|
||||
|
||||
<h2>What Is a Barcode Generator?</h2>
|
||||
<p>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.</p>
|
||||
<p>QR Master includes a free <a href="/tools/barcode-generator">barcode generator</a> that supports the most common formats used in retail and inventory management: EAN-13, UPC-A, and Code 128. No account required, no watermarks.</p>
|
||||
|
||||
<h2>Supported Barcode Formats</h2>
|
||||
<ul>
|
||||
<li><strong>EAN-13</strong> — The global standard for retail products. Used on nearly every consumer product sold outside North America. Requires a 13-digit number.</li>
|
||||
<li><strong>UPC-A</strong> — The North American retail standard. 12 digits. Used by Amazon, Walmart, Target, and most US/Canada retail systems.</li>
|
||||
<li><strong>Code 128</strong> — The most flexible format. Supports letters and numbers. Ideal for internal inventory codes, warehouse labels, and shipping references.</li>
|
||||
</ul>
|
||||
|
||||
<h2>How to Create a Barcode</h2>
|
||||
<ol>
|
||||
<li>Open the <a href="/tools/barcode-generator">QR Master barcode generator</a>.</li>
|
||||
<li>Select the barcode type (EAN-13 for retail, Code 128 for inventory).</li>
|
||||
<li>Enter your code number or alphanumeric string.</li>
|
||||
<li>Download as PNG (for digital use) or SVG (for print, scales without blurring).</li>
|
||||
<li>Test the printed barcode with a scanner or smartphone app before mass printing.</li>
|
||||
</ol>
|
||||
|
||||
<h2>Barcode vs. QR Code: When to Use Which</h2>
|
||||
<p>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.</p>
|
||||
<ul>
|
||||
<li><strong>Barcode:</strong> product SKU, warehouse shelf, retail checkout, inventory count</li>
|
||||
<li><strong>QR code:</strong> restaurant menu, review page, product setup guide, marketing campaign</li>
|
||||
</ul>
|
||||
<p>If the QR code destination might change after printing, use a <a href="/dynamic-qr-code-generator">dynamic QR code</a> — the printed code stays the same, but you can update the link at any time.</p>
|
||||
|
||||
<h2>Printing Tips for Reliable Scanning</h2>
|
||||
<ul>
|
||||
<li>Use black bars on a white background — avoid colored barcodes unless tested</li>
|
||||
<li>Print at 300 DPI or higher for physical labels</li>
|
||||
<li>Leave a quiet zone (blank margin) around the barcode of at least 10 bar widths</li>
|
||||
<li>Minimum recommended width: 25mm for EAN-13, 20mm for Code 128</li>
|
||||
<li>Always scan a printed test copy before ordering bulk labels</li>
|
||||
</ul>
|
||||
|
||||
<h2>Use Cases</h2>
|
||||
<p>The most common uses for an online barcode generator include:</p>
|
||||
<ul>
|
||||
<li><strong>Product labels</strong> — give every SKU a scannable identity before retail listing</li>
|
||||
<li><strong>Inventory management</strong> — label storage bins, shelves, and stock items</li>
|
||||
<li><strong>eCommerce fulfillment</strong> — reduce packing errors by scanning products during order picking</li>
|
||||
<li><strong>Event tickets</strong> — generate unique codes per ticket for check-in scanning</li>
|
||||
<li><strong>Internal asset tracking</strong> — label equipment, tools, and office assets</li>
|
||||
</ul>
|
||||
|
||||
<p>Ready to create your first barcode? Use the free <a href="/tools/barcode-generator">QR Master barcode generator</a> — no signup, instant download.</p>
|
||||
</div>`
|
||||
},
|
||||
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user