Weekly SEO
This commit is contained in:
2897
qrmaster-lighthouse.report.html
Normal file
2897
qrmaster-lighthouse.report.html
Normal file
File diff suppressed because one or more lines are too long
15107
qrmaster-lighthouse.report.json
Normal file
15107
qrmaster-lighthouse.report.json
Normal file
File diff suppressed because one or more lines are too long
@@ -147,7 +147,7 @@ export default function MarketingLayout({
|
||||
<Link href="/" className="flex items-center space-x-3 group">
|
||||
<div className="relative w-16 h-16 overflow-hidden rounded-full shadow-indigo-200 shadow-lg group-hover:scale-105 transition-transform duration-200">
|
||||
<Image
|
||||
src="/favicon1.png"
|
||||
src="/logo.svg"
|
||||
alt="QR Master"
|
||||
fill
|
||||
sizes="64px"
|
||||
|
||||
@@ -119,29 +119,49 @@ const comparisonRows = [
|
||||
{
|
||||
platform: 'Bitly',
|
||||
href: '/alternatives/bitly',
|
||||
bestFor: 'Short links and light QR use',
|
||||
watchOut: 'Low QR code counts on entry plans; no bulk QR creation',
|
||||
price: 'Link-first paid plans',
|
||||
freePlan: 'Limited QR use',
|
||||
dynamicCodes: 'QR feature inside link management',
|
||||
analytics: 'Link analytics first',
|
||||
gdpr: 'Review DPA for EU use',
|
||||
bulk: 'No QR-first bulk workflow',
|
||||
branding: 'Bitly-branded link context',
|
||||
qrMasterAngle: 'QR-first workflow with 50 dynamic codes on Pro',
|
||||
},
|
||||
{
|
||||
platform: 'Flowcode',
|
||||
href: '/alternatives/flowcode',
|
||||
bestFor: 'Design-forward QR campaigns',
|
||||
watchOut: 'Branding and interstitial concerns on lower tiers',
|
||||
price: 'Brand and team tiers',
|
||||
freePlan: 'Limited free path',
|
||||
dynamicCodes: 'Strong QR design workflow',
|
||||
analytics: 'Paid campaign analytics',
|
||||
gdpr: 'US vendor; review data terms',
|
||||
bulk: 'Best for larger plans',
|
||||
branding: 'Design-forward, possible platform branding',
|
||||
qrMasterAngle: 'Clean redirects and brand control without a branded scan page',
|
||||
},
|
||||
{
|
||||
platform: 'Beaconstac / Uniqode',
|
||||
href: '/alternatives/beaconstac',
|
||||
bestFor: 'Enterprise QR management',
|
||||
watchOut: 'Often more platform than small teams need',
|
||||
price: 'Enterprise-oriented tiers',
|
||||
freePlan: 'Trial or limited evaluation',
|
||||
dynamicCodes: 'Advanced enterprise QR platform',
|
||||
analytics: 'Advanced paid analytics',
|
||||
gdpr: 'DPA and configuration review needed',
|
||||
bulk: 'Strong, often enterprise-oriented',
|
||||
branding: 'Enterprise controls',
|
||||
qrMasterAngle: 'Simpler dynamic QR, analytics, and bulk creation for SMB teams',
|
||||
},
|
||||
{
|
||||
platform: 'QR-Code-Generator.com',
|
||||
href: '/alternatives/qr-code-generator',
|
||||
bestFor: 'Fast one-off QR creation',
|
||||
watchOut: 'Dynamic QR trial limits can be painful after printing',
|
||||
price: 'Paid dynamic QR after trial',
|
||||
freePlan: 'Static QR path',
|
||||
dynamicCodes: 'Dynamic QR behind paid upgrade',
|
||||
analytics: 'Paid analytics',
|
||||
gdpr: 'Review vendor terms',
|
||||
bulk: 'Paid workflow',
|
||||
branding: 'Template-driven branding',
|
||||
qrMasterAngle: 'Free dynamic codes and transparent paid tiers',
|
||||
},
|
||||
];
|
||||
@@ -257,34 +277,57 @@ export default function AlternativesHubPage() {
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="overflow-hidden rounded-xl border" style={{ borderColor: '#E4E0D9' }}>
|
||||
<div className="grid grid-cols-1 md:grid-cols-5" style={{ backgroundColor: '#F8F7F4' }}>
|
||||
{['Platform', 'Best for', 'Watch out for', 'QR Master angle', 'Compare'].map((heading) => (
|
||||
<div key={heading} className="p-4 text-xs font-semibold uppercase tracking-wider" style={{ color: '#71717A' }}>
|
||||
{heading}
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
{comparisonRows.map((row, index) => (
|
||||
<div
|
||||
key={row.platform}
|
||||
className="grid grid-cols-1 md:grid-cols-5"
|
||||
style={{
|
||||
borderTop: '1px solid #E4E0D9',
|
||||
backgroundColor: index % 2 === 0 ? '#FFFFFF' : '#FAFAF8',
|
||||
}}
|
||||
>
|
||||
<div className="p-4 font-semibold" style={{ color: '#18181B' }}>{row.platform}</div>
|
||||
<div className="p-4 text-sm" style={{ color: '#52525B' }}>{row.bestFor}</div>
|
||||
<div className="p-4 text-sm" style={{ color: '#52525B' }}>{row.watchOut}</div>
|
||||
<div className="p-4 text-sm font-medium" style={{ color: '#166534' }}>{row.qrMasterAngle}</div>
|
||||
<div className="p-4">
|
||||
<Link href={row.href} className="text-sm font-semibold" style={{ color: '#166534' }}>
|
||||
QR Master vs {row.platform}
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
))}
|
||||
<div className="overflow-x-auto rounded-xl border" style={{ borderColor: '#E4E0D9' }}>
|
||||
<table className="w-full min-w-[980px] text-sm">
|
||||
<thead style={{ backgroundColor: '#F8F7F4' }}>
|
||||
<tr>
|
||||
{[
|
||||
'Platform',
|
||||
'Price',
|
||||
'Free plan',
|
||||
'Dynamic codes',
|
||||
'Analytics',
|
||||
'GDPR / EU fit',
|
||||
'Bulk',
|
||||
'Branding',
|
||||
'Compare',
|
||||
].map((heading) => (
|
||||
<th
|
||||
key={heading}
|
||||
className="p-4 text-left text-xs font-semibold uppercase tracking-wider"
|
||||
style={{ color: '#71717A' }}
|
||||
>
|
||||
{heading}
|
||||
</th>
|
||||
))}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{comparisonRows.map((row, index) => (
|
||||
<tr
|
||||
key={row.platform}
|
||||
style={{
|
||||
borderTop: '1px solid #E4E0D9',
|
||||
backgroundColor: index % 2 === 0 ? '#FFFFFF' : '#FAFAF8',
|
||||
}}
|
||||
>
|
||||
<td className="p-4 font-semibold" style={{ color: '#18181B' }}>{row.platform}</td>
|
||||
<td className="p-4" style={{ color: '#52525B' }}>{row.price}</td>
|
||||
<td className="p-4" style={{ color: '#52525B' }}>{row.freePlan}</td>
|
||||
<td className="p-4" style={{ color: '#52525B' }}>{row.dynamicCodes}</td>
|
||||
<td className="p-4" style={{ color: '#52525B' }}>{row.analytics}</td>
|
||||
<td className="p-4" style={{ color: '#52525B' }}>{row.gdpr}</td>
|
||||
<td className="p-4" style={{ color: '#52525B' }}>{row.bulk}</td>
|
||||
<td className="p-4" style={{ color: '#52525B' }}>{row.branding}</td>
|
||||
<td className="p-4">
|
||||
<Link href={row.href} className="font-semibold" style={{ color: '#166534' }}>
|
||||
QR Master vs {row.platform}
|
||||
</Link>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
@@ -12,13 +12,13 @@ import { GrowthLinksSection } from '@/components/marketing/GrowthLinksSection';
|
||||
import { MarketingPageTracker } from '@/components/marketing/MarketingAnalytics';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
absolute: 'Bulk QR Code Generator - Create QR Codes from a Spreadsheet',
|
||||
},
|
||||
description:
|
||||
'Generate up to 1,000 static QR codes from CSV or Excel files in the QR Master Business plan. Upload, preview, download as ZIP, or save the batch to your dashboard.',
|
||||
keywords:
|
||||
'bulk qr code generator, qr code from excel, csv qr code generator, bulk qr codes, spreadsheet qr generation',
|
||||
title: {
|
||||
absolute: 'Bulk QR Code Generator for Excel, CSV and Google Sheets',
|
||||
},
|
||||
description:
|
||||
'Generate up to 1,000 QR codes from Excel, CSV, XLSX, or exported Google Sheets data. Upload, preview, batch-create, download ZIP files, or save to your dashboard.',
|
||||
keywords:
|
||||
'bulk qr code generator, bulk qr code generator excel, batch qr code generator, qr code from excel, csv qr code generator, bulk qr generator, bulk qr code generator in google sheets, spreadsheet qr generation',
|
||||
alternates: {
|
||||
canonical: 'https://www.qrmaster.net/bulk-qr-code-generator',
|
||||
languages: {
|
||||
@@ -27,36 +27,41 @@ export const metadata: Metadata = {
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
title: 'Bulk QR Code Generator - Create QR Codes from a Spreadsheet',
|
||||
title: 'Bulk QR Code Generator for Excel, CSV and Google Sheets',
|
||||
description:
|
||||
'Generate up to 1,000 static QR codes from CSV or Excel files in the QR Master Business plan.',
|
||||
'Generate up to 1,000 QR codes from CSV, Excel, XLSX, or exported Google Sheets data.',
|
||||
url: 'https://www.qrmaster.net/bulk-qr-code-generator',
|
||||
type: 'website',
|
||||
images: ['/og-image.png'],
|
||||
},
|
||||
twitter: {
|
||||
title: 'Bulk QR Code Generator - Create QR Codes from a Spreadsheet',
|
||||
title: 'Bulk QR Code Generator for Excel, CSV and Google Sheets',
|
||||
description:
|
||||
'Generate up to 1,000 static QR codes from CSV or Excel files in the QR Master Business plan.',
|
||||
'Generate up to 1,000 QR codes from CSV, Excel, XLSX, or exported Google Sheets data.',
|
||||
},
|
||||
};
|
||||
|
||||
const featureCards = [
|
||||
{
|
||||
title: 'Spreadsheet upload',
|
||||
description:
|
||||
'Upload CSV, XLS, or XLSX files and map the title and content columns before generating the batch.',
|
||||
},
|
||||
{
|
||||
title: 'Spreadsheet upload',
|
||||
description:
|
||||
'Upload CSV, XLS, or XLSX files from Excel, Numbers, Airtable, or a Google Sheets export and map the title and content columns before generating the batch.',
|
||||
},
|
||||
{
|
||||
title: 'Excel and Google Sheets workflow',
|
||||
description:
|
||||
'Prepare rows in Excel or Google Sheets, export to CSV/XLSX, then generate the full QR code batch from one clean spreadsheet.',
|
||||
},
|
||||
{
|
||||
title: 'Up to 1,000 rows per upload',
|
||||
description:
|
||||
'The current bulk creation flow limits each upload to 1,000 rows so the batch stays predictable and reviewable.',
|
||||
},
|
||||
{
|
||||
title: 'Static QR output',
|
||||
{
|
||||
title: 'Static QR output',
|
||||
description:
|
||||
'Bulk creation currently generates static QR codes. These codes do not include post-print editing or tracking.',
|
||||
},
|
||||
},
|
||||
{
|
||||
title: 'ZIP download',
|
||||
description:
|
||||
@@ -67,16 +72,26 @@ const featureCards = [
|
||||
description:
|
||||
'After generation, you can save the batch into your QR Master dashboard for later management.',
|
||||
},
|
||||
{
|
||||
title: 'Business plan access',
|
||||
{
|
||||
title: 'Business plan access',
|
||||
description:
|
||||
'The current bulk creation workflow is available to Business plan subscribers and is positioned around scale, not single-code creation.',
|
||||
},
|
||||
];
|
||||
},
|
||||
];
|
||||
|
||||
const inputExamples = [
|
||||
{
|
||||
title: 'Website URLs',
|
||||
const inputExamples = [
|
||||
{
|
||||
title: 'Google Sheets export',
|
||||
content: 'Name,URL\nMenu QR,https://example.com/menu\nFlyer QR,https://example.com/flyer',
|
||||
note: 'Export a Google Sheet as CSV and upload it as a batch QR code generator input.',
|
||||
},
|
||||
{
|
||||
title: 'Excel product list',
|
||||
content: 'SKU,URL\nSKU-1001,https://example.com/products/1001',
|
||||
note: 'Use Excel or XLSX rows when each product, insert, or label needs its own QR code.',
|
||||
},
|
||||
{
|
||||
title: 'Website URLs',
|
||||
content: 'https://example.com/product',
|
||||
note: 'Useful for product pages, flyers, support pages, or campaign destinations.',
|
||||
},
|
||||
@@ -135,11 +150,21 @@ const faqItems = [
|
||||
answer:
|
||||
'No. The current bulk creation flow generates static QR codes, so those codes do not include post-print editing or tracking.',
|
||||
},
|
||||
{
|
||||
question: 'What file formats can I upload?',
|
||||
answer:
|
||||
'The current flow accepts CSV, XLS, and XLSX files.',
|
||||
},
|
||||
{
|
||||
question: 'What file formats can I upload?',
|
||||
answer:
|
||||
'The current flow accepts CSV, XLS, and XLSX files.',
|
||||
},
|
||||
{
|
||||
question: 'Can I use Google Sheets as the source?',
|
||||
answer:
|
||||
'Yes. Prepare the batch in Google Sheets, export it as CSV or XLSX, then upload that file to QR Master. The workflow is the same as an Excel upload.',
|
||||
},
|
||||
{
|
||||
question: 'Is this a batch QR code generator?',
|
||||
answer:
|
||||
'Yes. QR Master bulk creation is a batch QR code generator for spreadsheet rows. Each row becomes one QR code, and the finished batch can be downloaded together.',
|
||||
},
|
||||
{
|
||||
question: 'Which plan includes bulk QR creation?',
|
||||
answer:
|
||||
@@ -160,11 +185,12 @@ const softwareSchema = {
|
||||
priceCurrency: 'EUR',
|
||||
availability: 'https://schema.org/InStock',
|
||||
},
|
||||
description:
|
||||
'Generate up to 1,000 static QR codes from CSV or Excel files in the QR Master Business plan.',
|
||||
description:
|
||||
'Generate up to 1,000 static QR codes from CSV, Excel, XLSX, or exported Google Sheets files in the QR Master Business plan.',
|
||||
featureList: [
|
||||
'CSV, XLS, and XLSX upload',
|
||||
'Up to 1,000 rows per upload',
|
||||
'CSV, XLS, and XLSX upload',
|
||||
'Excel and Google Sheets CSV export workflow',
|
||||
'Up to 1,000 rows per upload',
|
||||
'Static QR code generation',
|
||||
'ZIP download of generated SVG files',
|
||||
'Optional save-to-dashboard step',
|
||||
@@ -393,9 +419,52 @@ export default function BulkQRCodeGeneratorPage() {
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="container mx-auto max-w-5xl px-4 pb-8 sm:px-6 lg:px-8">
|
||||
<FAQSection items={faqItems} title="Bulk QR questions" />
|
||||
</div>
|
||||
<section className="bg-white py-16">
|
||||
<div className="container mx-auto max-w-6xl px-4 sm:px-6 lg:px-8">
|
||||
<div className="mb-10 max-w-3xl">
|
||||
<p className="mb-3 text-sm font-semibold uppercase tracking-wider text-green-600">
|
||||
Excel, CSV, and Google Sheets
|
||||
</p>
|
||||
<h2 className="text-3xl font-bold text-gray-900">
|
||||
Batch QR code generation from spreadsheet rows
|
||||
</h2>
|
||||
<p className="mt-4 text-lg leading-relaxed text-gray-600">
|
||||
Use QR Master as a bulk QR code generator when your source data
|
||||
already lives in Excel, a CSV export, or Google Sheets. Keep one
|
||||
row per QR code, map the columns, preview the batch, then export
|
||||
the generated SVG files together.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div className="grid gap-6 md:grid-cols-3">
|
||||
{[
|
||||
{
|
||||
title: '1. Prepare columns',
|
||||
body: 'Use columns such as title, URL, SKU, campaign, or location. The content column is what the QR code encodes.',
|
||||
},
|
||||
{
|
||||
title: '2. Export clean data',
|
||||
body: 'Save Excel as XLSX or export Google Sheets to CSV. Avoid merged cells and keep one QR code per row.',
|
||||
},
|
||||
{
|
||||
title: '3. Generate the batch',
|
||||
body: 'Upload the file, map title and content, preview the rows, and download the finished QR codes as a ZIP.',
|
||||
},
|
||||
].map((step) => (
|
||||
<Card key={step.title} className="p-6">
|
||||
<h3 className="mb-2 text-xl font-semibold text-gray-900">
|
||||
{step.title}
|
||||
</h3>
|
||||
<p className="text-gray-600">{step.body}</p>
|
||||
</Card>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<div className="container mx-auto max-w-5xl px-4 pb-8 sm:px-6 lg:px-8">
|
||||
<FAQSection items={faqItems} title="Bulk QR questions" />
|
||||
</div>
|
||||
|
||||
<section className="bg-gray-50 py-20">
|
||||
<div className="container mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
|
||||
|
||||
@@ -16,12 +16,12 @@ import { featuredUseCases } from '@/lib/growth-pages';
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: {
|
||||
absolute: 'Free Dynamic QR Code Generator - Editable QR Codes',
|
||||
absolute: 'Free Dynamic QR Code Generator - Editable QR Codes with Tracking',
|
||||
},
|
||||
description:
|
||||
'Create a free dynamic QR code generator workflow. Edit QR code destinations after printing, track scans, and manage editable QR codes in one dashboard.',
|
||||
'Create free dynamic QR codes with editable destinations, scan tracking, custom branding, and no reprint workflow for menus, flyers, packaging, and campaigns.',
|
||||
keywords:
|
||||
'dynamic qr code generator, editable qr code, dynamic qr code, qr code tracking, update qr code after printing',
|
||||
'dynamic qr code generator, free dynamic qr code generator, best dynamic qr code generator, editable qr code, changeable qr code, qr code tracking, update qr code after printing',
|
||||
alternates: {
|
||||
canonical: 'https://www.qrmaster.net/dynamic-qr-code-generator',
|
||||
languages: {
|
||||
@@ -30,7 +30,7 @@ export const metadata: Metadata = {
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
title: 'Free Dynamic QR Code Generator - Editable QR Codes',
|
||||
title: 'Free Dynamic QR Code Generator - Editable QR Codes with Tracking',
|
||||
description:
|
||||
'Create dynamic QR codes that you can edit after printing. Change the destination URL anytime, track scans, and manage all codes in one dashboard.',
|
||||
url: 'https://www.qrmaster.net/dynamic-qr-code-generator',
|
||||
@@ -38,7 +38,7 @@ export const metadata: Metadata = {
|
||||
images: ['/og-image.png'],
|
||||
},
|
||||
twitter: {
|
||||
title: 'Free Dynamic QR Code Generator - Editable QR Codes',
|
||||
title: 'Free Dynamic QR Code Generator - Editable QR Codes with Tracking',
|
||||
description:
|
||||
'Create dynamic QR codes that you can edit after printing. Change the destination URL anytime, track scans, and manage all codes in one dashboard.',
|
||||
},
|
||||
@@ -470,7 +470,7 @@ export default function DynamicQRCodeGeneratorPage() {
|
||||
|
||||
<div className="space-y-5">
|
||||
<h1 className="text-5xl font-bold leading-tight text-gray-900 lg:text-6xl">
|
||||
Free Dynamic QR Code Generator
|
||||
Free Dynamic QR Code Generator with Tracking
|
||||
</h1>
|
||||
<p className="text-xl leading-relaxed text-gray-600">
|
||||
Create editable QR codes you can update after printing.
|
||||
@@ -1030,7 +1030,7 @@ export default function DynamicQRCodeGeneratorPage() {
|
||||
</div>
|
||||
</div>
|
||||
<p className="mt-4 text-center text-sm text-gray-600">
|
||||
Same QR image, different destination later.
|
||||
Live demo: one printed QR image, different destination later.
|
||||
</p>
|
||||
</Card>
|
||||
<div className="absolute -right-4 -top-4 rounded-full bg-purple-500 px-4 py-2 text-sm font-semibold text-white shadow-lg">
|
||||
|
||||
@@ -19,10 +19,11 @@ export const metadata: Metadata = {
|
||||
: { index: false, follow: false },
|
||||
icons: {
|
||||
icon: [
|
||||
{ url: '/favicon1.png', sizes: '2048x2048', type: 'image/png' },
|
||||
{ url: '/favicon.svg', type: 'image/svg+xml' },
|
||||
{ url: '/favicon.ico', sizes: '16x16 32x32', type: 'image/x-icon' },
|
||||
],
|
||||
shortcut: '/favicon1.png',
|
||||
apple: '/favicon1.png',
|
||||
shortcut: '/favicon.ico',
|
||||
apple: '/logo.svg',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
|
||||
@@ -2,16 +2,10 @@ import React from 'react';
|
||||
import type { Metadata } from 'next';
|
||||
import SeoJsonLd from '@/components/SeoJsonLd';
|
||||
import {
|
||||
organizationSchema,
|
||||
websiteSchema,
|
||||
softwareApplicationSchema,
|
||||
reviewSchema,
|
||||
aggregateRatingSchema,
|
||||
} from '@/lib/schema';
|
||||
import {
|
||||
getFeaturedTestimonials,
|
||||
getAggregateRating,
|
||||
} from '@/lib/testimonial-data';
|
||||
import { getAggregateRating } from '@/lib/testimonial-data';
|
||||
import HomePageClient from '@/components/marketing/HomePageClient';
|
||||
|
||||
function truncateAtWord(text: string, maxLength: number): string {
|
||||
@@ -22,12 +16,11 @@ function truncateAtWord(text: string, maxLength: number): string {
|
||||
}
|
||||
|
||||
export async function generateMetadata(): Promise<Metadata> {
|
||||
const title = truncateAtWord('QR Master – Free QR Code Generator with Analytics', 60);
|
||||
const description = truncateAtWord(
|
||||
'QR Master is a free QR code generator with scan analytics, dynamic QR codes, custom branding, and bulk creation. No signup required for static codes.',
|
||||
'QR Master is a free dynamic QR code generator with tracking, editable destinations, custom branding, and bulk QR creation. Create static QR codes without signup.',
|
||||
160
|
||||
);
|
||||
const brandTitle = 'QR Master | Free Dynamic QR Code Generator';
|
||||
const brandTitle = 'QR Master - Free Dynamic QR Code Generator with Tracking';
|
||||
|
||||
return {
|
||||
title: brandTitle,
|
||||
@@ -42,6 +35,9 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
'qr code with logo',
|
||||
'barcode generator',
|
||||
'free barcode generator',
|
||||
'qr master',
|
||||
'qrmaster',
|
||||
'qr code master',
|
||||
],
|
||||
alternates: {
|
||||
canonical: 'https://www.qrmaster.net/',
|
||||
@@ -73,19 +69,14 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
}
|
||||
|
||||
export default function HomePage() {
|
||||
const featuredTestimonials = getFeaturedTestimonials();
|
||||
const aggregateRating = getAggregateRating();
|
||||
const reviewSchemas = featuredTestimonials.map((t) => reviewSchema(t));
|
||||
|
||||
return (
|
||||
<>
|
||||
<SeoJsonLd
|
||||
data={[
|
||||
websiteSchema(),
|
||||
organizationSchema(),
|
||||
softwareApplicationSchema(aggregateRating),
|
||||
aggregateRatingSchema(aggregateRating),
|
||||
...reviewSchemas,
|
||||
]}
|
||||
/>
|
||||
|
||||
@@ -126,6 +117,15 @@ export default function HomePage() {
|
||||
<a href="/qr-code-erstellen">German QR code generator</a>, and{' '}
|
||||
<a href="/qr-code-for/barbershops">QR codes for barbershops</a>.
|
||||
</p>
|
||||
<p>
|
||||
High-intent QR Master pages include the{' '}
|
||||
<a href="/bulk-qr-code-generator">
|
||||
bulk QR code generator for Excel and CSV files
|
||||
</a>
|
||||
, <a href="/alternatives">QR code platform alternatives</a>,{' '}
|
||||
<a href="/alternatives/beaconstac">Beaconstac alternative</a>, and{' '}
|
||||
<a href="/alternatives/bitly">Bitly QR code alternative</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<HomePageClient />
|
||||
|
||||
@@ -18,13 +18,14 @@ export const metadata: Metadata = {
|
||||
robots: isIndexable
|
||||
? { index: true, follow: true }
|
||||
: { index: false, follow: false },
|
||||
icons: {
|
||||
icon: [
|
||||
{ url: '/favicon1.png', sizes: '2048x2048', type: 'image/png' },
|
||||
],
|
||||
shortcut: '/favicon1.png',
|
||||
apple: '/favicon1.png',
|
||||
},
|
||||
icons: {
|
||||
icon: [
|
||||
{ url: '/favicon.svg', type: 'image/svg+xml' },
|
||||
{ url: '/favicon.ico', sizes: '16x16 32x32', type: 'image/x-icon' },
|
||||
],
|
||||
shortcut: '/favicon.ico',
|
||||
apple: '/logo.svg',
|
||||
},
|
||||
twitter: {
|
||||
card: 'summary_large_image',
|
||||
site: '@qrmaster',
|
||||
|
||||
@@ -113,7 +113,7 @@ export default function MarketingLayout({
|
||||
<Link href="/" className="flex items-center space-x-3 group">
|
||||
<div className="relative w-16 h-16 overflow-hidden rounded-full shadow-indigo-200 shadow-lg group-hover:scale-105 transition-transform duration-200">
|
||||
<Image
|
||||
src="/favicon1.png"
|
||||
src="/logo.svg"
|
||||
alt="QR Master"
|
||||
fill
|
||||
sizes="64px"
|
||||
|
||||
@@ -41,18 +41,18 @@ export const metadata: Metadata = {
|
||||
'barcode drucken',
|
||||
],
|
||||
alternates: {
|
||||
canonical: 'https://www.qrmaster.net/barcode-generator',
|
||||
canonical: 'https://www.qrmaster.net/tools/barcode-generator',
|
||||
languages: {
|
||||
'x-default': 'https://www.qrmaster.net/tools/barcode-generator',
|
||||
en: 'https://www.qrmaster.net/tools/barcode-generator',
|
||||
de: 'https://www.qrmaster.net/barcode-generator',
|
||||
de: 'https://www.qrmaster.net/tools/barcode-generator',
|
||||
},
|
||||
},
|
||||
openGraph: {
|
||||
title: 'Barcode Generator – Kostenlos EAN, UPC & Code 128 erstellen',
|
||||
description:
|
||||
'Barcode Generator: Erstellen Sie professionelle Barcodes für Einzelhandel, Lager und Logistik. Kostenlos, ohne Anmeldung. Sofort druckfertig.',
|
||||
url: 'https://www.qrmaster.net/barcode-generator',
|
||||
url: 'https://www.qrmaster.net/tools/barcode-generator',
|
||||
locale: 'de_DE',
|
||||
type: 'website',
|
||||
images: [
|
||||
|
||||
@@ -15,10 +15,11 @@ export const metadata: Metadata = {
|
||||
metadataBase: new URL('https://www.qrmaster.net'),
|
||||
icons: {
|
||||
icon: [
|
||||
{ url: '/favicon1.png', sizes: '2048x2048', type: 'image/png' },
|
||||
{ url: '/favicon.svg', type: 'image/svg+xml' },
|
||||
{ url: '/favicon.ico', sizes: '16x16 32x32', type: 'image/x-icon' },
|
||||
],
|
||||
shortcut: '/favicon1.png',
|
||||
apple: '/favicon1.png',
|
||||
shortcut: '/favicon.ico',
|
||||
apple: '/logo.svg',
|
||||
},
|
||||
openGraph: {
|
||||
type: 'website',
|
||||
|
||||
@@ -51,12 +51,37 @@ export default function HomePageClient() {
|
||||
Popular QR Master workflows
|
||||
</h2>
|
||||
<p className="mt-3 text-base leading-7 text-slate-600">
|
||||
Start with the pages people already use for meetings, guest WiFi,
|
||||
German QR creation, and local service businesses.
|
||||
Start with the pages that match high-intent searches for editable
|
||||
QR codes, spreadsheet batches, barcodes, competitor comparisons,
|
||||
meetings, guest WiFi, and local service businesses.
|
||||
</p>
|
||||
</div>
|
||||
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-4">
|
||||
{[
|
||||
{
|
||||
href: '/dynamic-qr-code-generator',
|
||||
title: 'Dynamic QR Code Generator',
|
||||
description:
|
||||
'Create editable QR codes with tracking and no reprint workflow.',
|
||||
},
|
||||
{
|
||||
href: '/bulk-qr-code-generator',
|
||||
title: 'Bulk QR Code Generator',
|
||||
description:
|
||||
'Generate QR codes from Excel, CSV, and spreadsheet rows.',
|
||||
},
|
||||
{
|
||||
href: '/tools/barcode-generator',
|
||||
title: 'Barcode Generator',
|
||||
description:
|
||||
'Create EAN-13, UPC-A, and Code 128 barcodes online.',
|
||||
},
|
||||
{
|
||||
href: '/alternatives',
|
||||
title: 'QR Code Platform Alternatives',
|
||||
description:
|
||||
'Compare QR Master with Beaconstac, Bitly, Flowcode, and more.',
|
||||
},
|
||||
{
|
||||
href: '/tools/teams-qr-code',
|
||||
title: 'Teams QR Code Generator',
|
||||
|
||||
@@ -19,10 +19,10 @@ export function Footer({ variant = 'marketing', t }: FooterProps) {
|
||||
<div className="container mx-auto px-4 sm:px-6 lg:px-8 max-w-7xl">
|
||||
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-8">
|
||||
<div>
|
||||
<Link href="/" className="flex items-center space-x-2 mb-4 hover:opacity-80 transition-opacity">
|
||||
<img src="/favicon1.png" alt="QR Master Logo" className="w-[68px] h-[68px] rounded-full object-cover" />
|
||||
<span className={`text-xl font-bold ${isDashboard ? 'text-gray-900' : ''}`}>QR Master</span>
|
||||
</Link>
|
||||
<Link href="/" className="flex items-center space-x-2 mb-4 hover:opacity-80 transition-opacity">
|
||||
<img src="/logo.svg" alt="QR Master Logo" className="w-[68px] h-[68px] rounded-lg object-cover" />
|
||||
<span className={`text-xl font-bold ${isDashboard ? 'text-gray-900' : ''}`}>QR Master</span>
|
||||
</Link>
|
||||
<p className={isDashboard ? 'text-gray-500' : 'text-gray-400'}>
|
||||
{translations.tagline}
|
||||
</p>
|
||||
|
||||
@@ -21,9 +21,9 @@
|
||||
"all_industries": "Industries"
|
||||
},
|
||||
"hero": {
|
||||
"badge": "Free QR Code Generator",
|
||||
"title": "QR Master: Create QR Codes That Work Everywhere",
|
||||
"subtitle": "Generate static and dynamic QR codes with tracking, custom branding, and bulk generation. Free forever.",
|
||||
"badge": "QR Master Free QR Code Generator",
|
||||
"title": "QR Master: Free Dynamic QR Code Generator with Tracking",
|
||||
"subtitle": "Create static and dynamic QR codes with editable destinations, scan tracking, custom branding, and bulk generation. Also searched as QRMaster and QR code master.",
|
||||
"features": [
|
||||
"No credit card required to start",
|
||||
"Create QR codes free forever",
|
||||
|
||||
@@ -33,11 +33,11 @@ export function organizationSchema() {
|
||||
name: 'QR Master',
|
||||
alternateName: ['QRMaster', 'QR Master QR Code Generator'],
|
||||
url: SITE_URL,
|
||||
logo: {
|
||||
'@type': 'ImageObject',
|
||||
url: `${SITE_URL}/static/og-image.png`,
|
||||
width: 1200,
|
||||
height: 630,
|
||||
logo: {
|
||||
'@type': 'ImageObject',
|
||||
url: `${SITE_URL}/og-image.png`,
|
||||
width: 1200,
|
||||
height: 630,
|
||||
},
|
||||
sameAs: [
|
||||
'https://www.wikidata.org/wiki/Q137918857',
|
||||
@@ -95,9 +95,9 @@ export function blogPostingSchema(post: BlogPost, author?: AuthorProfile) {
|
||||
name: "QR Master",
|
||||
url: SITE_URL,
|
||||
logo: {
|
||||
'@type': 'ImageObject',
|
||||
url: `${SITE_URL}/static/og-image.png`,
|
||||
}
|
||||
'@type': 'ImageObject',
|
||||
url: `${SITE_URL}/og-image.png`,
|
||||
}
|
||||
},
|
||||
isPartOf: {
|
||||
'@type': 'Blog',
|
||||
@@ -272,7 +272,7 @@ export function articleSchema(params: {
|
||||
url: SITE_URL,
|
||||
logo: {
|
||||
'@type': 'ImageObject',
|
||||
url: `${SITE_URL}/static/og-image.png`,
|
||||
url: `${SITE_URL}/og-image.png`,
|
||||
},
|
||||
},
|
||||
url: params.url,
|
||||
@@ -287,7 +287,7 @@ export function reviewSchema(testimonial: Testimonial) {
|
||||
'@type': 'SoftwareApplication',
|
||||
name: 'QR Master',
|
||||
description: 'Professional QR code generator with dynamic QR codes, analytics, and customization.',
|
||||
image: `${SITE_URL}/static/og-image.png`,
|
||||
image: `${SITE_URL}/og-image.png`,
|
||||
applicationCategory: 'BusinessApplication',
|
||||
operatingSystem: 'Web Browser',
|
||||
offers: {
|
||||
@@ -320,7 +320,7 @@ export function aggregateRatingSchema(aggregateRating: AggregateRating) {
|
||||
'@type': 'SoftwareApplication',
|
||||
name: 'QR Master',
|
||||
description: 'Professional QR code generator with dynamic QR codes, analytics, and customization.',
|
||||
image: `${SITE_URL}/static/og-image.png`,
|
||||
image: `${SITE_URL}/og-image.png`,
|
||||
applicationCategory: 'BusinessApplication',
|
||||
operatingSystem: 'Web Browser',
|
||||
url: SITE_URL,
|
||||
@@ -367,7 +367,7 @@ export function newsArticleSchema(params: NewsArticleParams) {
|
||||
'@id': `${SITE_URL}/#organization`,
|
||||
logo: {
|
||||
'@type': 'ImageObject',
|
||||
url: `${SITE_URL}/static/og-image.png`,
|
||||
url: `${SITE_URL}/og-image.png`,
|
||||
width: 1200,
|
||||
height: 630,
|
||||
},
|
||||
|
||||
2897
www.qrmaster.net_2026-05-31_13-09-41.report.html
Normal file
2897
www.qrmaster.net_2026-05-31_13-09-41.report.html
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user