gizmobench

Schema Markup Generator

Choose Organization, WebSite, BreadcrumbList or SoftwareApplication, fill in the fields you actually know, and the JSON-LD block appears beside the form with the required properties marked and every missing one named as an error rather than dropped in silence. Two things happen here that a generator handing you a template does not do. A blank field is left out of the block and then listed under it, so a rating, a review count or a price you never entered is never invented on your behalf. And every character that could end the script element early is written as a JSON escape, which means a name carrying a closing script tag comes out as \u003c/script\u003e and your page keeps working. Copy the whole script tag or the JSON on its own, and nothing you type leaves the browser.

fieldsOrganization
A path starting with a slash is resolved against the site URL above.
One profile per line. Each line becomes an entry in sameAs.
json-ld0 errors
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Fernway Studio",
  "url": "https://fernway.example",
  "logo": "https://fernway.example/logo-512.png",
  "description": "Furniture made to measure in Somerville.",
  "sameAs": [
    "https://example.com/fernway",
    "https://social.example/@fernway"
  ]
}
</script>
Type
Required fields
3 of 3
Errors
0
Output

The company, studio or charity behind the site. One Organization block belongs on one page, usually the home page or an about page, and the rest of the site points at it. Repeating it on every page does not make it truer.

  • A path was resolved against the site URL: /logo-512.png became https://fernway.example/logo-512.png.
  • 2 profile links are emitted in sameAs, in the order you typed them.

What the block says

Every property in the block, with the value a parser reads back out of it. An escaped character appears here as the character you typed, because the escape changes the bytes and never the text.

PropertyValue
@typeOrganization
nameFernway Studio
urlhttps://fernway.example
logohttps://fernway.example/logo-512.png
descriptionFurniture made to measure in Somerville.
sameAshttps://example.com/fernway, https://social.example/@fernway

Left out of the block because you left them blank, rather than filled with a plausible value: Telephone, Email, Street address, City or town, Region or state, Postal code, Country code.

  • Organizationname, url, logo
    valid JSON-LD, ready to paste
  • A closing script tag inside a fieldin the name
    escaped, the block cannot close early
  • Rating left blankno reviews entered
    omitted from the output, never invented
The escape is the whole job. Inside a script element an HTML parser is still hunting for the characters that close it, so a field carrying a closing script tag would end the block early and spill the rest of the JSON onto the page as visible text. An HTML entity cannot repair that, because entities are not decoded inside a script element. A JSON escape can, and it is what this page writes. A less-than sign is written \u003c, a greater-than sign \u003e and an ampersand \u0026, with the two Unicode line separators beside them. A JSON parser reads the original characters back, which is why the table above shows your text and the block above it shows the escapes. The placeholder domain in the examples is fernway.example, a name reserved for documentation that can never be a real site, so an example left in by accident is obvious rather than plausible.

Common questions

Which schema.org types can it generate?
Four, chosen because they are the ones a site owner actually hand-writes: Organization, WebSite, BreadcrumbList and SoftwareApplication. Organization asks for a name, a site URL and a logo URL, and adds optional description, telephone, email, a postal address and a list of profile links that become sameAs. WebSite asks for a name and a site URL, and adds an alternate name, a description, a language tag and the search URL that becomes a SearchAction. BreadcrumbList takes a trail of levels, numbers their positions in order and lets the last level leave its URL blank, because that level is the page the block sits on. SoftwareApplication asks for a name, an application category and an operating system, and adds a URL, a description, a version, a price with its currency and a rating with its count. Types outside that list are not built here rather than half built.
Why is my text full of \u003c and \u0026 in the output?
Because the block is pasted inside a script element, and inside a script element an HTML parser is still hunting for the characters that close it. A field carrying \u003c/script\u003e in plain text would end the block early and spill the rest of the JSON onto the page as visible words. An HTML entity cannot fix that, since entities are not decoded inside a script element, so the fix is a JSON escape: a less-than sign is written \u003c, a greater-than sign \u003e and an ampersand \u0026, along with the two Unicode line separators. A JSON parser reads exactly the characters you typed back out, which is why the table under the stage shows your text unescaped. The escape changes the bytes, never the meaning.
Will this markup get me a rich result?
It cannot promise one, and no page can. This generator checks its own rules: that the required properties are present, that a URL is a full web address, that a rating has a count beside it, that a search template carries its placeholder. It does not check what any search engine will do with the block, because that is decided by the engine against its own published requirements, which sit on top of schema.org and change without asking anyone. Valid structured data makes a rich result possible; it does not make one happen. Paste the block into your page, then run the page through that engine's own testing tool to see what it reads.
Why will it not fill in a rating or a review count for me?
Because a rating is a fact about your visitors, not a field to be decorated. Generators that pre-fill a plausible 4.8 out of 137 reviews are writing a claim about your site that nobody made, and that is the kind of markup an engine treats as deceptive when it notices. Here a blank rating is left out of the block and listed under it as left out. If you do enter one, both halves are required: a rating value with no count averages nothing, and a count with no value says nothing, so either half alone is an error that names the missing one. The value is emitted on the 1 to 5 scale with worstRating 1 and bestRating 5 written into the block, so nobody has to guess what the number means.
Can I use a path like /logo-512.png instead of the full address?
Yes, for any URL field, as long as the site URL above it is a full address. The path is resolved against that site URL and the resolution is printed under the stage, so /logo-512.png with a site URL of https://fernway.example becomes https://fernway.example/logo-512.png in the block. It is done here rather than left to the reader on purpose: a relative string in JSON-LD is just a string, and a reader that does not resolve it gets an address that points nowhere. A path with no site URL to resolve against is an error, not a guess. Profile links in sameAs live on other sites, so those always need a full address.
What does the search URL on the WebSite type do?
It describes a search page your site already has. Put your own search address in with {search_term_string} where the query goes, for example https://fernway.example/search?q={search_term_string}, and the block gains a SearchAction whose target is that template and whose query-input names the same token. The template is emitted exactly as you typed it, braces and all, because a search action is read as a template rather than as an address, and a browser would percent-encode those braces into something no engine recognises. A search URL without the placeholder is an error that quotes the placeholder back. Leave the field blank if your site has no search page: the property is then left out.
Are there limits on what I can put in?
Two, and both say so rather than trimming quietly. A single field stops at 2,000 characters, and a longer one is refused with the length it received and the limit beside it, because a schema property that long is prose rather than a property. A breadcrumb trail stops at 20 levels, which is deeper than any trail a visitor follows. Those two are the only limits in the page, there is no account, and no field is shortened behind your back.
Does anything I type leave my browser?
No. The block is built in your own browser, nothing is uploaded and there is no sign-up, which matters because an Organization block usually carries a real address and a real phone number. The draft is remembered in this browser alone so the page opens where you left it, and the Start over button at the top of the page forgets it. The example the page opens with uses fernway.example, a domain name reserved for documentation that can never be a real site, so an example left in by accident is obvious rather than plausible.

The JSON-LD is built from the fields you fill in and nothing else: a rating, a review count or a price you did not enter is left out rather than made up. Required properties are marked and a missing one is an error on the page, not a silent omission. Valid structured data makes a rich result possible; it does not make one happen, and the search engine decides.