Loading skill
Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate and implement JSON-LD structured data for web apps, blogs, FAQs, and SaaS sites. Supports WebSite, SoftwareApplication, BlogPosting, FAQPage, HowTo, and more.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 42% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 72% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 104% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 78% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 77% | 0% |
Add JSON-LD structured data to pages to unlock rich results, improve CTR, and signal context to Google and AI systems.
The cleanest approach is a reusable JsonLd component:
jsx// components/JsonLd.jsx export function JsonLd({ data }) { const json = JSON.stringify(data).replace(/</g, '\\u003c'); return ( <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: json }} /> ); }
Use it in any page:
jsximport { JsonLd } from '@/components/JsonLd'; export default function MyPage() { return ( <> <JsonLd data={mySchemaObject} /> {/* rest of page */} </> ); }
js{ "@context": "https://schema.org", "@type": "WebSite", "name": "100 SEO Tools", "url": "https://www.100seotools.com", "description": "Free online SEO tools for keyword research, technical audits, and more.", "potentialAction": { "@type": "SearchAction", "target": { "@type": "EntryPoint", "urlTemplate": "https://www.100seotools.com/search?q={search_term_string}" }, "query-input": "required name=search_term_string" } }
js{ "@context": "https://schema.org", "@type": "SoftwareApplication", "name": "Keyword Density Checker", "applicationCategory": "WebApplication", "operatingSystem": "Web", "url": "https://www.100seotools.com/tools/keyword-density-checker", "description": "Free keyword density checker tool. Analyze keyword frequency and optimize your content for SEO.", "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" }, "featureList": [ "Analyze keyword frequency", "Detect over-optimization", "Export results as CSV" ], "provider": { "@type": "Organization", "name": "100 SEO Tools", "url": "https://www.100seotools.com" } }
js{ "@context": "https://schema.org", "@type": "BlogPosting", "headline": "How to Improve Your Core Web Vitals in 2025", "description": "A practical guide to improving LCP, FID, and CLS scores for better rankings.", "url": "https://www.100seotools.com/blog/improve-core-web-vitals", "datePublished": "2025-01-15", "dateModified": "2025-03-20", "author": { "@type": "Person", "name": "Jane Smith", "url": "https://www.100seotools.com/author/jane-smith" }, "publisher": { "@type": "Organization", "name": "100 SEO Tools", "logo": { "@type": "ImageObject", "url": "https://www.100seotools.com/logo.png" } }, "image": { "@type": "ImageObject", "url": "https://www.100seotools.com/images/blog/core-web-vitals.jpg", "width": 1200, "height": 630 }, "mainEntityOfPage": { "@type": "WebPage", "@id": "https://www.100seotools.com/blog/improve-core-web-vitals" } }
js{ "@context": "https://schema.org", "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "What is keyword density?", "acceptedAnswer": { "@type": "Answer", "text": "Keyword density is the percentage of times a keyword appears in a piece of content relative to the total word count. A healthy keyword density is typically 1-3%." } }, { "@type": "Question", "name": "Is this tool free to use?", "acceptedAnswer": { "@type": "Answer", "text": "Yes, our keyword density checker is completely free with no registration required." } } ] }
js{ "@context": "https://schema.org", "@type": "HowTo", "name": "How to Check Keyword Density", "description": "Step-by-step guide to analyzing keyword density using our free tool.", "totalTime": "PT2M", "step": [ { "@type": "HowToStep", "position": 1, "name": "Paste your content", "text": "Copy your article or webpage content and paste it into the text area.", "image": "https://www.100seotools.com/images/how-to/step1.jpg" }, { "@type": "HowToStep", "position": 2, "name": "Enter your target keyword", "text": "Type the keyword you want to analyze in the keyword field." }, { "@type": "HowToStep", "position": 3, "name": "Click Analyze", "text": "Press the Analyze button to get your keyword density report instantly." } ] }
js{ "@context": "https://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.100seotools.com" }, { "@type": "ListItem", "position": 2, "name": "SEO Tools", "item": "https://www.100seotools.com/tools" }, { "@type": "ListItem", "position": 3, "name": "Keyword Density Checker", "item": "https://www.100seotools.com/tools/keyword-density-checker" } ] }
js{ "@context": "https://schema.org", "@type": "Organization", "name": "100 SEO Tools", "url": "https://www.100seotools.com", "logo": "https://www.100seotools.com/logo.png", "sameAs": [ "https://twitter.com/100seotools", "https://www.linkedin.com/company/100seotools" ], "contactPoint": { "@type": "ContactPoint", "contactType": "customer support", "email": "hello@100seotools.com" } }
A tool page can have BreadcrumbList + SoftwareApplication + FAQPage:
jsxexport default function ToolPage() { return ( <> <JsonLd data={breadcrumbSchema} /> <JsonLd data={softwareApplicationSchema} /> <JsonLd data={faqSchema} /> {/* page content */} </> ); }
Each schema lives in its own <script> tag — do NOT merge them into one object.
Always validate schema before deploying:
bash# Quick check: schema appears in HTML curl -s https://www.yourdomain.com/tools/keyword-density | grep -A 5 "application/ld+json"
WebSite schemaSoftwareApplication schemaBlogPosting / Article schemaFAQPage schemaHowTo schemaBreadcrumbListOrganization schemaOther measured skills in the registry, with their headline benchmark lift.