Locales

Dutch typography rules · nl

Nederlands

Dutch sets primary quotation marks as “…” and secondary quotation marks as ‘…’. A break in a sentence is written with an en dash (U+2013) with a space on each side; no single range convention is verified, so none is substituted. Numbers bind to units such as % ‰ °C with U+00A0.

Updated · spec 1.12.0

Run polytypo with Dutch rules

Edit the text and polytypo typesets it with the nl locale, in your browser. The code under the form is the call that produces the result.

Runs in your browser. Nothing you paste is sent anywhere.

The call the form above is making, right now

Other locales, and all the options, are in the full playground.

Dutch typography at a glance #

Tagnl
NameDutch
Primary quotes“ U+201C left double quotation mark … ” U+201D right double quotation mark
Secondary quotes‘ U+2018 left single quotation mark … ’ U+2019 right single quotation mark
Parenthetical dashspaced en dash
Range dashno dash substitution
Rules with citationsquotes, dashes, ranges, ellipsis, hyphen, nbsp
Conformance cases16

Which locale tags resolve to Dutch? #

The locale option is resolved exactly, then by declared alias, then by dropping the region once; anything else throws POLYTYPO_UNKNOWN_LOCALE.

TagHow it resolves
nlregistered locale
nl-BEregion removed, then the registered locale

Which quotation marks does Dutch use? #

Primary“ U+201C left double quotation mark … ” U+201D right double quotation mark — no space inside the marks
Secondary‘ U+2018 left single quotation mark … ’ U+2019 right single quotation mark — no space inside the marks

Elision clitics

Word fragments that stand against an apostrophe at the edge of an inline span; a narrow mark next to one is not paired as a quotation.

Before the apostrophenone
After the apostrophes t ns k m em r et

quotes

nl-quotes-primary
Hij zei "dag" en vertrok.
Hij zei “dag” en vertrok.
nl-quotes-nested
De koning zei: "Ik hoorde iemand 'hoera' roepen."
De koning zei: “Ik hoorde iemand ‘hoera’ roepen.”

How are apostrophes set in Dutch? #

apostrophe

nl-quotes-apostrophe-not-a-quote
Hij kocht twee auto's.
Hij kocht twee auto’s.

Which dashes does Dutch use for breaks and ranges? #

Parenthetical break (dash.parenthetical)an en dash (U+2013) with a space on each side
Between numbers and dates (dash.range)no substitution: the locale has no verified convention, so the rule writes nothing

The dashes rule reads the parenthetical convention. The ranges rule reads the range convention and is off by default.

dashes

nl-dashes-parenthetical
Het nieuws - volgens de kranten - is niet bekend.
Het nieuws – volgens de kranten – is niet bekend.

How is the ellipsis set in Dutch? #

An ellipsis keeps its full form after ! and ?; this locale does not abbreviate it there.

ellipsis

nl-ellipsis-three-dots
Hou je van jazz, blues, soul ...?
Hou je van jazz, blues, soul …?

How are hyphens handled in Dutch? #

The hyphen lists are empty for this locale, so the hyphen rule changes nothing.

Where does Dutch use no-break spaces? #

Characters that take U+00A0 before them (nbsp.beforePunctuation)none
Characters that take U+202F before them (nbsp.narrowBeforePunctuation)none
Short words after which the space becomes U+00A0, so the word is not left at the end of a line (nbsp.afterShortWords)none
Multi-token abbreviations whose internal spaces become U+00A0 (nbsp.abbreviations)prof. dr.
Units and signs bound to the preceding number with U+00A0 (nbsp.beforeUnits)% ‰ °C km cm mm kg km/h kWh
Abbreviations bound to the following number with U+00A0 (nbsp.beforeNumber)none
Abbreviations bound to the following word with U+00A0 (nbsp.beforeWord)none
Symbols bound to the following number with U+00A0 (nbsp.afterSymbols)€ $
Initials (nbsp.initialBinding)none — disabled: initials are never bound to the name that follows

spaces

nl-spaces-brackets-and-final-stop
De tekst ( gewoon ) verandert niet .
De tekst (gewoon) verandert niet.

nbsp

nl-nbsp-currency
De vaas kostte € 179.
De vaas kostte € 179.
nl-nbsp-unit
De afstand was 15 cm.
De afstand was 15 cm.
nl-nbsp-abbreviation
prof. dr. Jansen
prof. dr. Jansen

How are symbols set in Dutch? #

symbols

nl-symbols-copyright-and-dimensions
Copyright (c) 2026, formaat 40x60 cm
Copyright © 2026, formaat 40×60 cm

How does Dutch text behave in text, HTML and Markdown modes? #

Each input is the locale's sample sentence followed by a code run, say("a -- b ..."). text mode sets the whole string as prose, code run included. In html and markdown mode the code run comes back byte for byte; only the prose is set.

text
Hij vroeg: "Is dit niet de winkel die ze 'om de hoek' noemen?" ... We liepen -- bijna 3 km -- en hij was dicht. Copyright (c) 2026, formaat 40x60 cm. say("a -- b ...")
Hij vroeg: “Is dit niet de winkel die ze ‘om de hoek’ noemen?” … We liepen – bijna 3 km – en hij was dicht. Copyright © 2026, formaat 40×60 cm. say(“a – b …”)
html
<p>Hij vroeg: "Is dit niet de winkel die ze 'om de hoek' noemen?" ... We liepen -- bijna 3 km -- en hij was dicht. Copyright (c) 2026, formaat 40x60 cm.</p> <pre><code>say("a -- b ...")</code></pre>
<p>Hij vroeg: “Is dit niet de winkel die ze ‘om de hoek’ noemen?” … We liepen – bijna 3 km – en hij was dicht. Copyright © 2026, formaat 40×60 cm.</p> <pre><code>say("a -- b ...")</code></pre>
markdown
Hij vroeg: "Is dit niet de winkel die ze 'om de hoek' noemen?" ... We liepen -- bijna 3 km -- en hij was dicht. Copyright (c) 2026, formaat 40x60 cm. `say("a -- b ...")`
Hij vroeg: “Is dit niet de winkel die ze ‘om de hoek’ noemen?” … We liepen – bijna 3 km – en hij was dicht. Copyright © 2026, formaat 40×60 cm. `say("a -- b ...")`

Which sources define Dutch typography? #

9 citations in spec/locales/nl.json, grouped by the rule each one supports. A citation names the authority; the note records what the source does and does not settle.

ellipsis

  • Nederlandse Taalunie, Taaladvies.net, «Punt na enz. of beletselteken aan het einde van een zin» (12 mei 2021): «na een afkorting met een punt of na een beletselteken aan het eind van een zin, komt geen extra punt», met het voorbeeld «Hou je van jazz, blues, soul …?» taaladvies.net

    Onderbouwt abbreviatedAfterTerminal = false. Het beletselteken is «een vaste eenheid van drie punten» en het vraagteken volgt erop; voor de Russische tweepuntsvorm «?..» geeft geen geraadpleegde Nederlandse bron een grondslag. Anders dan bij het Grieks valt hier niets af te wijken: het Nederlands schrijft juist wél een spatie vóór het beletselteken, en spaces.md §3.4 laat die spatie in elk locale staan — bron en motor zijn het hier eens. Geraadpleegd op 18.09.2026.

ranges

  • Genootschap Onze Taal, Taalloket, «kort streepje (-) of lang streepje (–)»: het korte streepje geeft tussen getallen «tot en met» aan — «1940-1945, de categorie 30-45 jaar, pagina 10-12»; Nederlandse Taalunie, «20 tot 30-jarigen of 20-30-jarigen?» (12 mei 2021), dat overal U+002D toont zonder over het streepjestype iets voor te schrijven onzetaal.nl

    Onderbouwt dash.range = «none» als een keuze en niet als een leemte: het Nederlandse bereikteken is het koppelteken U+002D, dat de auteur al heeft getypt, en het schema kent daarvoor geen enum-waarde. «none» laat de invoer ongemoeid, wat precies is wat de bron beschrijft; «en-tight» zou er een vorm van maken die geen enkele Nederlandse bron voorschrijft. Aparte ingang van die van dashes, omdat de twee velden op verschillende bronnen rusten. De regel «ranges» staat standaard uit (spec 0.5.0). Geraadpleegd op 18.09.2026.

dashes

  • Nederlandse Taalunie, Taaladvies.net, «Wel of geen spaties voor en na leestekens en symbolen (algemeen)» (12 mei 2021): «Voor een gedachtestreepje komt altijd een spatie, en ook erna»; en «Gedachtestreepje»: «Als gedachtestreepje wordt doorgaans het zogeheten halve kastlijntje (–) gebruikt. Het halve kastlijntje is wat langer dan het koppelteken of het afbreekteken (-)» taaladvies.net

    Onderbouwt dash.parenthetical = «en-spaced»: een spatie aan weerszijden en een streepje ter lengte van een halve kastlijn, dus U+2013 en niet U+2014. AFLEIDING, als zodanig gemarkeerd: de Taalunie noemt de lengte, niet het codepunt. De toewijzing aan U+2013 steunt op Genootschap Onze Taal, Taalloket, «kort streepje (-) of lang streepje (–)», dat de twee tekens expliciet tegenover elkaar zet en het «hele kastlijntje» (—) als vooral Engels en «in Nederland […] minder gebruikelijk» beschrijft. Rangorde, want de bronnen zijn niet gelijkwaardig: de Taalunie is het officiële taalorgaan, Onze Taal een taalvereniging, en Onze Taal wordt hier alleen gebruikt om vast te stellen welk van twee met name genoemde tekens de term van de Taalunie aanduidt. Geraadpleegd op 18.09.2026.

hyphen

  • Nederlandse Taalunie, Taaladvies.net, «Auto-ongeluk (afbreking)» (12 mei 2021): «Bij woordafbreking valt een koppelteken weg als wordt afgebroken op de plaats waar dat koppelteken in de grondvorm staat» taaladvies.net

    Onderbouwt drie lege lijsten. Het Nederlands staat afbreking op het koppelteken niet alleen toe, het laat het koppelteken daarbij wégvallen — het omgekeerde van een claim op U+2011. Geen geraadpleegde bron omschrijft een gesloten klasse vormen waarvan het koppelteken een regelovergang moet weerstaan, en dat is het enige wat deze regel leest. Geraadpleegd op 18.09.2026.

quotes

  • Nederlandse Taalunie, Taaladvies.net, «Dubbele of enkele aanhalingstekens bij een citaat»: «Er zijn geen vaste regels voor het gebruik van enkele of dubbele aanhalingstekens. Traditioneel werd aangeraden om bij letterlijk citeren dubbele aanhalingstekens te gebruiken […] We raden aan om consequent voor één systeem te kiezen», met voorbeeld (4a): «De koning zei: [U+201C]Ik herinner me nog dat iemand [U+2018]Vive la république[U+2019] riep[U+201D]» taaladvies.net

    BESLISSING VAN DE OPERATOR, 18.09.2026, en uitdrukkelijk geen citaat: de Taalunie WEIGERT te rangschikken — «Er zijn geen vaste regels» — en noemt drie mogelijke nestingen zonder er één te verkiezen. Het schema kent maar één paar per niveau, dus er moet gekozen worden. Gekozen is variant (4a) van de Taalunie zelf: U+201C/U+201D als eerste niveau, U+2018/U+2019 als tweede. Twee gronden, allebei genoemd omdat geen van beide een voorschrift is: het is de vorm die de Taalunie «traditioneel» aan het letterlijke citaat verbindt, en het is de vorm die elk ander locale in dit project al heeft. TEGENGESTELDE AANWIJZING, niet verzwegen: «Aanhalingstekens (algemeen)» merkt op dat «Enkele aanhalingstekens […] het meest gebruikt» worden — een waarneming over frequentie, geen voorschrift, maar hij wijst de andere kant op. GECONTROLEERD, want het was het enige technische argument dat de keuze had kunnen beslissen: de vrees dat U+2019 als sluitteken zou botsen met de Nederlandse apostrof (auto's, 's-Hertogenbosch, A4'tje) blijkt ONGEGROND — beide varianten geven op die zinnen hetzelfde, correcte resultaat. De keuze berust dus op de bron en op eenvormigheid, niet op een motoreigenschap. innerSpace = «none»: geen geraadpleegde bron vraagt om een spatie binnen de tekens. Geraadpleegd op 18.09.2026.

  • Nederlandse Taalunie, Taaladvies.net, « Wat-ie wil / wat ie wil » (12 mei 2021) : « Gereduceerde vormen van persoonlijke voornaamwoorden komen voor in de gesproken taal. Bij de weergave daarvan in schrift gebruiken we bij vormen als 'k, '(e)m, 'r, d'r en '(e)t een weglatingsteken of apostrof. » taaladvies.net

    Attests five entries of quotes.elisionClitics.after: k ('k), m and em ('(e)m — the Taalunie's own notation covers both 'm and 'em), r ('r), and t with et ('(e)t). These are word-initial omissions: the mark stands at the start of the reduced form, so the letter run is on the mark's right, which is why they belong in after and not before even though the fragment attaches forward rather than back — both lists are positional, per quotes.md §2. before is empty: m'n, z'n, d'r, zo'n and foto's all have a letter on each side of the mark, so the medial-elision veto already declines them and any before entry would be evidenced-inert; keeping it empty also avoids having to adjudicate m, which occurs on both sides of the mark across the language ('m = hem, m'n = mijn). 'n (een) is not listed — it was not attested by a qualifying Taalunie page in this pass. quotes.md §3.2's span-boundary elision veto (spec 1.4.0) reads this list only when the mark's other literal neighbour is modes.md §3.2's inline span boundary, so every entry is matched against the maximal LETTER run on one side of the mark and nothing else. The list is decline-only: the worst it can do is refuse a pairing quotes would otherwise have formed.

  • Nederlandse Taalunie, Taaladvies.net, « 'S avonds / 's Avonds (hoofdletter?) » (12 mei 2021, op grond van de Woordenlijst 2015) : « Als de zin met een apostrof begint, krijgt het eerstvolgende volledige woord in de zin de hoofdletter », met de voorbeelden « 's Avonds werkt John in een café », « 't Was een mooie dag » en « 'ns Kijken hoe we dat doen » taaladvies.net

    Attests s ('s avonds, from the older genitive des avonds), t ('t was) and ns ('ns kijken). The same entries cover 's-Gravenhage and 's-Hertogenbosch, where a hyphen rather than a space follows the letter run.

nbsp

  • Nederlandse Taalunie, Taaladvies.net, «Wel of geen spaties voor en na leestekens en symbolen (algemeen)» (12 mei 2021): «Vóór een punt, een komma, een dubbele punt, een puntkomma, een uitroepteken en een vraagteken komt geen spatie»; «Bij toevallige, niet-conventionele combinaties van een getal en een afgekorte eenheid […] komt er een spatie tussen het getal en de eenheid»; «Tussen een valutateken en het bijbehorende getal staat een spatie, tenzij het geheel deel uitmaakt van een samenstelling» — «De vaas kostte € 179,–»; BIPM, The International System of Units (SI), 9th ed., concise summary — uitsluitend voor de samenstelling van de symbolenlijst taaladvies.net

    Drie velden uit één pagina. beforePunctuation en narrowBeforePunctuation leeg: alle zes leestekens worden bij name genoemd en krijgen geen spatie — een ontkenning, geen stilzwijgen. beforeUnits: BIPM levert welke reeksen SI-symbolen zijn, de Taalunie de Nederlandse conventie; eenletterige symbolen blijven weg zoals in fr.json. afterSymbols = [«€», «$»]: LET OP BIJ HET OVERNEMEN VAN fr.json — in het Nederlands gaat het valutateken aan het getal vooraf («€ 179»), in het Frans volgt het erop («2 €»), dus het hoort hier in afterSymbols en niet in beforeUnits. De twee leden zijn die welke het kopje «Valutatekens (€, $)» zelf noemt: een klasse-afleiding over een MET NAME GENOEMDE tweeledige klasse, gemarkeerd naar het voorbeeld van fr.json bij M., MM., Mmes. TOEGESTANE VARIANTEN, vastgelegd: voor het procentteken laat de Taalunie zowel «25 %» als «25%» toe, en bij °C schrijft zij dat er «meestal geen spatie» staat terwijl ISO er één voorschrijft. Dat hoeft niet beslecht te worden: N5 zet alleen een bestaande spatie om en voegt er nooit een in (nbsp.md §3.7). afterShortWords, beforeNumber en beforeWord zijn leeg: deze pagina loopt de leestekens en symbolen één voor één langs en zegt daarover niets, en het Nederlands kent geen tegenhanger van de Poolse sierotka-regel. Geraadpleegd op 18.09.2026.

  • Nederlandse Taalunie, Taaladvies.net, «Prof.( )dr.» (12 mei 2021): «Ja, tussen bijvoorbeeld prof. dr. komt een spatie»; «Alleen als de afgekorte woorden tezamen een afkorting vormen, vervalt de spatie: a.s., a.u.b., m.b.v., n.a.v., z.o.z.»; «In verzorgd zetwerk wordt tussen voorletters en in afkortingen als v.d. bij voorkeur een halve spatie (of dunspatie) geplaatst» taaladvies.net

    Onderbouwt abbreviations = [«prof. dr.»] — de enige Nederlandse afkorting met een interne U+0020 die letterlijk is aangetroffen. De gesloten vormen (a.s., a.u.b.) hebben geen interne spatie, zodat N4 daar niets te bevorderen heeft; dáárom telt de lijst één ingang en is hij niet leeg. initialBinding = «none»: de enige Nederlandse uitspraak hierover vraagt om een DUNNE spatie, een waarde die het schema niet kent terwijl N7 U+00A0 invoegt — en, belangrijker, geen geraadpleegde bron zegt dat een voorletter niet door een regelovergang van de achternaam gescheiden mag worden, en dát is wat N7 werkelijk doet. Geraadpleegd op 18.09.2026.

Already using polytypo? Add our badge

Two lines: a script tag and a span. No per-embed network call. Pick a language and a theme, then copy the code into your footer or credits. Embedding notes cover Content Security Policy. Sites with the badge are listed on Sites using polytypo.

<script async src="https://polytypo.dev/badge.js"></script>
<span data-polytypo-lang="en" data-polytypo-theme="light"></span>

Search runs in your browser. Nothing is sent anywhere.