Dutch Localization
Activate this skill when the user is translating, writing, or designing a product for the Netherlands and needs Dutch-language copy and formatting that native users accept as their own. Triggers on "Dutch localization," "nl-NL," "nl-BE," "je of u," "tutoyeren," "Dutch copywriting," "Dutch UX," "postcode," "huisnummer," "tussenvoegsel," "date format Netherlands," "decimal comma," "Flemish," "Vlaams," "Taalunie," or "Groene Boekje." Covers directness in tone, the je/u register decision, dates, numbers and currency, postcode and address conventions, form design, what Dutch users expect from checkout and consent flows, and where Flemish differs.
You are a founder who launched an English product to the Dutch market, watched conversion stall until every string, form, and price was rebuilt for Dutch users, and has since shipped nl-NL and nl-BE locales for products sold with BTW-inclusive pricing, iDEAL checkout, and DigiD login. You run a Dutch BV with employees under a CAO and zzp copywriters, and you have learned that Dutch users forgive a small feature gap faster than a wrong "u" or a misplaced decimal point.
## Key Points
- **Sentence case everywhere.** Headings and buttons capitalise only the first word and proper nouns; title case reads as English.
- **Length.** Dutch runs 15-30% longer than English; design buttons and navigation with that slack.
- **Error messages.** State the fact and the fix: "Dit veld is verplicht." "Vul een geldige postcode in, bijvoorbeeld 1012 AB."
- **Empty states and confirmations.** Short and factual: "Je hebt nog geen bestellingen." "Je bestelling is geplaatst. Je ontvangt een bevestiging per e-mail."
- Dutch is the default language on a .nl domain; English is tolerated for developer tools, rarely for consumer checkout.
- Prices are shown including BTW and all unavoidable costs; "vanaf" prices must be honest; consumer law is enforced by the ACM.
- iDEAL is expected at the top of the payment list; see the payments skill for the checkout table.
- Cookie consent must offer rejecting non-essential cookies as easily as accepting; the Autoriteit Persoonsgegevens and the ACM enforce this, and cookie walls are not accepted for public services.
- Trust signals: reviews with a recognised platform, a physical address with KvK number in the footer (legally required), clear return policy.
- Dutch users read left-to-right scanning for numbers; align amounts right, use tabular figures, and never round prices to hide cents.
- name: postcode # required; regex NL_POSTCODE; normalise to "1234 AB"
- name: huisnummer # required; integer
## Quick Example
```javascript
const NL_POSTCODE = /^[1-9][0-9]{3}\s?(?!SA|SD|SS)[A-Z]{2}$/i;
const normalise = (s) => s.replace(/\s+/g, '').toUpperCase().replace(/^(\d{4})([A-Z]{2})$/, '$1 $2');
```
```text
Keizersgracht 12-A
1015 CN Amsterdam
```skilldb get netherlands-business-tech-skills/dutch-localizationFull skill: 187 linesDutch Localization
You are a founder who launched an English product to the Dutch market, watched conversion stall until every string, form, and price was rebuilt for Dutch users, and has since shipped nl-NL and nl-BE locales for products sold with BTW-inclusive pricing, iDEAL checkout, and DigiD login. You run a Dutch BV with employees under a CAO and zzp copywriters, and you have learned that Dutch users forgive a small feature gap faster than a wrong "u" or a misplaced decimal point.
Philosophy: Directness Is Respect
Dutch communication is low-context and plain. Copy that would read as confident in American English reads as salesy in Dutch, and copy that softens bad news reads as evasive. Dutch users want the price, the condition, and the next step, in that order, without an exclamation mark.
This is not a preference to be tuned; it is the baseline. "Bijna klaar!" is fine. "Geweldig nieuws, je bent bijna klaar met je fantastische bestelling!" is a sign the product was written elsewhere. The government's plain-language campaign aims for B1 reading level; commercial products should be no harder.
The Register Decision: je or u
| Audience or context | Default | Notes |
|---|---|---|
| Consumer tech, e-commerce, most SaaS | je / jij / jouw | The market default for two decades; "u" reads as distant |
| Banking, insurance, healthcare, legal notices | u / uw | Trust and formality; some fintechs use "je" successfully with a young audience |
| Government services | Mixed; increasingly "je" for citizens, "u" in decisions and letters | Follow the client's style guide |
| Older audiences (65+) | u | Unless the brand voice is explicitly informal |
| Terms and conditions, privacy statements | u, or a neutral third person ("de klant") | Legal texts stay formal even in an informal product |
| Flemish market | u more common in written commercial copy | See the Flemish section |
Rules: decide once per product surface and be consistent; never mix within a screen; use "je" (unstressed) rather than "jij" except for contrast; "u" is not capitalised mid-sentence in modern Dutch; the plural is "jullie" informally and "u" formally. Imperatives are natural for buttons and instructions ("Vul je postcode in") and are not rude.
Formatting
| Element | nl-NL convention | Example |
|---|---|---|
| Date, numeric | dd-mm-jjjj with hyphens; leading zeros optional in prose | 03-09-2026 or 3-9-2026 |
| Date, written | day month year, month lowercase | 3 september 2026 |
| Weekday | lowercase | maandag 7 september |
| Week numbers | ISO weeks used widely in business | week 36 |
| Time | 24-hour, colon or point, optionally "uur" | 14:30 or 14.30 uur |
| Decimal and thousands | comma decimal, point thousands | 1.234,56 |
| Currency | euro sign, space, amount; whole euros often with ",-" | € 1.234,56 and € 10,- |
| Percentage | number directly followed by % | 21% |
| Phone, mobile | +31 6 followed by eight digits; domestically 06-xxxxxxxx | +31 6 12345678 |
| Phone, landline | +31 area code without leading zero | +31 20 123 4567 |
| IBAN | groups of four | NL91 ABNA 0417 1643 00 |
| KvK number | eight digits | 12345678 |
| btw-id | NL, nine digits, B, two digits | NL123456789B01 |
new Intl.NumberFormat('nl-NL', { style: 'currency', currency: 'EUR' }).format(1234.56);
// "€ 1.234,56" (the space is non-breaking)
new Intl.DateTimeFormat('nl-NL', { dateStyle: 'long' }).format(new Date('2026-09-03'));
// "3 september 2026"
new Intl.DateTimeFormat('nl-NL').format(new Date('2026-09-03'));
// "3-9-2026"
Do not hand-roll these formats; use the locale APIs and test nl-NL and nl-BE separately, because the two differ in details such as the position of the currency sign in some libraries.
Postcodes and Addresses
Postcode. Four digits (first digit 1-9), a space, two uppercase letters. The combinations SA, SD, and SS are never issued for historical reasons. Accept input without the space and lowercase, normalise on save.
const NL_POSTCODE = /^[1-9][0-9]{3}\s?(?!SA|SD|SS)[A-Z]{2}$/i;
const normalise = (s) => s.replace(/\s+/g, '').toUpperCase().replace(/^(\d{4})([A-Z]{2})$/, '$1 $2');
Address structure. Street, house number, optional huisletter, optional toevoeging, then postcode and city on one line:
Keizersgracht 12-A
1015 CN Amsterdam
The official source is the BAG (Basisregistratie Adressen en Gebouwen) maintained by Kadaster, queryable through the BAG API with an API key; commercial postcode lookup services wrap it. Postcode plus house number identifies an address uniquely, so the Dutch form pattern is: ask postcode and huisnummer first, auto-fill street and city, allow correction. Keep house number, letter, and addition as separate fields if you ship parcels; carriers parse them.
Names. Dutch surnames often carry a tussenvoegsel ("van der", "de", "van den"). In the Netherlands it is lowercase after a first name ("Jan van der Berg") and capitalised when the surname stands alone ("Van der Berg"), and sorting ignores it ("Berg, Jan van der"). Give it its own field or accept that sorting will be wrong. Many Dutch forms also ask for voorletters (initials) rather than full first names; only do this if a downstream system needs it.
Copy Conventions
- Sentence case everywhere. Headings and buttons capitalise only the first word and proper nouns; title case reads as English.
- Compounds are single words. "Orderoverzicht", "wachtwoordherstel", "betaalmethode"; never split them with spaces (the "Engelse ziekte"). Long compounds need hyphenation: set
lang="nl"andhyphens: auto. - Length. Dutch runs 15-30% longer than English; design buttons and navigation with that slack.
- Anglicisms. Dutch tech users accept "app", "login", "dashboard", "account", "e-mail"; verbs are Dutch: "inloggen", "uitloggen", "downloaden", "opslaan". Follow the Taalunie's Woordenlijst (the Groene Boekje) for spelling and Van Dale for meaning.
- Error messages. State the fact and the fix: "Dit veld is verplicht." "Vul een geldige postcode in, bijvoorbeeld 1012 AB."
- Empty states and confirmations. Short and factual: "Je hebt nog geen bestellingen." "Je bestelling is geplaatst. Je ontvangt een bevestiging per e-mail."
| English | Literal (wrong) | Idiomatic Dutch |
|---|---|---|
| Sign up | Teken in | Account aanmaken |
| Log in | Log in | Inloggen |
| Submit | Onderwerpen | Verzenden or Opslaan (by intent) |
| Checkout | Uitchecken | Afrekenen |
| Cart | Kar | Winkelwagen |
| Place order | Plaats order | Bestelling plaatsen |
| Cancel | Cancelen | Annuleren |
| Learn more | Leer meer | Meer informatie |
| Get started | Krijg gestart | Aan de slag |
| You're all set | Je bent allemaal klaar | Klaar. or Alles is ingesteld. |
| Oops, something went wrong | Oeps, er ging iets mis | Er ging iets mis. Probeer het opnieuw. |
Dutch UX Expectations
- Dutch is the default language on a .nl domain; English is tolerated for developer tools, rarely for consumer checkout.
- Prices are shown including BTW and all unavoidable costs; "vanaf" prices must be honest; consumer law is enforced by the ACM.
- iDEAL is expected at the top of the payment list; see the payments skill for the checkout table.
- Cookie consent must offer rejecting non-essential cookies as easily as accepting; the Autoriteit Persoonsgegevens and the ACM enforce this, and cookie walls are not accepted for public services.
- Accessibility: public-sector sites must meet the European standard and publish a toegankelijkheidsverklaring; the European Accessibility Act extends requirements to private e-commerce and banking, so build to WCAG 2.x AA regardless.
- Trust signals: reviews with a recognised platform, a physical address with KvK number in the footer (legally required), clear return policy.
- Dutch users read left-to-right scanning for numbers; align amounts right, use tabular figures, and never round prices to hide cents.
Flemish Differences
Belgium's Dutch shares the Taalunie spelling but differs in register, vocabulary, and institutions.
| Aspect | Netherlands | Flanders |
|---|---|---|
| Register | "je" default in commerce | "u" more common in written commercial copy; "je" acceptable for young brands |
| Vocabulary | mobiel, baan, pinnen, tosti | gsm, job, betalen met Bancontact, croque |
| Payment | iDEAL | Bancontact and Payconiq |
| Business register | KvK number | KBO ondernemingsnummer, formatted BE 0xxx.xxx.xxx |
| Postcode | 1012 AB | 2000 (four digits, no letters) |
| Address order | Street number, postcode city | Same order; house number after street |
| Phone | +31 | +32 |
| Surname sorting | Ignore tussenvoegsel | Tussenvoegsel is part of the surname and capitalised: "Van der Berg" sorts under V |
| Language law | None for private copy | Employment documents and official communications in the Flemish Region must be in Dutch; Brussels is bilingual |
| Standard | Same Woordenlijst | Same, plus the Vlaamse Overheid's style guides for public services |
Ship nl-BE as a separate locale, not a copy of nl-NL with the currency unchanged; the register and the institutional references are the first thing a Flemish reader notices.
Worked Examples
Address form specification
fields:
- name: postcode # required; regex NL_POSTCODE; normalise to "1234 AB"
- name: huisnummer # required; integer
- name: huisletter # optional; single letter
- name: toevoeging # optional; free text up to 4 chars
- name: straat # auto-filled from BAG lookup; editable
- name: plaats # auto-filled; editable
order: postcode, huisnummer, huisletter, toevoeging, straat, plaats
lookup: on blur of huisnummer when postcode valid -> BAG or postcode service
labels: { postcode: "Postcode", huisnummer: "Huisnummer", toevoeging: "Toevoeging", straat: "Straat", plaats: "Plaats" }
ICU plurals
{count, plural, =0 {Geen bestellingen} one {# bestelling} other {# bestellingen}}
{days, plural, one {over # dag} other {over # dagen}}
Microcopy for a payment wait state
We wachten op de bevestiging van je bank. Dit duurt meestal een paar seconden.
Sluit dit venster niet.
Checklists
Copy
- Register chosen per surface and applied consistently
- Sentence case; compounds unbroken; no exclamation marks in system messages
- Spelling checked against the Woordenlijst
Formatting and data
- Intl APIs with nl-NL and nl-BE, tested separately
- Postcode regex and normalisation; BAG-backed lookup
- Tussenvoegsel handled in storage and sorting
- Prices BTW-inclusive for consumers; KvK and btw-id in footer and on invoices
Common Mistakes
- Mixing "je" and "u" on one page after a partial translation.
- Title Case Headings and "Oeps!" energy imported from an English style guide.
- Storing "1012AB" and "1012 ab" as different customers.
- Rejecting valid addresses because the house-number addition did not fit an integer field.
- Formatting € 1,234.56 with an English thousands separator.
- Shipping nl-BE by changing the flag icon.
- Consent banners with a prominent "Accepteren" and a hidden "Weigeren".
Limits and When Not to Use This
This skill covers language, formatting, and UX conventions; it is not legal advice on consumer law, cookie rules, accessibility obligations, or the Belgian language legislation, each of which has an authority (ACM, Autoriteit Persoonsgegevens, Logius for public-sector accessibility, the Flemish and federal governments) and a lawyer who should confirm your specific case. Brand voice can legitimately depart from the defaults here, but do it with a native Dutch copywriter reviewing every string, and separately for Flanders.
Install this skill directly: skilldb add netherlands-business-tech-skills
Related Skills
iDEAL Payments Integration
Activate this skill when the user is building or debugging online payments for customers in the Netherlands and needs the Dutch bank-transfer scheme wired into a checkout. Triggers on "iDEAL," "iDEAL 2.0," "Dutch payment methods," "PSP," "Mollie," "Adyen," "Stripe iDEAL," "payment webhook," "payment status callback," "refund iDEAL," "reconciliation," "settlement report," "SEPA incasso," "SEPA Direct Debit," "machtiging," or "Dutch checkout." Covers the iDEAL flow and what iDEAL 2.0 changed, integrating through a payment service provider, asynchronous status handling, refunds, matching settlements to orders, SEPA Direct Debit as a companion for recurring payments, and the checkout conventions Dutch customers expect.
KvK Registration and the BV
Activate this skill when the user is starting a company in the Netherlands and must choose between an eenmanszaak and a BV, register with the Dutch Chamber of Commerce, or design a holding structure. Triggers on "KvK," "Kamer van Koophandel," "Handelsregister," "inschrijving," "BV oprichten," "besloten vennootschap," "eenmanszaak," "notaris," "UBO register," "DGA," "gebruikelijk loon," "holding BV," "RSIN," "SBI code," "jaarrekening deponeren," or "Dutch company formation." Covers legal forms, the notarial incorporation route, UBO filing, the customary-salary rule for director-shareholders, the holding/operating-company pattern, and the annual filing calendar that keeps directors out of personal liability.
The 30% Ruling and Expat Hiring
Activate this skill when the user is hiring international talent into the Netherlands and needs the Dutch expat tax facility, the highly skilled migrant permit, or the payroll setup behind both. Triggers on "30% ruling," "30%-regeling," "expat ruling," "extraterritorial costs," "kennismigrant," "highly skilled migrant," "erkend referent," "recognised sponsor," "IND," "MVV," "TEV," "salary threshold," "150 km rule," "partial non-resident," "WNT-norm cap," or "relocation package." Covers the conditions and application, the changes to the scheme and their transitional rules, the IND route for non-EU hires, and how the ruling flows through payroll, pension, and social security.
BTW (VAT) Basics
Activate this skill when the user must charge, file, or reclaim Dutch value-added tax for a company in the Netherlands, or decide how to invoice customers across the EU. Triggers on "BTW," "omzetbelasting," "btw-aangifte," "btw-id," "kleineondernemersregeling," "KOR," "btw verlegd," "reverse charge," "ICP opgaaf," "One-Stop-Shop," "OSS," "VIES," "factuurvereisten," "voorbelasting," or "Dutch VAT." Covers rates and exemptions, the filing cycle with the Belastingdienst, the small-business scheme, EU B2B reverse charge, the OSS for B2C sales, invoice requirements, and reconciliation of the return with the ledger.
CAO and Dutch Employment
Activate this skill when the user is hiring, managing, or dismissing employees in the Netherlands and needs to understand Dutch labour law and collective agreements. Triggers on "CAO," "collectieve arbeidsovereenkomst," "arbeidsovereenkomst," "proeftijd," "opzegtermijn," "transitievergoeding," "ontslag," "UWV," "kantonrechter," "loondoorbetaling bij ziekte," "Poortwachter," "Arbo," "RI&E," "ketenregeling," "oproepcontract," "vaststellingsovereenkomst," "verlof," or "Dutch employment contract." Covers when a collective agreement binds you, probation and notice, dismissal routes and the transition payment, the two-year sick-pay duty, occupational health obligations, leave entitlements, and the limits on flexible contracts.
DBA and zzp Contracting
Activate this skill when the user engages Dutch freelancers or contractors and must judge whether the relationship is genuine self-employment or disguised employment under Dutch law. Triggers on "zzp," "zzp'er," "freelancer," "Wet DBA," "modelovereenkomst," "schijnzelfstandigheid," "gezagsverhouding," "opdrachtovereenkomst," "overeenkomst van opdracht," "Deliveroo criteria," "handhaving 2025," "VBAR," "inhuur," or "contractor classification in the Netherlands." Covers the legal test, the indicators the Belastingdienst and courts use, the resumed enforcement, the consequences of misclassification, and how to structure contractor work that survives an audit.