Price & Number Format Checker
1,234 is one thousand two hundred and thirty-four in English and 1.234 in German.
Same characters, a thousandfold apart, and no importer will warn you. Paste a price to see
whether yours is ambiguous.
🔒 Your data never leaves your browser.
The most expensive silent bug in a product feed
A German export writes nineteen ninety-nine as 19,99. An English-speaking parser
reads the comma as a thousands separator, drops it, and stores 1999. There is
no error, no warning, and no rejected row — just a product priced a hundred times too high
until someone notices.
The trap is specific and identifiable: a single separator followed by exactly three
digits. 1,234 and 1.234 are genuinely ambiguous, because
both readings are valid somewhere. Anything else — two decimal places, both separators
present, no separator at all — has only one sensible reading, and this tool says so instead of
warning about everything.
Why feeds want a currency code, not a symbol
$ is used by more than twenty currencies, kr by several Nordic ones,
and ¥ by both the yen and the yuan. That is why Google Shopping and every other
feed specification want the ISO 4217 code: 19.99 USD, not $19.99.
Not every currency has two decimal places
Assuming two is a safe-looking bug. Currencies with none:
JPY, KRW, VND — a price of
1500.00 JPY is malformed. Currencies with three:
BHD, KWD.
A value whose decimal count does not match its currency is often a sign the number was scaled or converted incorrectly somewhere upstream.
Every check this tool runs (8 rules)
NUM-A01Ambiguous decimal separator
A single comma or full stop with exactly three digits after it can be either a decimal separator or a thousands separator. "1,234" is one thousand two hundred and thirty-four in English and 1.234 in German — the same characters, a thousandfold apart, and no parser can tell which you meant.
Fix: Use an unambiguous form: a full stop for decimals with no thousands separators at all, and always two decimal places for prices (1234.00).
Source: ISO 4217 currency codes and the decimal/grouping conventions used across locales. The ambiguity analysis is derived from the notation itself, not from a locale guess.
NUM-A02Comma used as a decimal separator
The value uses a comma for decimals (European convention). Most feed specifications — Google Shopping among them — require a full stop, and a comma is either rejected or silently read as a thousands separator.
Fix: Replace the comma with a full stop.
Source: ISO 4217 currency codes and the decimal/grouping conventions used across locales. The ambiguity analysis is derived from the notation itself, not from a locale guess.
NUM-A03Thousands separators present
Grouping separators are for display, not for data. Feeds and APIs generally reject them, and a parser that ignores them silently gives a different number.
Fix: Remove the grouping separators: 1234.00, not 1,234.00.
Source: ISO 4217 currency codes and the decimal/grouping conventions used across locales. The ambiguity analysis is derived from the notation itself, not from a locale guess.
NUM-A04Malformed grouping
The separator repeats, so it cannot be a decimal point — but the digit groups are not the 3-3-3 that a thousands separator produces either. Values like "1,2,345" come from a broken export or a hand-edited cell, and every parser will read them differently.
Fix: Strip the separators and re-check the number against your source of truth; do not assume either reading is correct.
Source: ISO 4217 currency codes and the decimal/grouping conventions used across locales. The ambiguity analysis is derived from the notation itself, not from a locale guess.
NUM-C01Unknown currency code
The three-letter code is not in the ISO 4217 list this tool carries. Feeds are rejected for currency codes that do not exist, and the usual cause is a typo or a made-up abbreviation.
Fix: Use the ISO 4217 code — USD, EUR, GBP, JPY and so on.
Source: ISO 4217 currency codes and the decimal/grouping conventions used across locales. The ambiguity analysis is derived from the notation itself, not from a locale guess.
NUM-C02Currency symbol instead of a code
A symbol was used where a code is expected. Symbols are ambiguous — $ is used by more than twenty currencies, and £ and kr each cover several — so feed specifications require the three-letter code.
Fix: Replace the symbol with the ISO 4217 code, after confirming which currency it actually was.
Source: ISO 4217 currency codes and the decimal/grouping conventions used across locales. The ambiguity analysis is derived from the notation itself, not from a locale guess.
NUM-C03Decimal places do not match the currency
Most currencies use two decimal places, but some use none (JPY, KRW) and a few use three (BHD, KWD). A price with the wrong number of decimals is often a sign the value was converted or scaled incorrectly.
Source: ISO 4217 currency codes and the decimal/grouping conventions used across locales. The ambiguity analysis is derived from the notation itself, not from a locale guess.
NUM-F01Not a number
No numeric value could be read from this input.
Source: ISO 4217 currency codes and the decimal/grouping conventions used across locales. The ambiguity analysis is derived from the notation itself, not from a locale guess.
Currency coverage is 34 commonly traded ISO 4217 codes. A code outside that list is reported as unrecognised rather than invalid — it may be real and simply not carried here.