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.