Why the address is a nested object, not one text field#
Schema.org's PostalAddress breaks an address into separate machine-readable parts — street, city, region, postal code, country — rather than one string, because search engines and map services need to parse each part independently (matching a city name for local search, validating a country code for currency or shipping context). A single flattened address string looks fine to a human reading the page but gives a crawler nothing structured to work with. This tool builds that nested object correctly from separate fields, so you never have to think about the JSON-LD shape.
How the opening hours line gets parsed#
Typing "Mo-Fr 09:00-17:00" is much faster than hand-writing a dayOfWeek array and an OpeningHoursSpecification object, so this tool accepts that shorthand directly: a two-letter day code, optionally a range with a second day code, then two times separated by a hyphen. Each line in the opening hours box becomes its own separate specification object, so a business with different hours on weekends just needs a second line, like "Sa-Su 10:00-14:00" underneath the weekday line.
Why the country code has to be exactly 2 letters#
addressCountry expects an ISO 3166-1 alpha-2 code — "US", not "USA" or "United States" — because that is the format schema.org and the services reading this data actually parse. A country name spelled out is not technically invalid JSON, but it will not be recognized as the country it names, which quietly breaks any downstream use of that field. This tool checks the exact 2-letter shape and rejects anything else.