Schema Markup Generator

Create structured data markup for better search engine understanding and rich snippets

Choose Schema Type

Local Business

For local businesses with physical location

Organization

For companies and organizations

FAQ Page

For frequently asked questions

Review

For product or service reviews

Local Business Schema

Organization Schema

FAQ Schema

Review Schema

`; document.getElementById('schemaCode').textContent = schemaCode; document.getElementById('richSnippetPreview').innerHTML = preview; document.getElementById('schemaOutput').style.display = 'block'; // Scroll to output document.getElementById('schemaOutput').scrollIntoView({ behavior: 'smooth' }); } function generateLocalBusinessPreview(data) { return `
${data.name}
${data.address.street}, ${data.address.city}, ${data.address.state} ${data.address.zip}
${data.phone}
${data.hours.open ? `
Open ${data.hours.open} - ${data.hours.close}
` : ''}
`; } function generateOrganizationPreview(data) { return `
${data.name}
${data.url}
${data.description ? `

${data.description}

` : ''} ${data.phone ? `
${data.phone}
` : ''}
`; } function generateFAQPreview(mainEntity) { let preview = '
'; mainEntity.forEach((item, index) => { preview += `

${item.acceptedAnswer.text}
`; }); preview += '
'; return preview; } function generateReviewPreview(data) { const stars = '★'.repeat(Math.floor(data.rating)) + '☆'.repeat(5 - Math.floor(data.rating)); return `
${data.item}
${stars} ${data.rating}/5 by ${data.reviewer}

${data.text}

${data.date ? `${new Date(data.date).toLocaleDateString()}` : ''}
`; } function copySchemaCode() { const code = document.getElementById('schemaCode').textContent; navigator.clipboard.writeText(code).then(() => { const button = document.querySelector('.copy-button'); const originalText = button.innerHTML; button.innerHTML = 'Copied!'; button.classList.replace('btn-outline-primary', 'btn-success'); setTimeout(() => { button.innerHTML = originalText; button.classList.replace('btn-success', 'btn-outline-primary'); }, 2000); }); } // Set default date to today document.getElementById('reviewDate').value = new Date().toISOString().split('T')[0];