How should decimal product prices be formatted in structured data?

The Citead team, updated

In short. Use a period for decimals and a separate priceCurrency code for structured product prices.

Definition: A product price in structured data is represented by a price value and a separate priceCurrency value. Use a full stop (.) as the decimal point in the machine-readable value; Google's merchant listing example shows 10.00 with USD.

Key facts

  • Google's merchant listing documentation, last updated 8 September 2026, shows an Offer with "price": 10.00 and "priceCurrency": "USD" in JSON-LD. Google's merchant listing documentation uses those fields for an active price.
  • The same documentation allows an active price at the offer level or inside priceSpecification. When both are supplied, Google uses offers.price and ignores offers.priceSpecification.
  • Schema.org defines price with an expected type of Number or Text and defines priceCurrency as Text. Schema.org's Offer definition describes priceCurrency as the currency of the price.
  • Schema.org says to use . rather than , for a decimal point and to avoid those symbols as readability separators.
  • RFC 8259 specifies that a JSON fraction part is a decimal point followed by one or more digits.

How should the price value be written?

Google's active price example puts a JSON number in price and a three-letter currency code in priceCurrency:

{
  "@type": "Offer",
  "price": 10.00,
  "priceCurrency": "USD"
}

The same documentation also shows priceSpecification with the UnitPriceSpecification type as an alternative place for an active price. If both locations encode the active price, Google's documented precedence is the offer-level price property.

For JSON numbers, RFC 8259 defines the fraction separator as a decimal point. A comma therefore cannot serve as the decimal separator in a numeric JSON value. Schema.org applies the same full-stop rule to the price property and says to avoid punctuation used only to improve human readability.

Schema.org permits price as Number or Text. Whichever supported representation the markup uses, the machine-readable value needs the decimal form that the vocabulary documents. A visible shop label can use local presentation conventions while the structured value remains separately readable by software.

Where should the currency be placed?

Put the currency in priceCurrency, alongside price or on the relevant PriceSpecification. Schema.org defines this property as the currency of the price and recommends standard formats such as ISO 4217, with USD as its example. The price field therefore carries the amount, while the currency field identifies its unit.

A currency symbol such as $ is ambiguous across currencies. Schema.org's guidance says to use priceCurrency instead of including an ambiguous symbol in the value. Its examples show a human-friendly amount such as $1,000.00 paired with machine-readable price content of 1000.00 and priceCurrency content of USD.

Keep the code consistent for every price that belongs to the same offer. If a price is moved into a price specification, place its corresponding priceCurrency there as well, following Google's documented UnitPriceSpecification example.

How can you check the markup?

After editing the product markup, Google recommends validating it with the Rich Results Test and using the URL Inspection tool to test how Google sees the page. The page should be accessible to Google and should not be blocked by a robots.txt file, a noindex tag, or login requirements, according to the same merchant listing workflow.

FAQ

Can I put a currency symbol inside price?

Schema.org recommends putting the currency in priceCurrency, using a standard format such as USD, instead of placing an ambiguous symbol such as $ in the price value. The visible presentation can still show the symbol beside the amount.

Should the decimal separator be a comma or a period?

Use a period. Schema.org specifies a full stop (.) for the decimal point, and RFC 8259 uses the same separator in JSON numbers.

Sources

  1. Google Search Central, "Merchant listing (Product, Offer) structured data", 8 September 2026
  2. Schema.org, "Offer", 16 September 2026
  3. IETF, "The JavaScript Object Notation (JSON) Data Interchange Format", December 2017

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark