Guide
Swiss locale formats for dates, numbers and prices
Format dates, numbers and prices with the locale data built into browsers and programming languages, using tags such as de-CH, fr-CH and it-CH, rather than writing the formats by hand. Then check the output with a fluent reviewer, because locale data differs between software versions. For consumer prices in Switzerland, show the amount actually payable in Swiss francs, VAT included.
Why "Swiss format" is not one format
Switzerland does not have a single national way to write numbers and dates; conventions follow language and context. A German-language page for Swiss readers, a French-language page for the Romandie and an English page for international visitors can each expect something slightly different. Locale tags capture this: de-CH means German as used in Switzerland, distinct from de-DE for Germany.
To show how much the details vary, here is what the JavaScript engine used to build this site (Node.js 22, in November 2026) produces for the same values:
| Locale tag | Short date for 14 March 2026 | 1234567.5 as a number | CHF 1234.50 as a price |
|---|---|---|---|
| de-CH | 14.03.26 | 1'234'567.5 | CHF 1'234.50 |
| fr-CH | 14.03.26 | 1'234'567,5 | 1'234.50 CHF |
| it-CH | 14.03.26 | 1'234'567.5 | CHF 1234.50 |
| de-DE | 14.03.26 | 1.234.567,5 | 1.234,50 CHF |
| fr-FR | 14/03/2026 | 1 234 567,5 | 1 234,50 CHF |
Two lessons come out of that table. First, Swiss German and German German differ in their separators, so borrowing a German site's formatting gives Swiss readers numbers they would not write themselves. Second, the data is not perfectly consistent even within one locale: in this engine, fr-CH uses a comma for the decimal in a plain number but a point inside a franc price, and it-CH drops the thousands separator in the price. Your browser may produce something else. The language demo shows your own browser's output live.
Let locale data format, then review
Writing formats by hand, such as gluing an apostrophe every three digits, breaks the moment a page appears in another language. The better pattern is to store values as plain data (a number, a date, an amount in a currency) and format them at display time with the page's locale tag. Browsers do this with the Intl interfaces; server languages have equivalents.
Because the output depends on the locale data shipped with each browser or library, treat it as a starting point, not as final. Ask a reviewer who reads each language to confirm the formats on the real pages. If they want something different from what the data gives, set the format explicitly for that locale and document why.
Prices in Swiss francs
The Confederation's SME portal summarises the price indication rules plainly: the price actually payable by the consumer must be shown in CHF, and it includes public taxes such as VAT 1. For online shops, the amount the consumer actually pays must be given in Swiss francs, and delivery costs should in principle be included in the price shown; where they cannot be, the terms must appear clearly alongside the product price 1.
This applies to prices aimed at consumers. Business-to-business price lists can follow other conventions, but if the same site serves both, make it clear which prices include VAT. The Federal Tax Administration lists the normal Swiss VAT rate as 8.1 percent 2; confirm the rate that applies to your goods or services with your tax adviser.
Price display also interacts with language. "CHF 1'234.50" and "1'234.50 CHF" are both seen in Swiss contexts; pick one per language version, apply it everywhere, and keep the currency code visible so readers abroad are not left guessing.
Dates and times
The day-month-year order is shared across the Swiss locales, written with dots in German and in French contexts. Spell months out where ambiguity matters, such as in contracts, event dates and delivery promises, because "03.04" means 3 April in Switzerland and March 4 to a reader used to American conventions. Use the 24-hour clock in the national-language versions.
For dates in structured data and in code, use the ISO 8601 format (2026-03-14), which is unambiguous to machines in every language.
Phone numbers
Show phone numbers in international form with the +41 country code, so readers abroad can dial them, and make them tappable with a tel: link that contains the digits without spaces. Within that, local grouping of digits is a display choice; keep it consistent across languages.
Addresses and forms
Swiss postal addresses put the postcode before the town. Forms that serve readers in several countries should not force one country's pattern on everyone: a postcode field that accepts only four digits rejects German and Italian postcodes, which have five, and a "state" field confuses readers from countries without states.
Practical rules for multilingual forms:
- Keep the postcode field as free text with a sensible length, and validate only where you know the country.
- Offer a country field near the top of the address block if you accept addresses from abroad, and adapt the remaining fields to it.
- Translate field labels and error messages, and keep examples in placeholders appropriate to each language version.
Numbers inside text
Formatting rules apply to numbers in running text too, not only to prices and tables. "Over 1,000 products" in an English draft becomes "über 1'000 Produkte" in a Swiss German version if the translator follows Swiss conventions. Tell translators which separators to use in the handover, and put the rule in your glossary.
A short checklist
- Every page declares its locale with a language tag that formatting code can read.
- Dates, numbers and prices are formatted from data, not typed as text.
- Consumer prices for Switzerland are in CHF with VAT included, with delivery costs handled as the rules require.
- A fluent reviewer has confirmed the formats in each language on real pages.
- Forms accept the address and phone formats of everyone you serve.
The locale QA checklist includes these checks among its thirty-three items.
Sources
Formats looking different across languages?
Tell us which locales your site serves, and we'll let you know by email if we can help.
Ask about formats