vehicles 0.6.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -0
  3. data/CHANGELOG.md +274 -0
  4. data/README.md +55 -10
  5. data/data/PROVENANCE-vehicles.md +12 -0
  6. data/data/plates/PROVENANCE.md +5 -4
  7. data/data/plates/_decode/at-districts.yml +287 -0
  8. data/data/plates/_decode/ch-cantons.yml +110 -0
  9. data/data/plates/_decode/cn-issuing-offices.yml +463 -0
  10. data/data/plates/_decode/cn-provinces.yml +614 -0
  11. data/data/plates/_decode/cz-kraj.yml +159 -0
  12. data/data/plates/_decode/dk-serial-blocks.yml +327 -0
  13. data/data/plates/_decode/fr-departements.yml +191 -0
  14. data/data/plates/_decode/gb-age-identifiers.yml +170 -0
  15. data/data/plates/_decode/gb-memory-tags.yml +202 -0
  16. data/data/plates/_decode/gr-prefectures.yml +1408 -0
  17. data/data/plates/_decode/hr-cities.yml +315 -0
  18. data/data/plates/_decode/ie-counties.yml +227 -0
  19. data/data/plates/_decode/in-state-codes.yml +169 -0
  20. data/data/plates/_decode/is-districts-1938.yml +116 -0
  21. data/data/plates/_decode/it-provinces.yml +348 -0
  22. data/data/plates/_decode/jp-office-marks.yml +960 -0
  23. data/data/plates/_decode/jp-use-marks.yml +205 -0
  24. data/data/plates/_decode/kr-authority-marks.yml +146 -0
  25. data/data/plates/_decode/kr-use-syllables.yml +194 -0
  26. data/data/plates/_decode/lu-series-order.yml +638 -0
  27. data/data/plates/_decode/mx-entity-series.yml +380 -0
  28. data/data/plates/_decode/my-index-marks.yml +271 -0
  29. data/data/plates/_decode/no-counties-1913.yml +148 -0
  30. data/data/plates/_decode/no-districts.yml +901 -0
  31. data/data/plates/_decode/pl-powiats.yml +567 -0
  32. data/data/plates/_decode/pt-trailer-services.yml +96 -0
  33. data/data/plates/_decode/ro-counties.yml +213 -0
  34. data/data/plates/_decode/se-diplomatic.yml +220 -0
  35. data/data/plates/_decode/si-regions.yml +123 -0
  36. data/data/plates/_decode/sk-districts.yml +314 -0
  37. data/data/plates/_decode/th-registration-elements.yml +208 -0
  38. data/data/plates/_decode/ua-regions.yml +393 -0
  39. data/data/plates/_decode/za-licence-marks.yml +215 -0
  40. data/data/plates/_meta/classes.yml +1 -0
  41. data/data/plates/_meta/separators.yml +102 -0
  42. data/data/plates/ad.yml +961 -0
  43. data/data/plates/ar.yml +762 -0
  44. data/data/plates/at.yml +1424 -0
  45. data/data/plates/au-act.yml +472 -0
  46. data/data/plates/au-nsw.yml +282 -0
  47. data/data/plates/au-nt.yml +431 -0
  48. data/data/plates/au-qld.yml +272 -0
  49. data/data/plates/au-sa.yml +248 -0
  50. data/data/plates/au-tas.yml +302 -0
  51. data/data/plates/au-vic.yml +215 -0
  52. data/data/plates/au-wa.yml +309 -0
  53. data/data/plates/be.yml +1840 -0
  54. data/data/plates/br.yml +1152 -0
  55. data/data/plates/ca-ab.yml +430 -0
  56. data/data/plates/ca-bc.yml +697 -0
  57. data/data/plates/ca-mb.yml +499 -0
  58. data/data/plates/ca-nb.yml +537 -0
  59. data/data/plates/ca-nl.yml +743 -0
  60. data/data/plates/ca-ns.yml +808 -0
  61. data/data/plates/ca-nt.yml +610 -0
  62. data/data/plates/ca-nu.yml +280 -0
  63. data/data/plates/ca-on.yml +881 -0
  64. data/data/plates/ca-pe.yml +592 -0
  65. data/data/plates/ca-qc.yml +1036 -0
  66. data/data/plates/ca-sk.yml +256 -0
  67. data/data/plates/ca-yt.yml +656 -0
  68. data/data/plates/ch.yml +1273 -0
  69. data/data/plates/cn.yml +1431 -0
  70. data/data/plates/cy.yml +688 -0
  71. data/data/plates/cz.yml +1179 -0
  72. data/data/plates/de.yml +553 -118
  73. data/data/plates/dk.yml +1647 -0
  74. data/data/plates/ee.yml +1275 -0
  75. data/data/plates/es.yml +228 -32
  76. data/data/plates/fi.yml +1271 -0
  77. data/data/plates/fr.yml +1265 -0
  78. data/data/plates/gb.yml +1188 -0
  79. data/data/plates/gr.yml +721 -0
  80. data/data/plates/hr.yml +860 -0
  81. data/data/plates/hu.yml +959 -0
  82. data/data/plates/ie.yml +775 -0
  83. data/data/plates/in.yml +1172 -0
  84. data/data/plates/is.yml +667 -0
  85. data/data/plates/it.yml +1317 -0
  86. data/data/plates/jp.yml +3650 -0
  87. data/data/plates/kr.yml +1375 -0
  88. data/data/plates/li.yml +1010 -0
  89. data/data/plates/lt.yml +879 -0
  90. data/data/plates/lu.yml +842 -0
  91. data/data/plates/lv.yml +924 -0
  92. data/data/plates/mc.yml +1024 -0
  93. data/data/plates/mt.yml +854 -0
  94. data/data/plates/mx.yml +1372 -0
  95. data/data/plates/my.yml +685 -0
  96. data/data/plates/nl.yml +44 -0
  97. data/data/plates/no.yml +1018 -0
  98. data/data/plates/nz.yml +1699 -0
  99. data/data/plates/pl.yml +1296 -0
  100. data/data/plates/pt.yml +847 -0
  101. data/data/plates/ro.yml +785 -0
  102. data/data/plates/se.yml +1091 -0
  103. data/data/plates/si.yml +1105 -0
  104. data/data/plates/sk.yml +1439 -0
  105. data/data/plates/sm.yml +1119 -0
  106. data/data/plates/th.yml +1150 -0
  107. data/data/plates/ua.yml +1672 -0
  108. data/data/plates/us-ak.yml +763 -0
  109. data/data/plates/us-al.yml +457 -0
  110. data/data/plates/us-ar.yml +427 -0
  111. data/data/plates/us-as.yml +454 -0
  112. data/data/plates/us-az.yml +430 -0
  113. data/data/plates/us-ca.yml +892 -0
  114. data/data/plates/us-co.yml +452 -0
  115. data/data/plates/us-ct.yml +427 -0
  116. data/data/plates/us-dc.yml +614 -0
  117. data/data/plates/us-de.yml +551 -0
  118. data/data/plates/us-fl.yml +319 -96
  119. data/data/plates/us-ga.yml +644 -0
  120. data/data/plates/us-gu.yml +658 -0
  121. data/data/plates/us-hi.yml +585 -0
  122. data/data/plates/us-ia.yml +438 -0
  123. data/data/plates/us-id.yml +531 -0
  124. data/data/plates/us-il.yml +516 -0
  125. data/data/plates/us-in.yml +324 -0
  126. data/data/plates/us-ks.yml +351 -0
  127. data/data/plates/us-ky.yml +770 -0
  128. data/data/plates/us-la.yml +568 -0
  129. data/data/plates/us-ma.yml +379 -0
  130. data/data/plates/us-md.yml +536 -0
  131. data/data/plates/us-me.yml +445 -0
  132. data/data/plates/us-mi.yml +408 -0
  133. data/data/plates/us-mn.yml +411 -0
  134. data/data/plates/us-mo.yml +356 -0
  135. data/data/plates/us-mp.yml +402 -0
  136. data/data/plates/us-ms.yml +432 -0
  137. data/data/plates/us-mt.yml +619 -0
  138. data/data/plates/us-nc.yml +602 -0
  139. data/data/plates/us-nd.yml +419 -0
  140. data/data/plates/us-ne.yml +483 -0
  141. data/data/plates/us-nh.yml +394 -0
  142. data/data/plates/us-nj.yml +547 -0
  143. data/data/plates/us-nm.yml +574 -0
  144. data/data/plates/us-nv.yml +655 -0
  145. data/data/plates/us-ny.yml +592 -0
  146. data/data/plates/us-oh.yml +404 -0
  147. data/data/plates/us-ok.yml +513 -0
  148. data/data/plates/us-or.yml +392 -0
  149. data/data/plates/us-pa.yml +506 -0
  150. data/data/plates/us-pr.yml +507 -0
  151. data/data/plates/us-ri.yml +445 -0
  152. data/data/plates/us-sc.yml +605 -0
  153. data/data/plates/us-sd.yml +428 -0
  154. data/data/plates/us-tn.yml +471 -0
  155. data/data/plates/us-tx.yml +535 -0
  156. data/data/plates/us-ut.yml +384 -0
  157. data/data/plates/us-va.yml +567 -0
  158. data/data/plates/us-vi.yml +489 -0
  159. data/data/plates/us-vt.yml +458 -0
  160. data/data/plates/us-wa.yml +484 -0
  161. data/data/plates/us-wi.yml +509 -0
  162. data/data/plates/us-wv.yml +446 -0
  163. data/data/plates/us-wy.yml +523 -0
  164. data/data/plates/va.yml +604 -0
  165. data/data/plates/za.yml +1141 -0
  166. data/data/vehicles.json +160653 -105090
  167. data/lib/vehicles/configuration.rb +17 -3
  168. data/lib/vehicles/dataset.rb +73 -18
  169. data/lib/vehicles/fuzzy.rb +115 -0
  170. data/lib/vehicles/http.rb +48 -0
  171. data/lib/vehicles/make.rb +36 -6
  172. data/lib/vehicles/mcp_server.rb +5 -5
  173. data/lib/vehicles/model.rb +21 -2
  174. data/lib/vehicles/plates/series.rb +172 -18
  175. data/lib/vehicles/plates/template_fill.rb +188 -0
  176. data/lib/vehicles/plates/templates.rb +162 -0
  177. data/lib/vehicles/plates.rb +12 -0
  178. data/lib/vehicles/providers/hosted_provider.rb +28 -55
  179. data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
  180. data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
  181. data/lib/vehicles/version.rb +1 -1
  182. data/lib/vehicles.rb +32 -16
  183. data/rakelib/data_refresh.rake +109 -0
  184. data/rakelib/plates_refresh.rake +29 -0
  185. data/sig/vehicles.rbs +18 -0
  186. metadata +164 -2
@@ -0,0 +1,1840 @@
1
+ # plates/be.yml — Belgium (PRD-PLATES gate L1, EU/EEA slice).
2
+ #
3
+ # EVERY format, colour, dimension and class claim in this file is taken from
4
+ # one of two consolidated Belgian instruments, fetched from the federal
5
+ # Justel database on 2026-08-02:
6
+ #
7
+ # * ARRETE ROYAL du 20 juillet 2001 relatif a l'immatriculation de vehicules
8
+ # / KONINKLIJK BESLUIT van 20 juli 2001 betreffende de inschrijving van
9
+ # voertuigen — M.B./B.S. 08.08.2001 p. 27022, NUMAC 2001014153,
10
+ # Justel dossier 2001-07-20/35, in force 01-10-2001, consolidated to
11
+ # 22-07-2025. Its art. 38 abrogated the arrete royal du 31 decembre 1953
12
+ # portant reglementation de l'immatriculation des vehicules a moteur et
13
+ # des remorques, which had governed Belgian registration for 48 years.
14
+ # THE FRAME: who gets which CATEGORY of plate, and who owns the number.
15
+ # * ARRETE MINISTERIEL du 23 juillet 2001 relatif a l'immatriculation de
16
+ # vehicules — M.B./B.S. 08.08.2001 p. 27048, NUMAC 2001014154,
17
+ # Justel dossier 2001-07-23/30, in force 01-10-2001, consolidated to
18
+ # 22-07-2025. THE SPEC: dimensions, colours (as RAL codes), inscriptions.
19
+ # Art. 21 of the arrete royal is the delegation that makes it so:
20
+ # "Le ministre determine les dimensions, la forme, la couleur,
21
+ # l'inscription et le graphisme des marques d'immatriculation et des
22
+ # reproductions ainsi que les conditions techniques auxquelles les
23
+ # reproductions doivent repondre."
24
+ #
25
+ # THE FIVE STRUCTURAL FACTS THAT SHAPE THIS FILE
26
+ #
27
+ # 1. THE PLATE BELONGS TO THE PERSON, NOT THE CAR. This is the single most
28
+ # distinctive fact about Belgian registration and it is why this file
29
+ # carries `binding: owner` at the jurisdiction level. Art. 22 § 2 of the
30
+ # arrete royal, verbatim: "Pour chaque nouvelle immatriculation, la
31
+ # direction responsable pour l'immatriculation des vehicules ... delivre
32
+ # une nouvelle marque d'immatriculation, A MOINS QUE LE DEMANDEUR N'AIT
33
+ # EXPRIME DANS SA DEMANDE LE SOUHAIT DE METTRE LA MARQUE D'IMMATRICULATION
34
+ # ... D'UN AUTRE VEHICULE DEJA IMMATRICULE A SON NOM, SUR LE VEHICULE QUI
35
+ # EST L'OBJET DE LA NOUVELLE IMMATRICULATION". Art. 25 § 1 goes further:
36
+ # the number may be transferred to the holder's spouse, legal cohabitant
37
+ # or children, and (since 01-08-2025) on death to the surviving spouse,
38
+ # cohabitant, a child or a first-degree parent in the direct line. Art. 22
39
+ # § 2's keep-your-number rule was INSERTED by the arrete royal of
40
+ # 6 November 2010 (in force 15-11-2010); the family-transfer rule in
41
+ # art. 25 is in the 2001 text as originally published. A vehicle-keyed
42
+ # consumer must not join on a Belgian plate number.
43
+ #
44
+ # 2. THERE IS ONLY ONE OFFICIAL PLATE, AND IT IS THE REAR ONE. Art. 1, 20°
45
+ # defines the "marque d'immatriculation" as "une plaque d'immatriculation
46
+ # officielle delivree par la Direction Immatriculation des Vehicules";
47
+ # art. 1, 22° defines a "reproduction" as "une reproduction de la marque
48
+ # d'immatriculation, SANS SCEAU EN RELIEF"; and art. 30 provides that "une
49
+ # reproduction de la marque d'immatriculation est fixee au milieu ou sur le
50
+ # cote gauche de la face anterieure d'un vehicule a moteur". So the front
51
+ # plate is legally a copy, made by a certified private manufacturer
52
+ # (art. 24 of the arrete ministeriel, § 4-§ 8), while the rear plate is
53
+ # state property carrying an embossed oval "CV" seal. `rear_differs: false`
54
+ # is recorded because the INSCRIPTION is identical; the legal status is not.
55
+ #
56
+ # 3. THE INDEX IS THE WHOLE PARSING STORY. Art. 4 § 1, 1° of the arrete
57
+ # ministeriel, verbatim: "s'il s'agit de la marque d'immatriculation
58
+ # rectangulaire, d'une LETTRE OU D'UN CHIFFRE (INDEX) suivi d'un tiret de
59
+ # separation situe sur la ligne mediane horizontale de la marque
60
+ # d'immatriculation et d'une combinaison de soit trois lettres suivies de
61
+ # trois chiffres ou soit trois chiffres suivis de trois lettres." The index
62
+ # is what tells car from trailer from taxi from oldtimer from moped from
63
+ # trade plate. Belgian plates encode NO geography whatsoever — every series
64
+ # below carries `region_encoding: none`, and that is a sourced negative,
65
+ # not an omission: nothing in either instrument assigns any character to a
66
+ # province, commune or region.
67
+ # The same paragraph carries the exhaustion rule, which no other EU
68
+ # jurisdiction in this dataset has: "En cas d'epuisement de ces series, la
69
+ # lettre ou le chiffre (index) est PLACE(E) DERRIERE". That future shape is
70
+ # carried in `regex_statutory`, never in `regex`, because it is not issued.
71
+ #
72
+ # 4. THREE GENERATIONS, AND THIS FILE MODELS ALL THREE.
73
+ # G1 01-10-2001 -> 14-11-2010 national format. 340 x 110 mm, red on
74
+ # white, NO European band on ordinary car plates. Belgium was the
75
+ # last EU-15 state to put the euroband on its ordinary plate.
76
+ # G2 15-11-2010 -> 31-12-2020 European format. 520 x 110 mm (or
77
+ # 340 x 210 mm square), euroband, ruby red RAL 3003, and a DIGIT
78
+ # index on every category — cars, motorcycles, trade plates alike.
79
+ # G3 01-01-2021 -> open the arrete ministeriel of 15 December
80
+ # 2019 (in force 01-01-2021) replaced articles 1-25 wholesale and
81
+ # moved every non-ordinary category onto its own LETTER index
82
+ # (O, Q, T, M, S, G, U, V, Y, Z, W, X). The arrete ministeriel of
83
+ # 21 October 2022 (in force 01-01-2023) then re-cut article 4 and
84
+ # re-stated the oldtimer rule in age terms.
85
+ # The ordinary passenger series is CONTINUOUS across G2 and G3 (digit index,
86
+ # unchanged), so it is one series here with period.start 2010. Everything
87
+ # else gets one entry per generation.
88
+ #
89
+ # 5. PERIOD CLAIMS ARE INSTRUMENT-DATED, AND THE 2010 DATE IS A REAL ONE.
90
+ # Two independent primary confirmations of 15 November 2010:
91
+ # arrete royal 6 November 2010, art. 19: "Le present arrete entre en
92
+ # vigueur le 15 novembre 2010."
93
+ # arrete ministeriel 8 November 2010, art. 16: "Le present arrete entre
94
+ # en vigueur le 15 novembre 2010."
95
+ # Every OTHER start year in this file is likewise the in-force date of the
96
+ # instrument that states the rule, and carries `period_evidence`. The
97
+ # pre-2001 history — Belgium's three-letters-three-digits plate is
98
+ # universally dated to 1973 on the enthusiast web — is NOT asserted here:
99
+ # the arrete ministeriel of 30 August 1967 that the 2001 instrument
100
+ # replaced is not carried in Justel's consolidated database (probed,
101
+ # empty), so 1973 stays FOLKLORE until a primary lands. ONE LEAD IS PINNED
102
+ # FOR THE NEXT PASS, and it is a good one: art. 38 of the arrete royal of
103
+ # 20 July 2001 lists, by date, every decree that amended the 1953
104
+ # registration decree, and the list includes an "arrete royal du
105
+ # 21 DECEMBRE 1973". That is the most likely home of the format the web
106
+ # dates to 1973 — but it has not been read, so nothing is claimed from it.
107
+ # Art. 40 § 1 of the same decree gives one hard pre-2001 fact that IS
108
+ # sourced: plates issued under the 1953 decree stayed valid "a l'exception
109
+ # des marques d'immatriculation 'CD' avec un numero d'immatriculation
110
+ # constitue des lettres 'CD' suivies de QUATRE CHIFFRES" — so the
111
+ # pre-2001 Belgian diplomatic plate was CD + four digits, and it was
112
+ # withdrawn rather than grandfathered.
113
+ #
114
+ # REGEX POLICY (as in plates/de.yml and plates/nl.yml): `format.regex` is the
115
+ # lint-round-trippable form; `format.regex_strict` carries the tighter sourced
116
+ # alphabet the round-trip forbids `regex` from expressing (the mandated first
117
+ # letter of a letter group); `format.regex_statutory` carries the wider legal
118
+ # bound where the arrete ministeriel permits shapes DIV does not issue (the
119
+ # digits-first ordering, the letter index on the ordinary series, and the
120
+ # index-at-the-end exhaustion form).
121
+ # TWO-LINE PLATES: motorcycle (210 x 140 mm), moped (100 x 120 mm) and the
122
+ # square 340 x 210 mm car plate stack their groups with NO printed glyph
123
+ # between them — art. 4 § 1, 2° says the groups together follow the
124
+ # rectangular combinations "SANS TIRET DE SEPARATION". Those series therefore
125
+ # spell that position as the separator-only class `[- ]` sanctioned by
126
+ # PRD-PLATES § 2.8, exactly as es-consular-cc-1999 does, while `pattern` shows
127
+ # the canonical printed hyphen.
128
+ jurisdiction: be
129
+ authority:
130
+ name: SPF Mobilite et Transports — Direction Immatriculation des Vehicules (DIV) / FOD Mobiliteit en Vervoer — Directie Inschrijvingen van Voertuigen
131
+ url: "https://mobilit.belgium.be/fr/route/immatriculer"
132
+ binding: owner
133
+ instrument:
134
+ royal_decree:
135
+ citation: "Arrete royal du 20 juillet 2001 relatif a l'immatriculation de vehicules (M.B. 08.08.2001 p. 27022), Justel 2001-07-20/35, NUMAC 2001014153, en vigueur 01-10-2001"
136
+ promulgation: "2001-07-20"
137
+ publication: "2001-08-08"
138
+ in_force: "2001-10-01"
139
+ consolidated_to: "2025-07-22"
140
+ replaces: "Arrete royal du 31 decembre 1953 portant reglementation de l'immatriculation des vehicules a moteur et des remorques, abroge par l'art. 38"
141
+ eli: "https://www.ejustice.just.fgov.be/eli/arrete/2001/07/20/2001014153/justel"
142
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # consolidated Justel text: art. 1 definitions, art. 20 plate categories, art. 21 delegation to the minister, art. 22 the keep-your-number rule, art. 25 family transfer, arts. 29-31 placement"
143
+ ministerial_decree:
144
+ citation: "Arrete ministeriel du 23 juillet 2001 relatif a l'immatriculation de vehicules (M.B. 08.08.2001 p. 27048), Justel 2001-07-23/30, NUMAC 2001014154, en vigueur 01-10-2001"
145
+ promulgation: "2001-07-23"
146
+ publication: "2001-08-08"
147
+ in_force: "2001-10-01"
148
+ consolidated_to: "2025-07-22"
149
+ replaces: "Arrete ministeriel du 30 aout 1967 determinant le modele des marques et des certificats d'immatriculation (Justel 1967-08-30/04 — NO CONSOLIDATED TEXT IN JUSTEL; probed 2026-08-02, empty)"
150
+ eli: "https://www.ejustice.just.fgov.be/eli/arrete/2001/07/23/2001014154/justel"
151
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # consolidated Justel text: chapitre III cars and trailers, chapitre IV motorcycles, chapitre V mopeds and light quadricycles, chapitre VI reproductions"
152
+ amendments_that_matter:
153
+ - citation: "Arrete royal du 6 novembre 2010 modifiant l'arrete royal du 20 juillet 2001, Justel 2010-11-06/03"
154
+ in_force: "2010-11-15"
155
+ effect: "created the European-format regime on the arrete royal side: art. 21 delegation rewritten, art. 22 keep-your-number rule inserted, arts. 29-31 placement rewritten"
156
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110603&table_name=loi # art. 19: 'Le present arrete entre en vigueur le 15 novembre 2010.'"
157
+ - citation: "Arrete ministeriel du 8 novembre 2010 modifiant l'arrete ministeriel du 23 juillet 2001, Justel 2010-11-08/01 (M.B. 12.11.2010)"
158
+ in_force: "2010-11-15"
159
+ effect: "THE EUROPEAN-FORMAT INSTRUMENT. Replaced arts. 3-16: 520 x 110 / 340 x 210 mm, euroband, ruby red RAL 3003, the digit (index) on every category, road red RAL 3020 for temporary plates, mint green RAL 6029 for trade plates; abrogated the EUR and EUROCONTROL plates"
160
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # art. 16: 'Le present arrete entre en vigueur le 15 novembre 2010.' Annexes 1-3 are IMAGES, not reproduced in Justel (M.B. 12-11-2010 p. 70960-70980)"
161
+ - citation: "Arrete ministeriel du 23 mars 2014 modifiant l'arrete ministeriel du 23 juillet 2001, Justel 2014-03-23/02"
162
+ in_force: "2014-03-31"
163
+ effect: "inserted chapitre IVbis (arts. 15/1-15/5): the MOPED and light-quadricycle plate, index 'S'"
164
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2014032302&table_name=loi # art. 2: 'Le present arrete entre en vigueur le 31 mars 2014.'"
165
+ - citation: "Arrete ministeriel du 28 mars 2014 modifiant l'arrete ministeriel du 23 juillet 2001, Justel 2014-03-28/07"
166
+ in_force: "2014-03-31"
167
+ effect: "inserted art. 4 § 1/1 (the PERSONALISED inscription grammar), moved the oldtimer and trailer rules to the first letter of the LETTER GROUP ('O', 'Q'), gave the motorcycle letter group its 'M', added the second hyphen to the CD plate, and renamed the two sizes 'rectangulaire' and 'carree'"
168
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2014032807&table_name=loi # art. 9: 'Le present arrete entre en vigueur le 31 mars 2014.'"
169
+ - citation: "Arrete ministeriel du 15 decembre 2019 modifiant l'arrete ministeriel du 23 juillet 2001, Justel 2019-12-15/19 (M.B. 15.05.2020)"
170
+ in_force: "2021-01-01"
171
+ effect: "THE LETTER-INDEX INSTRUMENT. Replaced arts. 1-25: every non-ordinary category moved onto its own letter index (O oldtimer, Q trailer, T taxi, M motorcycle, S moped, G agricultural, U national, V/Y/Z trade, W temporary stay, X export); trade plates changed from mint green RAL 6029 to moss green RAL 6005; the moped plate shrank from 210 x 140 to 100 x 120 mm"
172
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # art. 5: 'Le present arrete entre en vigueur le 1er janvier 2021.' (art. 9, the G plate, and art. 13 § 4 entered into force 01-10-2020 per the Justel footnotes)"
173
+ - citation: "Arrete ministeriel du 21 octobre 2022 modifiant l'arrete ministeriel du 23 juillet 2001, Justel 2022-10-21/06 (M.B. 22.12.2022)"
174
+ in_force: "2023-01-01"
175
+ effect: "replaced art. 4 in full: renumbered §§ 2-5, and restated the oldtimer criterion in AGE terms (more than thirty years, with a twenty-five-to-thirty retention rule for the same holder) instead of by cross-reference to the technical-conditions decree"
176
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2022102106&table_name=loi # the replacement text of art. 4 in full"
177
+
178
+ # ---------------------------------------------------------------------------
179
+ # Jurisdiction-wide facts, cited once and referenced per series.
180
+ # ---------------------------------------------------------------------------
181
+ common:
182
+ dimensions:
183
+ rectangular: { w: 520, h: 110, unit: mm, name: "marque d'immatriculation rectangulaire" }
184
+ square: { w: 340, h: 210, unit: mm, name: "marque d'immatriculation carree" }
185
+ motorcycle: { w: 210, h: 140, unit: mm, name: "marque d'immatriculation moto" }
186
+ moped: { w: 100, h: 120, unit: mm, name: "plaque format cyclo" }
187
+ border_mm: 5
188
+ relief_mm: 1
189
+ note: >-
190
+ Art. 3 § 2 of the arrete ministeriel names only the two car sizes and adds
191
+ that "Le choix entre les deux formats ... doit correspondre avec
192
+ l'emplacement prevu pour le montage de la marque d'immatriculation A
193
+ L'ARRIERE du vehicule" — the size follows the rear mounting recess, not
194
+ the owner's taste. Art. 3 § 5 lets a car use the 210 x 140 motorcycle size
195
+ by prior authorisation where the manufacturer's recess is too small for
196
+ either car size. Corners are rounded; the 5 mm border ("liseret") and the
197
+ inscription stand at least 1 mm proud of the ground.
198
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 3 § 2 and § 5 (car/trailer), art. 11 § 2 (motorcycle 210 x 140), art. 18 § 2 (moped 100 x 120)"
199
+ corroboration: "https://mobilit.belgium.be/fr/route/immatriculer-et-radier/plaques-et-certificats-dimmatriculation/format-de-plaque # DIV's own page names the same four: 'Plaque rectangulaire (52 x 11 cm)', 'Plaque de format carre (34 x 21 cm)', 'Plaque de format moto (21x14 cm)', 'Plaque format cyclo (10x12 cm)'"
200
+ colours:
201
+ ordinary: "rouge rubis (RAL 3003) inscription and border on a white retroreflective ground — art. 4 § 1, art. 12 § 1, art. 19 § 1"
202
+ temporary: "fond rouge signalisation (RAL 3020), white inscription and border — art. 5 § 1, art. 13 § 1, art. 21 § 1"
203
+ agricultural: "fond rouge (RAL 3020), white inscription and border — art. 9 § 3"
204
+ trade_and_national: "vert mousse (RAL 6005) inscription and border on white — art. 8 § 1, art. 10 § 1, art. 16 § 1, art. 17 § 1, art. 22 § 1"
205
+ superseded: "vert menthe (RAL 6029) was the trade-plate colour under the arrete ministeriel of 8 November 2010, replaced by RAL 6005 on 01-01-2021"
206
+ hex_caveat: >-
207
+ THE STATUTE'S COLOUR CLAIM IS A RAL CODE, NOT AN sRGB VALUE. RAL Classic
208
+ publishes no normative sRGB mapping, so every hex in this file for a
209
+ RAL-named colour is a CONVENTIONAL CONVERSION carried for rendering only:
210
+ RAL 3003 -> #9B111E, RAL 3020 -> #CC0605, RAL 6005 -> #114232,
211
+ RAL 6029 -> #007243. The authoritative value is the RAL code, which each
212
+ series also carries in `*_spec`. Consumers doing colour-critical work must
213
+ read the RAL code, not the hex.
214
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # the RAL codes, verbatim, per article"
215
+ euro_band:
216
+ side: left
217
+ content: eu-stars+B
218
+ geometry_rectangular: "blue rectangular zone against the left and bottom border, height 98-100 mm, width 40-50 mm"
219
+ geometry_square: "blue rectangular zone 2-5 mm from the left and bottom border, height 100 mm, width 40-50 mm"
220
+ geometry_motorcycle: "blue rectangular zone 1-3 mm from the left and bottom border, height 62 mm, width 31 mm"
221
+ geometry_moped: "blue rectangular zone 4-5 mm from the left border and 7-9 mm from the bottom border, height 35 mm, width 18 mm"
222
+ composition: >-
223
+ Art. 3 § 3, verbatim: the blue zone "presente vers le bas une lettre 'B'
224
+ blanche comme signe distinctif du pays, surmontee d'un cercle de douze
225
+ etoiles jaunes a cinq branches. Le fond, les etoiles et le signe
226
+ distinctif du pays sont retro-reflechissants." Belgium gives the band's
227
+ MILLIMETRES but, like every other jurisdiction surveyed, gives no colour
228
+ value for the blue and no star geometry — for the star-wreath ratio the
229
+ only sourced value anywhere in this dataset is DE FZV Anlage 4 Nr. 3.
230
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 3 § 3 (car), art. 11 § 4 (motorcycle), art. 18 § 2 (moped)"
231
+ seal:
232
+ name: "sceau en relief (CV)"
233
+ shape: oval
234
+ content: "the stylised letters 'C' and 'V' (Circulation / Verkeer), in the same colour as the plate's border"
235
+ size_car: { h_min: 21, h_max: 22, w_min: 13, w_max: 14, unit: mm }
236
+ size_small: { h_min: 16, h_max: 17, w_min: 10, w_max: 11, unit: mm }
237
+ note: >-
238
+ The embossed CV seal is what makes a plate the OFFICIAL plate: art. 1, 22°
239
+ of the arrete royal defines a reproduction as a copy "sans sceau en relief".
240
+ It is a lettermark, not a coat of arms, so PRD-PLATES § 3's emblem hazard
241
+ does not arise for Belgium — there is no state seal, no provincial arms and
242
+ no artwork on a Belgian plate at all.
243
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 3 § 4, art. 11 § 3, art. 18 § 2"
244
+ font:
245
+ name: null
246
+ statutory_basis: >-
247
+ NO TYPEFACE IS NAMED. Art. 3 § 2, verbatim: "L'inscription se compose de
248
+ caracteres droits, normalises dont la forme et les dimensions sont
249
+ definies a l'annexe 1ere." Annexe 1 (cars and trailers), Annexe 2
250
+ (motorcycles) and Annexe 2bis (mopeds) are DRAWINGS, published as images
251
+ and expressly not reproduced in the Justel consolidation ("Image non
252
+ reprise pour des raisons techniques, voir M.B. du 15-05-2020, p. 34158").
253
+ Belgium is therefore the same case the EU dossier found for the UK, Germany
254
+ and Spain: the legal object is a statutory drawing, not a licensable font
255
+ file, and PRD-PLATES § 6's derive-from-the-drawing rule applies.
256
+ pitch: "art. 24 § 4, 4°: the horizontal distance between the centre of each sign is 50 mm on car reproductions and 39,2 mm on motorcycle reproductions — the only character metric available as TEXT rather than as a drawing"
257
+ pre_2010_metrics: >-
258
+ The 2001 text, before the drawings replaced it, gave the metrics in words
259
+ and they are recorded here because they are the only fully textual Belgian
260
+ character spec: ordinary car plate, characters 70 mm high x 35 mm wide,
261
+ the digit "1" 20 mm wide, the letter "I" 9 mm wide, stroke 9 mm, the
262
+ separating hyphen 12 x 6 mm; trailer and trade plates 75 x 45 mm, "1"
263
+ 25 mm, "I" 11 mm, stroke 11 mm, hyphen 18 x 11 mm; motorcycle plates
264
+ 50 x 30 mm, "1" 17 mm, "I" 7 mm, stroke 7 mm.
265
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 3 § 2, art. 24 § 4, and the ANNEXES note"
266
+ source_2001: "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # the arrete ministeriel AS PUBLISHED in the Moniteur belge of 08-08-2001, carrying the textual character metrics that the 2010 and 2019 amendments replaced with drawings. This is the OFFICIAL as-published body; the same text is mirrored at https://etaamb.openjustice.be/fr/2001014154.html, which is a third-party copy and was used only to LOCATE the NUMAC (etaamb's own banner says it is not the official version)"
267
+ reproduction_spec:
268
+ note: >-
269
+ Art. 24 § 4 (as amended by the arrete royal of 4 July 2025, in force
270
+ 01-08-2025) is unusually specific for a front plate: a single aluminium
271
+ sheet of type EN 1050, EN 1200 or EN 3105 conforming to EN-485, or an
272
+ acrylic sheet at least 3 mm thick; corners rounded to a radius of 10 +/- 2
273
+ mm; a 6 mm hole in each corner with its centre 12 mm from the edges for
274
+ car plates (5 mm at 9 mm for motorcycle plates); class 1 retroreflective
275
+ film laminated over the whole support, bearing a colourless identification
276
+ mark of the film maker and of the plate maker. Type certification is
277
+ granted by the Minister for a renewable period of 10 years.
278
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 24 § 4 and § 6"
279
+ readability:
280
+ note: >-
281
+ Art. 29 of the arrete royal (as amended 20-03-2012): plates "restent
282
+ visibles en tout temps et sont lisibles le jour par temps clair a une
283
+ distance minimum de QUARANTE METRES", reduced to thirty metres for car
284
+ plates in the 210 x 140 motorcycle size and to TWENTY METRES for
285
+ motorcycle plates. Art. 31 § 2 forbids covering a plate "meme pas avec une
286
+ matiere transparente", and art. 31 § 1 forbids drilling extra holes.
287
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arts. 29-31"
288
+ index_allocation_gap:
289
+ note: >-
290
+ WHICH DIGIT INDEX DIV IS CURRENTLY ISSUING IS NOT PUBLISHED. The arrete
291
+ ministeriel fixes the SHAPE (one index character, then three letters and
292
+ three digits) but the allocation order — the widely-repeated "1-... until
293
+ 2016, then 2-..., then 3-..." — is an administrative fact that appears on
294
+ no primary page reached in this pass (DIV's own format page gives only the
295
+ four physical sizes). This file therefore claims NO per-index date and its
296
+ regexes accept any digit index. A verified per-index table would be the
297
+ single highest-value addition to Belgian era inference and is recorded as
298
+ an open gap, not guessed.
299
+ source: "https://mobilit.belgium.be/fr/route/immatriculer-et-radier/plaques-et-certificats-dimmatriculation/format-de-plaque # DIV's format page: sizes only, no index series table (accessed 2026-08-02)"
300
+
301
+ # ---------------------------------------------------------------------------
302
+ # The index vocabulary — small, closed, primary, so inlined per PRD-PLATES
303
+ # § 2.4's "inline table (small)" rule. This is Belgium's answer to Germany's
304
+ # Anlage 2: not geography, but VEHICLE CATEGORY.
305
+ # ---------------------------------------------------------------------------
306
+ region_encoding_tables:
307
+ index_letters_2021:
308
+ source: "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 4 §§ 2-5, art. 5 § 4, art. 8 § 3, art. 9 § 2, art. 10 § 3, art. 12 §§ 2-3, art. 13 § 4, art. 16 § 3, art. 17 § 3, art. 19 §§ 2-3, art. 21 § 4, art. 22 § 3"
309
+ digits: "0-9 — ordinary plates for motor vehicles and their holders (art. 4 § 1); the general run"
310
+ letters:
311
+ CD: "diplomatic and consular corps, missions and international organisations (art. 7, art. 15)"
312
+ G: "agricultural and forestry tractors whose holder claims the fuel-excise exemption; second character is always 'L' (art. 9)"
313
+ M: "motorcycles, motor tricycles and motor quadricycles (art. 12 § 2)"
314
+ O: "oldtimer — a vehicle in circulation more than thirty years (art. 4 § 2); on a motorcycle plate the letter group then starts with 'M', on a moped plate with 'S'"
315
+ Q: "trailers (art. 4 § 3)"
316
+ S: "mopeds and light quadricycles; letter group starts A (class A moped), B (class B moped), P (speed pedelec), U (light quadricycle) (art. 19 § 2)"
317
+ T: "licensed taxi service (letter group starts 'X') or hire with driver (letter group starts 'L') (art. 4 § 4)"
318
+ U: "plaque nationale — twenty-day national-use plate; second letter follows (art. 10 § 3, art. 17 § 3, art. 23 § 3)"
319
+ V: "plaque professionnelle (art. 8 § 3, 3°)"
320
+ W: "short-duration temporary plate for a temporary stay in Belgium; second letter excludes M, Q, S for cars, is 'Q' for trailers, 'M' for motorcycles, 'S' for mopeds (art. 5 § 4, art. 13 § 4, art. 21 § 4)"
321
+ X: "short-duration EXPORT plate; same second-letter scheme as W (art. 5 § 4, art. 13 § 4)"
322
+ Y: "plaque essai — test plate (art. 8 § 3, 1°)"
323
+ Z: "plaque marchand — dealer plate (art. 8 § 3, 2°)"
324
+ A: "supplementary plate for the president of the Chamber, federal ministers, ministers of State, the higher judiciary, provincial governors and named senior officials (arrete royal art. 20 § 2, 2°)"
325
+ E: "supplementary plate for the presidents, members and services of the Community and Regional governments (arrete royal art. 20 § 2, 3°)"
326
+ P: "supplementary plate for members of the federal, regional, Community and Belgian European parliaments (arrete royal art. 20 § 2, 4°)"
327
+ note: >-
328
+ COLLISIONS WORTH FLAGGING. "M", "O", "S" and "Q" appear BOTH as an index
329
+ and as the mandated first letter of a letter group, in different series —
330
+ an oldtimer motorcycle is "O-Mxx-999" and a temporary motorcycle is
331
+ "WM-99-xxx". "P" is simultaneously a supplementary-plate index and the
332
+ first letter of a speed-pedelec letter group. "A", "E" and "P" as indexes
333
+ are followed by only one to three DIGITS, so they never collide with the
334
+ three-letters-three-digits shapes. And note that the supplementary plates
335
+ are ADDITIONAL: art. 20 § 2 requires the vehicle already to carry an
336
+ ordinary or CD plate, and "Le titulaire d'une double immatriculation
337
+ choisit laquelle des deux marques d'immatriculation est apposee sur son
338
+ vehicule."
339
+ reserved_shapes_for_personalised_plates:
340
+ source: "https://mobilit.belgium.be/fr/route/immatriculer/plaque-personnalisee/introduction # DIV's own list of combinations a personalised plate may not take, accessed 2026-08-02, page last updated 16/07/2026"
341
+ forbidden:
342
+ - "les lettres CD, afin d'eviter la confusion avec les plaques des corps diplomatiques"
343
+ - "les lettres W, X, Y et Z suivies d'une lettre, de deux chiffres, puis de trois lettres"
344
+ - "3 lettres suivies de 2 chiffres et des lettres W, X, Y et Z suivies d'une lettre"
345
+ - "les lettres TX et TL, afin d'eviter la confusion avec les plaques taxi"
346
+ - "les lettres Z, V et Y suivies de 3 lettres et de 3 chiffres"
347
+ - "la lettre U suivie d'une lettre, de 2 chiffres et de 3 lettres"
348
+ - "3 lettres suivies de 4 chiffres / 4 lettres suivies de 3 chiffres / 3 chiffres suivis de 4 lettres / 4 chiffres suivis de 3 lettres"
349
+ - "la lettre B suivie de 3 chiffres et d'une lettre"
350
+ note: >-
351
+ This list is the most useful single corroboration DIV publishes, because it
352
+ is the NEGATIVE image of the issuing grammar: every shape a personalised
353
+ plate may not take is a shape some official series does take. Two entries
354
+ are not explained by the arrete ministeriel and are recorded as open
355
+ questions rather than decoded: the "W, X, Y et Z" second group (Y and Z
356
+ trade plates take L-LLL-999, not LL-99-LLL) and the "lettre B suivie de
357
+ 3 chiffres et d'une lettre" reservation.
358
+
359
+ series:
360
+
361
+ # =========================================================================
362
+ # G3/G2 — THE ORDINARY SERIES. Continuous since 15 November 2010: the digit
363
+ # index survived the 2021 re-cut untouched, so this is one series, not two.
364
+ # =========================================================================
365
+ - id: be-standard-2010
366
+ class: standard
367
+ categories: [car, van, truck, bus]
368
+ period: { start: 2010 }
369
+ period_evidence: enabling-instrument
370
+ matching: strict
371
+ format:
372
+ pattern: "9-LLL-999"
373
+ regex: '\A\d-[A-Z]{3}-\d{3}\z'
374
+ regex_statutory: '\A(?:[A-Z0-9]-(?:[A-Z]{3}-\d{3}|\d{3}-[A-Z]{3})|(?:[A-Z]{3}-\d{3}|\d{3}-[A-Z]{3})-[A-Z0-9])\z'
375
+ charset:
376
+ index: "0-9 for the general run; the letters listed in region_encoding_tables.index_letters_2021 are reserved to other series"
377
+ notes: >-
378
+ Neither instrument excludes any letter from the three-letter group of an
379
+ ordinary plate — there is no Belgian equivalent of the Dutch no-vowels
380
+ rule or the German umlaut exclusion. The only constraint stated anywhere
381
+ is art. 4 § 1/1, 4°, which forbids a PERSONALISED inscription from
382
+ colliding with the official series; it says nothing about the letters
383
+ used inside those series.
384
+ progression: >-
385
+ Art. 4 § 1, 1° alinea 2, verbatim: "En cas d'epuisement de ces series, la
386
+ lettre ou le chiffre (index) est place(e) derriere, precede(e) d'un tiret
387
+ de separation ... et d'une combinaison de soit trois lettres suivies de
388
+ trois chiffres ou soit trois chiffres suivis de trois lettres." That
389
+ trailing-index shape is IN FORCE but not issued, which is exactly what
390
+ regex_statutory is for. The order in which DIV consumes indexes and letter
391
+ groups is not published (see common.index_allocation_gap).
392
+ two_line_note: >-
393
+ Art. 4 § 1, 2°: on the 340 x 210 square plate the inscription is the index
394
+ and a hyphen, then a group of at most three characters above a group of at
395
+ most four, "les groupes pris ensemble doivent respecter les combinaisons
396
+ telles que prevues en 1°, SANS TIRET DE SEPARATION". The square plate
397
+ therefore prints exactly ONE hyphen; `pattern` above shows the rectangular
398
+ plate, which prints two.
399
+ design:
400
+ plate: { w: 520, h: 110, unit: mm }
401
+ plate_variants:
402
+ - { w: 340, h: 210, unit: mm, note: "marque d'immatriculation carree; chosen when the rear recess demands it (art. 3 § 2)" }
403
+ - { w: 210, h: 140, unit: mm, note: "motorcycle size on a car, by prior DIV authorisation only where the manufacturer's recess is too small (art. 3 § 5)" }
404
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec, spec_note: "art. 4 § 1: 'La marque d'immatriculation ordinaire a un fond blanc'; art. 3 § 1: 'Le fond de la marque d'immatriculation est retroreflechissant'" }
405
+ foreground: "#9B111E"
406
+ foreground_spec: "RAL 3003"
407
+ foreground_note: "art. 4 § 1, verbatim: 'L'inscription et le lisere sont de couleur rouge rubis (RAL 3003).' The hex is a conventional sRGB conversion — see common.colours.hex_caveat."
408
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
409
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed, note: "art. 3 § 3 gives the band's millimetres and its composition but no colour value for the blue" }
410
+ emblem: { present: false, note: "Belgian plates carry no coat of arms and no artwork; the only mark is the embossed oval CV seal" }
411
+ seal: { name: "sceau en relief CV", h_min: 21, h_max: 22, w_min: 13, w_max: 14, unit: mm }
412
+ rear_differs: false
413
+ display: >-
414
+ One official plate at the REAR (arrete royal art. 29) plus a certified
415
+ REPRODUCTION at the front, fixed centrally or on the left of the front
416
+ face (art. 30). A trailer that is not itself registered in Belgium carries
417
+ a reproduction of the towing vehicle's plate, as does a rear-mounted bike
418
+ carrier and a coach's rear luggage box (art. 30).
419
+ region_encoding: none
420
+ sources:
421
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 4 § 1 (inscription, colours), art. 3 (sizes, euroband, seal, retroreflection)"
422
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # arrete ministeriel 8 November 2010, art. 3 (the first European-format inscription: 'd'un chiffre (index) suivi d'un tiret ... et d'une combinaison de soit trois lettres suivies de trois chiffres soit trois chiffres suivis de trois lettres') and art. 16 (in force 15-11-2010)"
423
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110603&table_name=loi # arrete royal 6 November 2010, art. 19 (in force 15-11-2010)"
424
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal arts. 20 § 1, 1° (the ordinary category), 22 § 2 (the number follows the holder), 29-31 (placement)"
425
+ notes: >-
426
+ THE BELGIAN STANDARD SERIES, from 15 November 2010 — a REAL start date,
427
+ given twice in identical words by the royal and the ministerial instrument.
428
+ period.start is therefore `enabling-instrument`, not `instrument-in-force`.
429
+ The 2019 re-cut (in force 01-01-2021) widened the index to "une lettre ou
430
+ un chiffre" and the 2022 re-cut (in force 01-01-2023) renumbered the
431
+ paragraphs, but neither touched the digit-index passenger shape, so this is
432
+ one continuous series. Between 15-11-2010 and 31-12-2020 the SAME shape was
433
+ also issued to motorcycles, trailers, oldtimers and trade vehicles, which
434
+ had digit indexes then too — so a bare "1-ABC-123" match does not by itself
435
+ say "car", and the sibling G2 series in this file record which letter groups
436
+ narrowed it. No geography and no date is encoded anywhere in the string.
437
+
438
+ # =========================================================================
439
+ # G3 — THE LETTER-INDEX CATEGORIES, all in force 01-01-2021.
440
+ # =========================================================================
441
+ - id: be-trailer-q-2021
442
+ class: trailer
443
+ categories: [trailer]
444
+ period: { start: 2021 }
445
+ period_evidence: instrument-in-force
446
+ matching: strict
447
+ format:
448
+ pattern: "Q-LLL-999"
449
+ regex: '\AQ-[A-Z]{3}-\d{3}\z'
450
+ regex_statutory: '\AQ-(?:[A-Z]{3}-\d{3}|\d{3}-[A-Z]{3})\z'
451
+ charset: { index: [Q], notes: "art. 4 § 3: the 'Q' index is delivered on registration or re-registration of TRAILERS, unless the number was reserved as a personalised inscription under arrete royal art. 23" }
452
+ design:
453
+ plate: { w: 520, h: 110, unit: mm }
454
+ plate_variants:
455
+ - { w: 340, h: 210, unit: mm }
456
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
457
+ foreground: "#9B111E"
458
+ foreground_spec: "RAL 3003"
459
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
460
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
461
+ rear_differs: false
462
+ binding: owner
463
+ region_encoding: none
464
+ sources:
465
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 4 § 3 (the Q index for trailers), art. 4 § 1 (inscription and colours)"
466
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # the 2019 instrument that moved Q from the letter group to the INDEX, art. 5 in force 01-01-2021"
467
+ notes: >-
468
+ TRAILERS, "Q" INDEX, from 01-01-2021. Belgium registers trailers separately
469
+ and gives them their own number, unlike the Dutch rule that ties light
470
+ trailers to the towing vehicle's plate — but arrete royal art. 30 still
471
+ requires a REPRODUCTION of the towing vehicle's plate on a trailer that is
472
+ not itself Belgian-registered, and on a bike carrier. Before 01-01-2021 a
473
+ trailer carried an ordinary digit index with a letter group beginning "Q"
474
+ (see be-trailer-2010), and before 15-11-2010 a 520 x 110 BLACK-on-white
475
+ plate whose letter group began "U" or "Q" (see be-trailer-2001) — the only
476
+ Belgian plate that ever carried the euroband while ordinary car plates did
477
+ not.
478
+
479
+ - id: be-taxi-t-2021
480
+ class: taxi
481
+ categories: [car, van]
482
+ period: { start: 2021 }
483
+ period_evidence: instrument-in-force
484
+ matching: strict
485
+ format:
486
+ pattern: "T-LLL-999"
487
+ regex: '\AT-[A-Z]{3}-\d{3}\z'
488
+ regex_strict: '\AT-[XL][A-Z]{2}-\d{3}\z'
489
+ charset:
490
+ index: [T]
491
+ first_letter_of_group: [X, L]
492
+ notes: >-
493
+ Art. 4 § 4, verbatim: "Pour ce qui est de la categorie 'service de taxi
494
+ autorise', le groupe de lettres commence par un 'X' et pour la categorie
495
+ 'location avec chauffeur', le groupe de lettres commence par un 'L'." So
496
+ T-Xxx-999 is a licensed taxi and T-Lxx-999 is hire-with-driver — a
497
+ two-way class split inside one index, which a single `class` cannot
498
+ express and which regex_strict therefore carries as an alternation.
499
+ design:
500
+ plate: { w: 520, h: 110, unit: mm }
501
+ plate_variants:
502
+ - { w: 340, h: 210, unit: mm }
503
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
504
+ foreground: "#9B111E"
505
+ foreground_spec: "RAL 3003"
506
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
507
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
508
+ binding: owner
509
+ region_encoding: none
510
+ sources:
511
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 4 § 4: the T index, the X/L split, the cross-reference to art. 15 § 2, 2° of the arrete royal of 8 July 1970 on taxes assimilated to income tax, and the duty to RETURN the plate as soon as the vehicle stops qualifying"
512
+ - "https://mobilit.belgium.be/fr/route/immatriculer/immatriculer-un-taxi-ou-un-vehicule-destine-la-location-avec # DIV's taxi registration page (accessed 2026-08-02)"
513
+ notes: >-
514
+ TAXI AND HIRE-WITH-DRIVER, "T" INDEX, from 01-01-2021. Unusually for this
515
+ dataset the taxi plate is NOT a colour variant — Belgium keeps the ordinary
516
+ ruby-red-on-white design and signals the trade through the index alone,
517
+ where the Netherlands uses a light-blue ground. Art. 4 § 4 also carries an
518
+ enforcement rule a claims model should note: "Des que le vehicule automobile
519
+ de personnes ne satisfait plus aux conditions ... la marque d'immatriculation
520
+ doit etre rendue". Before 01-01-2021 the marker was a letter group beginning
521
+ "TX" behind a digit index (see be-taxi-2010).
522
+
523
+ - id: be-historic-o-2021
524
+ class: historic
525
+ categories: [car, van, truck, bus]
526
+ period: { start: 2021 }
527
+ period_evidence: instrument-in-force
528
+ matching: strict
529
+ format:
530
+ pattern: "O-LLL-999"
531
+ regex: '\AO-[A-Z]{3}-\d{3}\z'
532
+ regex_statutory: '\AO-(?:[A-Z]{3}-\d{3}|\d{3}-[A-Z]{3})\z'
533
+ charset: { index: [O], notes: "art. 4 § 2: the 'O' index, unless the number was reserved as a personalised inscription" }
534
+ design:
535
+ plate: { w: 520, h: 110, unit: mm }
536
+ plate_variants:
537
+ - { w: 340, h: 210, unit: mm }
538
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
539
+ foreground: "#9B111E"
540
+ foreground_spec: "RAL 3003"
541
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
542
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
543
+ extra_field:
544
+ condition: "only where the number is a PERSONALISED reservation under arrete royal art. 23, in which case the index is not 'O' and the age must be signalled some other way"
545
+ content: "a red vignette 26 x 26 mm bearing the word 'Oldtimer', placed below the embossed seal and before the registration number"
546
+ note: "art. 4 § 2 alinea 2; the vignette must meet annexe 4. It was 28 x 28 mm under the 2014 text and shrank to 26 x 26 mm with the 2022 re-cut."
547
+ validity:
548
+ min_age_years: 30
549
+ retention_age_years: 25
550
+ note: >-
551
+ Art. 4 § 2, verbatim: the "O" plates "peuvent etre delivrees lors de
552
+ l'immatriculation ou de la reimmatriculation des vehicules automobiles mis
553
+ en circulation depuis PLUS DE TRENTE ANS. Toutefois, les vehicules
554
+ automobiles qui sont mis en circulation depuis plus de vingt-cinq ans mais
555
+ moins de trente ans et qui ont deja ete immatricules sous la marque
556
+ d'immatriculation avec la lettre (index) 'O' ... peuvent rester
557
+ immatricules ou etre reimmatricules sous cette marque d'immatriculation ...
558
+ a condition que ces vehicules restent immatricules ou soient reimmatricules
559
+ AU NOM DU MEME TITULAIRE." The thirty-year threshold is therefore SOURCED
560
+ for Belgium, unlike the German thirty years which plates/de.yml records as
561
+ an unresolved gap. The twenty-five-year grandfather clause is the residue
562
+ of the pre-2023 regime, which admitted vehicles over twenty-five.
563
+ binding: owner
564
+ region_encoding: none
565
+ sources:
566
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 4 § 2 (the O index, the thirty-year rule, the twenty-five-year retention, the Oldtimer vignette)"
567
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2022102106&table_name=loi # the arrete ministeriel of 21 October 2022 that restated the criterion in AGE terms; in force 01-01-2023"
568
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # the 2019 instrument that moved 'O' from the letter group to the index, in force 01-01-2021"
569
+ notes: >-
570
+ OLDTIMER, "O" INDEX. Two dates, both recorded: the index moved from the
571
+ letter group to the index position on 01-01-2021, and the eligibility test
572
+ changed from a cross-reference (art. 2 § 2, 7° of the technical-conditions
573
+ decree of 15 March 1968) to a plain thirty-year age test on 01-01-2023.
574
+ period.start records the FORMAT change, which is what a parser needs.
575
+ Motorcycles and mopeds have their own O series (see be-historic-o-moto-2021
576
+ and the note on be-moped-s-2014): the index is the same but the letter group
577
+ must then begin "M" or "S" respectively.
578
+
579
+ - id: be-historic-o-moto-2021
580
+ class: historic
581
+ categories: [motorcycle]
582
+ period: { start: 2021 }
583
+ period_evidence: instrument-in-force
584
+ matching: strict
585
+ format:
586
+ pattern: "O-LLL-999"
587
+ regex: '\AO-[A-Z]{3}[- ]\d{3}\z'
588
+ regex_strict: '\AO-M[A-Z]{2}[- ]\d{3}\z'
589
+ charset:
590
+ index: [O]
591
+ first_letter_of_group: [M]
592
+ notes: "art. 12 § 3, verbatim: 'les marques d'immatriculation avec lettre (index) \"O\" sont delivrees lors de l'immatriculation ou de la re-immatriculation des vehicules mentionnes a l'article 2, § 2, 1° de l'arrete royal du 10 octobre 1974 ... Les series de lettres commencent par un \"M\".'"
593
+ separator_note: >-
594
+ Two-line plate: the letter group sits ABOVE the digit group with no printed
595
+ glyph between them, so the position is spelled as the separator-only class
596
+ `[- ]` (PRD-PLATES § 2.8). Only the hyphen after the index is printed.
597
+ design:
598
+ plate: { w: 210, h: 140, unit: mm }
599
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
600
+ foreground: "#9B111E"
601
+ foreground_spec: "RAL 3003"
602
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
603
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed, geometry: "62 x 31 mm, 1-3 mm from the left and bottom border" }
604
+ seal: { name: "sceau en relief CV", h_min: 16, h_max: 17, w_min: 10, w_max: 11, unit: mm }
605
+ rear_differs: false
606
+ display: "rear only — a motorcycle carries no front reproduction (arrete royal art. 30 applies the front reproduction to vehicles of art. 1, 6°, a)"
607
+ binding: owner
608
+ region_encoding: none
609
+ sources:
610
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 12 § 3 (the O index with an M letter group), art. 11 (moto plate 210 x 140, euroband 62 x 31, CV seal 16-17 x 10-11)"
611
+ notes: >-
612
+ HISTORIC MOTORCYCLE, "O" index with an "M" letter group, from 01-01-2021.
613
+ Kept as its own entry rather than folded into be-historic-o-2021 because both
614
+ the format (the mandated M) and the design (210 x 140 two-line) differ, which
615
+ is the PRD-PLATES § 2.3 test applied literally. Note that art. 12 § 3 keys
616
+ eligibility to art. 2 § 2, 1° of the arrete royal of 10 October 1974 on the
617
+ technical conditions for mopeds and motorcycles — NOT to the thirty-year test
618
+ that art. 4 § 2 now uses for cars, so the two O series do not share a
619
+ criterion. That divergence was not resolved in this pass and is a recorded gap.
620
+
621
+ - id: be-motorcycle-m-2021
622
+ class: motorcycle
623
+ categories: [motorcycle]
624
+ period: { start: 2021 }
625
+ period_evidence: instrument-in-force
626
+ matching: strict
627
+ format:
628
+ pattern: "M-LLL-999"
629
+ regex: '\AM-[A-Z]{3}[- ]\d{3}\z'
630
+ regex_statutory: '\AM-(?:[A-Z]{3}[- ]\d{3}|\d{3}[- ][A-Z]{3})\z'
631
+ charset:
632
+ index: [M]
633
+ notes: "art. 12 § 2, verbatim: 'l'inscription consiste en la lettre (index) \"M\" suivie d'un tiret de separation et d'un groupe de trois lettres au-dessus d'un groupe de trois chiffres ou d'un groupe de trois chiffres au-dessus d'un groupe de trois lettres'"
634
+ separator_note: "two-line plate; the group boundary carries no printed glyph, hence the separator-only class `[- ]` (PRD-PLATES § 2.8)"
635
+ design:
636
+ plate: { w: 210, h: 140, unit: mm }
637
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
638
+ foreground: "#9B111E"
639
+ foreground_spec: "RAL 3003"
640
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
641
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed, geometry: "62 x 31 mm, 1-3 mm from the left and bottom border" }
642
+ seal: { name: "sceau en relief CV", h_min: 16, h_max: 17, w_min: 10, w_max: 11, unit: mm }
643
+ rear_differs: false
644
+ display: "rear only; readable at twenty metres rather than the forty required of car plates (arrete royal art. 29)"
645
+ binding: owner
646
+ region_encoding: none
647
+ sources:
648
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 11 (moto plate: metal plate, inscription, European symbol, embossed seal, rounded corners, 210 x 140 mm, 5 mm border, annexe 2 characters, 62 x 31 mm blue zone) and art. 12 § 2 (the M index)"
649
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # the 2019 instrument that introduced the M index, in force 01-01-2021"
650
+ - "https://mobilit.belgium.be/fr/route/immatriculer-et-radier/plaques-et-certificats-dimmatriculation/format-de-plaque # DIV: 'Plaque de format moto (21x14 cm)' is mandatory for motorcycles"
651
+ notes: >-
652
+ MOTORCYCLES, TRICYCLES AND MOTOR QUADRICYCLES, "M" INDEX, from 01-01-2021.
653
+ The chapter covers all three vehicle kinds under one heading ("marques
654
+ d'immatriculation moto"). Between 15-11-2010 and 31-12-2020 the plate carried
655
+ a DIGIT index with an M letter group (see be-motorcycle-2010), and before
656
+ 15-11-2010 it was a YELLOW plate with black characters (see
657
+ be-motorcycle-2001) — the only Belgian plate that was ever yellow.
658
+
659
+ - id: be-moped-s-2014
660
+ class: moped
661
+ categories: [moped, quadricycle]
662
+ period: { start: 2014 }
663
+ period_evidence: enabling-instrument
664
+ matching: strict
665
+ format:
666
+ pattern: "S-LLL-999"
667
+ regex: '\AS-[A-Z]{3}[- ]\d{3}\z'
668
+ regex_strict: '\AS-[ABPU][A-Z]{2}[- ]\d{3}\z'
669
+ regex_statutory: '\AS-(?:[A-Z]{3}[- ]\d{3}|\d{3}[- ][A-Z]{3})\z'
670
+ charset:
671
+ index: [S]
672
+ first_letter_of_group: [A, B, P, U]
673
+ notes: >-
674
+ Art. 19 § 2, verbatim: "Les series de lettres commencent par la lettre
675
+ 'A' pour les cyclomoteurs de classe A, par la lettre 'B' pour les
676
+ cyclomoteurs de classe B et par la lettre 'P' pour un 'speed pedelec'
677
+ ... Pour les quadricycles legers ... Les series de lettres commencent
678
+ par la lettre 'U'." So the SECOND character of the string decodes the
679
+ exact vehicle kind — a four-way split no other series in this file has.
680
+ separator_note: "two-line plate; separator-only class `[- ]` at the stacked group boundary (PRD-PLATES § 2.8)"
681
+ design:
682
+ plate: { w: 100, h: 120, unit: mm }
683
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
684
+ foreground: "#9B111E"
685
+ foreground_spec: "RAL 3003"
686
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
687
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed, geometry: "35 x 18 mm, 4-5 mm from the left border and 7-9 mm from the bottom border" }
688
+ seal: { name: "sceau en relief CV", h_min: 16, h_max: 17, w_min: 10, w_max: 11, unit: mm }
689
+ size_change_note: >-
690
+ THE PLATE SHRANK. Art. 15/1 § 2 as inserted on 31-03-2014 gave the moped
691
+ plate the MOTORCYCLE size, 210 x 140 mm; the 2019 instrument (in force
692
+ 01-01-2021) moved it to chapitre V and cut it to 100 x 120 mm with its own
693
+ character drawing (annexe 2bis). A moped plate made between 2014 and 2020
694
+ is therefore physically twice the size of one made today while carrying the
695
+ same inscription — a design change inside one series, recorded here rather
696
+ than split, because the serial grammar never changed.
697
+ rear_differs: false
698
+ binding: owner
699
+ region_encoding: none
700
+ sources:
701
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2014032302&table_name=loi # arrete ministeriel 23 March 2014 inserting chapitre IVbis, art. 15/2 § 2 ('la lettre \"S\" suivie d'un tiret...'), and art. 2: 'Le present arrete entre en vigueur le 31 mars 2014.'"
702
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 18 (100 x 120 mm, 35 x 18 mm blue zone, annexe 2bis characters) and art. 19 §§ 2-4 (the S index, the A/B/P/U letter split, the O oldtimer variant, the Cour/A/E/P supplementary rule)"
703
+ - "https://mobilit.belgium.be/fr/route/immatriculer-et-radier/plaques-et-certificats-dimmatriculation/format-de-plaque # DIV: 'Plaque format cyclo (10x12 cm)' is mandatory for mopeds, speed pedelecs and light quadricycles"
704
+ notes: >-
705
+ MOPEDS, SPEED PEDELECS AND LIGHT QUADRICYCLES, "S" INDEX, from 31 March
706
+ 2014 — a REAL start, given by the entry-into-force article of the instrument
707
+ that created the category, not by a consolidation date. "P" for speed
708
+ pedelecs and "U" for light quadricycles were added by the 2019 instrument
709
+ (in force 01-01-2021), so an S-Pxx-999 plate cannot predate 2021 while an
710
+ S-Axx-999 or S-Bxx-999 plate can go back to 2014 — the one genuine
711
+ era-inference tell in the Belgian system. Historic mopeds take the "O" index
712
+ with a letter group beginning "S" (art. 19 § 3), and short-duration
713
+ temporary and export moped plates BOTH begin "WS" (art. 21 § 4), which is
714
+ the only place in Belgian law where the export plate does not begin "X".
715
+
716
+ - id: be-agricultural-g-2020
717
+ class: agricultural
718
+ categories: [tractor, machine]
719
+ period: { start: 2020 }
720
+ period_evidence: instrument-in-force
721
+ matching: strict
722
+ format:
723
+ pattern: "G-LLL-999"
724
+ regex: '\AG-[A-Z]{3}-\d{3}\z'
725
+ regex_strict: '\AG-L[A-Z]{2}-\d{3}\z'
726
+ charset:
727
+ index: [G]
728
+ first_letter_of_group: [L]
729
+ notes: "art. 9 § 2, verbatim: 'la lettre \"G\" est suivie d'un tiret ..., de la lettre \"L\" et d'une combinaison de deux lettres suivie d'un tiret ... et d'une combinaison de trois chiffres'"
730
+ design:
731
+ plate: { w: 520, h: 110, unit: mm }
732
+ plate_variants:
733
+ - { w: 340, h: 210, unit: mm, note: "square form: 'G' + hyphen + 'L' + two letters above three digits" }
734
+ background: { color: "#CC0605", finish: retroreflective, hex_basis: spec, spec: "RAL 3020", spec_note: "art. 9 § 3, verbatim: 'Les marques d'immatriculation visees aux §§ 1er et 2 ont un fond rouge (RAL 3020). L'inscription et le lisere sont blancs.'" }
735
+ foreground: "#FFFFFF"
736
+ border: { color: "#FFFFFF", width_mm: 5 }
737
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
738
+ binding: owner
739
+ region_encoding: none
740
+ sources:
741
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 9 §§ 1-4: the G plate is issued to holders claiming the fuel-excise exemption of art. 429 §§ 2, i and 3, b of the programme law of 27 December 2004 for vehicles of art. 1 § 2, 59° of the arrete royal of 15 March 1968; red RAL 3020 ground, white inscription; and the duty to return the plate when the exemption lapses"
742
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # art. 2 of the 2019 instrument, which the Justel footnote dates in force 01-10-2020"
743
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 20 § 1, 8°, inserted by the arrete royal of 7 May 2013, in force 01-06-2013 — the category's own creation date"
744
+ notes: >-
745
+ AGRICULTURAL AND FORESTRY TRACTORS, "G" INDEX, red on white. CLASS AND
746
+ CRITERION CAVEAT, and it is a real one: like the German green plate, the
747
+ legal test is FISCAL, not agronomic — the G plate goes to holders who claim
748
+ the fuel-excise exemption, and it must be returned when the exemption stops.
749
+ TWO DATES: the category was created by the arrete royal of 7 May 2013 (in
750
+ force 01-06-2013), but the G-Lxx-999 inscription and the red ground come
751
+ from the 2019 ministerial instrument, whose art. 2 the Justel footnote dates
752
+ in force 01-10-2020. period.start records the FORMAT, and the earlier
753
+ category date is recorded here rather than laundered into the period.
754
+ Belgium is the second jurisdiction in this dataset (after Germany) to give
755
+ a hard colour code for a plate ground rather than a colour name.
756
+
757
+ - id: be-national-u-2021
758
+ class: temporary
759
+ categories: [car, van, truck, bus, trailer]
760
+ period: { start: 2021 }
761
+ period_evidence: instrument-in-force
762
+ matching: strict
763
+ format:
764
+ pattern: "UL-99-LLL"
765
+ regex: '\AU[A-Z]-\d{2}-[A-Z]{3}\z'
766
+ charset:
767
+ first_letters: [U]
768
+ notes: >-
769
+ Art. 10 § 1, 1°, verbatim: "de deux lettres suivies d'un tiret ... et
770
+ d'une combinaison de deux chiffres correspondant a L'ANNEE DE VALIDITE,
771
+ ainsi que d'une combinaison de trois lettres"; art. 10 § 3: "la premiere
772
+ lettre est la lettre 'U' suivie d'une deuxieme lettre". DIV's own page
773
+ says the pair currently in issue is "UA".
774
+ fields_note: >-
775
+ THE YEAR IS INSIDE THE SERIAL. The two digits are the last two of the
776
+ expiry year, and two GREEN vignettes to the right of the European symbol
777
+ carry the day (upper) and the month (lower). Together they give a full
778
+ expiry date — the only Belgian series besides the W/X temporaries where
779
+ the string itself carries a date.
780
+ design:
781
+ plate: { w: 520, h: 110, unit: mm }
782
+ plate_variants:
783
+ - { w: 340, h: 210, unit: mm }
784
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
785
+ foreground: "#114232"
786
+ foreground_spec: "RAL 6005"
787
+ foreground_note: "art. 10 § 1, verbatim: 'L'inscription et le lisere sont de couleur vert mousse (RAL 6005).'"
788
+ border: { color: "#114232", spec: "RAL 6005", width_mm: 5 }
789
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
790
+ extra_field: { position: "right of the European symbol", content: "two green vignettes, day above and month below, per annexe 4" }
791
+ validity:
792
+ days: 20
793
+ note: "DIV: valid twenty consecutive calendar days, one plate per vehicle per holder per year, EXPIRES AUTOMATICALLY without a deregistration step, cannot be renewed, and is valid on Belgian territory only"
794
+ binding: vehicle
795
+ region_encoding: none
796
+ sources:
797
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 10 §§ 1-3 (car/trailer national plate), art. 17 (motorcycle national plate), art. 23 (moped national plate)"
798
+ - "https://mobilit.belgium.be/fr/route/immatriculer/plaque-nationale # DIV: moss green on white retroreflective, 'UA' before the validity year, two green stickers for month and day, twenty consecutive calendar days, one per vehicle per year, Belgian territory only (accessed 2026-08-02)"
799
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 20 § 1, 7° and the reference to the arrete royal of 8 January 1996 on commercial and national plates"
800
+ notes: >-
801
+ PLAQUE NATIONALE, "U" INDEX. Belgium's short national-use plate: it is tied
802
+ to a DETERMINED VEHICLE (hence `binding: vehicle`, against the jurisdiction
803
+ default) for deliveries, roadworthiness tests and demonstrations, for twenty
804
+ days, inside Belgium only. CLASS CAVEAT: the underlying instrument is the
805
+ arrete royal of 8 January 1996 on COMMERCIAL and national plates, so a case
806
+ could be made for `dealer`; `temporary` is recorded because the defining
807
+ feature is a twenty-day self-expiring validity and because any natural or
808
+ legal person may hold one, not only a trade.
809
+
810
+ - id: be-dealer-marchand-z-2021
811
+ class: dealer
812
+ categories: [car, van, truck, bus, trailer]
813
+ period: { start: 2021 }
814
+ period_evidence: instrument-in-force
815
+ matching: strict
816
+ format:
817
+ pattern: "Z-LLL-999"
818
+ regex: '\AZ-[A-Z]{3}-\d{3}\z'
819
+ charset:
820
+ index: [Z]
821
+ notes: "art. 8 § 3, 2°, verbatim: 'la plaque marchand : la premiere lettre \"Z\" est suivie d'une combinaison de trois lettres dont la premiere lettre ne doit pas etre la lettre \"M\" et \"S\"' — M and S are withheld because they mark the motorcycle and moped trade plates (art. 16 § 3, art. 22 § 3)"
822
+ design:
823
+ plate: { w: 520, h: 110, unit: mm }
824
+ plate_variants:
825
+ - { w: 340, h: 210, unit: mm }
826
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
827
+ foreground: "#114232"
828
+ foreground_spec: "RAL 6005"
829
+ border: { color: "#114232", spec: "RAL 6005", width_mm: 5 }
830
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
831
+ extra_field: { position: "between the letter group and the digit group", content: "a vignette conforming to annexe 5, carrying the expiry year (art. 8 § 2)" }
832
+ binding: business
833
+ region_encoding: none
834
+ sources:
835
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 8 §§ 1-3 (white ground, moss green RAL 6005 inscription and border, the L-LLL-999 shape, the annexe 5 vignette, and the three index letters Y / Z / V)"
836
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 20 § 1, 7°: commercial plates are governed by the arrete royal of 8 January 1996"
837
+ notes: >-
838
+ PLAQUE MARCHAND — the Belgian dealer plate, "Z" index. `binding: business`:
839
+ like the German rote Kennzeichen it attaches to a trade, not to a vehicle,
840
+ which is why a vehicle-keyed consumer must not join on it. Its motorcycle
841
+ twin keeps the Z index and takes a letter group beginning "M" (art. 16 § 3),
842
+ its moped twin a letter group beginning "S" (art. 22 § 3) — which is exactly
843
+ why the car series withholds M and S from its own first letter. Green: moss
844
+ green RAL 6005 since 01-01-2021, mint green RAL 6029 from 15-11-2010 (see
845
+ be-commercial-2010), plain "verts" with no code before that.
846
+
847
+ - id: be-dealer-essai-y-2021
848
+ class: dealer
849
+ categories: [car, van, truck, bus, trailer]
850
+ period: { start: 2021 }
851
+ period_evidence: instrument-in-force
852
+ matching: strict
853
+ format:
854
+ pattern: "Y-LLL-999"
855
+ regex: '\AY-[A-Z]{3}-\d{3}\z'
856
+ charset: { index: [Y], notes: "art. 8 § 3, 1°: the test plate's index is 'Y' and the first letter of its three-letter group is neither 'M' nor 'S'" }
857
+ design:
858
+ plate: { w: 520, h: 110, unit: mm }
859
+ plate_variants:
860
+ - { w: 340, h: 210, unit: mm }
861
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
862
+ foreground: "#114232"
863
+ foreground_spec: "RAL 6005"
864
+ border: { color: "#114232", spec: "RAL 6005", width_mm: 5 }
865
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
866
+ extra_field: { position: "between the letter group and the digit group", content: "annexe 5 vignette carrying the expiry year" }
867
+ binding: business
868
+ region_encoding: none
869
+ sources:
870
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 8 § 3, 1° (plaque essai, index Y) and art. 8 §§ 1-2 (colours and vignette)"
871
+ notes: >-
872
+ PLAQUE ESSAI — the Belgian TEST plate, "Y" index, distinct from the dealer
873
+ plate it shares a design with. Recorded as its own series rather than a
874
+ variant because the index letter is part of the format and a parse API must
875
+ be able to score "Y-" against "Z-" independently. Under the pre-2010 regime
876
+ the test plate was identified instead by the letter pair "ZX", "ZY" or "ZZ"
877
+ at the head of the letter group (see be-commercial-2001), which is why the
878
+ modern Y index reads as a promotion of that convention rather than an
879
+ invention.
880
+
881
+ - id: be-dealer-professionnelle-v-2021
882
+ class: dealer
883
+ categories: [car, van, truck, bus, trailer]
884
+ period: { start: 2021 }
885
+ period_evidence: instrument-in-force
886
+ matching: strict
887
+ format:
888
+ pattern: "V-LLL-999"
889
+ regex: '\AV-[A-Z]{3}-\d{3}\z'
890
+ charset: { index: [V], notes: "art. 8 § 3, 3°: the professional plate's index is 'V' and the first letter of its three-letter group is neither 'M' nor 'S'" }
891
+ design:
892
+ plate: { w: 520, h: 110, unit: mm }
893
+ plate_variants:
894
+ - { w: 340, h: 210, unit: mm }
895
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
896
+ foreground: "#114232"
897
+ foreground_spec: "RAL 6005"
898
+ border: { color: "#114232", spec: "RAL 6005", width_mm: 5 }
899
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
900
+ extra_field: { position: "between the letter group and the digit group", content: "annexe 5 vignette carrying the expiry year" }
901
+ binding: business
902
+ region_encoding: none
903
+ sources:
904
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 8 § 3, 3° (plaque professionnelle, index V)"
905
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # the 2019 instrument that created the professional plate alongside the test and dealer plates, in force 01-01-2021"
906
+ notes: >-
907
+ PLAQUE PROFESSIONNELLE, "V" index — the NEWEST Belgian trade category, with
908
+ no predecessor: the 2001 and 2010 texts knew only the test plate and the
909
+ dealer plate, and the professional plate first appears in the 2019
910
+ instrument. period.start 2021 is therefore both the instrument date and the
911
+ real start, which is unusual in this file and worth stating.
912
+
913
+ - id: be-temporary-w-2021
914
+ class: temporary
915
+ categories: [car, van, truck, bus, trailer, motorcycle, moped]
916
+ period: { start: 2021 }
917
+ period_evidence: instrument-in-force
918
+ matching: strict
919
+ format:
920
+ pattern: "WL-99-LLL"
921
+ regex: '\AW[A-Z]-\d{2}-[A-Z]{3}\z'
922
+ charset:
923
+ first_letters: [W]
924
+ second_letter_decode:
925
+ car: "any letter except M, Q and S (art. 5 § 4, 1°)"
926
+ trailer: "Q (art. 5 § 4, 2°)"
927
+ motorcycle: "M (art. 13 § 4, 1°)"
928
+ moped: "S (art. 21 § 4)"
929
+ notes: "art. 5 § 1, 1°, verbatim: 'd'un groupe de deux lettres suivi des deux derniers chiffres du millesime suivi des trois lettres. Les chiffres sont separes des lettres par un tiret de separation situe sur la ligne mediane horizontale de la marque d'immatriculation.'"
930
+ fields_note: >-
931
+ THE PLATE CARRIES ITS OWN EXPIRY. The two digits are the last two of the
932
+ expiry YEAR, embossed in the serial; two vignettes carry the DAY (upper)
933
+ and the MONTH (lower). Art. 5 § 3 makes the vignette colour the fiscal
934
+ tell: "Les marques d'immatriculation transit sont munies d'une vignette
935
+ ROUGE; les marques d'immatriculation provisoire ont une vignette BLEUE" —
936
+ red for the import-duty/VAT-exempt transit regime, blue for the ordinary
937
+ provisional one. A single `pattern` string cannot carry the vignettes.
938
+ design:
939
+ plate: { w: 520, h: 110, unit: mm }
940
+ plate_variants:
941
+ - { w: 340, h: 210, unit: mm }
942
+ - { w: 210, h: 140, unit: mm, note: "motorcycle form, art. 13" }
943
+ - { w: 100, h: 120, unit: mm, note: "moped form, art. 21" }
944
+ background: { color: "#CC0605", finish: retroreflective, hex_basis: spec, spec: "RAL 3020", spec_note: "art. 5 § 1, verbatim: 'ont un fond rouge signalisation (RAL 3020). L'inscription et le lisere sont blancs.'" }
945
+ foreground: "#FFFFFF"
946
+ border: { color: "#FFFFFF", width_mm: 5 }
947
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
948
+ extra_field: { content: "two vignettes: day above, month below; red for transit, blue for provisional (art. 5 §§ 2-3)" }
949
+ binding: vehicle
950
+ region_encoding: none
951
+ sources:
952
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 5 §§ 1-4 (cars and trailers), art. 13 §§ 1-4 (motorcycles), art. 21 §§ 1-4 (mopeds)"
953
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 5 § 1 (who may hold a temporary registration) and art. 20 § 1, 3° (the short-duration category); art. 5 § 3: a temporary registration runs at least two months and a NEW plate is issued on every extension"
954
+ - "https://mobilit.belgium.be/fr/route/immatriculer/immatriculer-temporairement-plaque-w # DIV: the W plate is for people making a temporary stay in Belgium; three indicators of validity — the embossed year plus day and month stickers, red or blue by tax regime; the plate is deregistered automatically on expiry (accessed 2026-08-02)"
955
+ notes: >-
956
+ THE "W" PLATE — short-duration temporary registration for a temporary STAY in
957
+ Belgium, red on white. `binding: vehicle`, against the jurisdiction default:
958
+ arrete royal art. 22 § 2 expressly withholds the keep-your-number right where
959
+ a short-duration temporary plate has been issued. Note that DIV also delivers
960
+ a REPRODUCTION with these plates (art. 22 § 1 last sentence), which it does
961
+ not do for ordinary ones. Its export twin is be-export-x-2021, and the two
962
+ are distinguishable by a single character — except on mopeds, where art. 21
963
+ § 4 gives BOTH the "WS" prefix.
964
+
965
+ - id: be-export-x-2021
966
+ class: export
967
+ categories: [car, van, truck, bus, trailer, motorcycle]
968
+ period: { start: 2021 }
969
+ period_evidence: instrument-in-force
970
+ matching: strict
971
+ format:
972
+ pattern: "XL-99-LLL"
973
+ regex: '\AX[A-Z]-\d{2}-[A-Z]{3}\z'
974
+ charset:
975
+ first_letters: [X]
976
+ second_letter_decode:
977
+ car: "any letter except M, Q and S (art. 5 § 4, 3°)"
978
+ trailer: "Q (art. 5 § 4, 4°)"
979
+ motorcycle: "M (art. 13 § 4, 2°)"
980
+ notes: "same inscription grammar as the W plate — two letters, the last two digits of the expiry year, three letters — with 'X' as the first letter"
981
+ fields_note: "expiry year embossed in the serial; day and month on two vignettes, red for transit and blue for provisional (art. 5 §§ 2-3)"
982
+ design:
983
+ plate: { w: 520, h: 110, unit: mm }
984
+ plate_variants:
985
+ - { w: 340, h: 210, unit: mm }
986
+ - { w: 210, h: 140, unit: mm, note: "motorcycle form, art. 13 § 4, 2°" }
987
+ background: { color: "#CC0605", finish: retroreflective, hex_basis: spec, spec: "RAL 3020" }
988
+ foreground: "#FFFFFF"
989
+ border: { color: "#FFFFFF", width_mm: 5 }
990
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
991
+ extra_field: { content: "two vignettes: day above, month below; red for transit, blue for provisional" }
992
+ validity:
993
+ days: 30
994
+ note: "DIV: thirty calendar days, longer only in the VAT-exempt cases; a Belgian resident exporting a personal vehicle may hold one X plate per year"
995
+ binding: vehicle
996
+ region_encoding: none
997
+ sources:
998
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 5 § 4, 3°-4° (export auto and export trailer) and art. 13 § 4, 2° (export motorcycle)"
999
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 20 § 1, 3°/1, inserted by the arrete royal of 19 February 2016 in force 01-05-2016 — the export category's own creation date; art. 5 § 1, 10°-13° names the holders"
1000
+ - "https://mobilit.belgium.be/fr/route/immatriculer/exporter-un-vehicule-plaque-x # DIV: thirty calendar days, the three validity indicators, and the eligible holders (accessed 2026-08-02)"
1001
+ notes: >-
1002
+ THE "X" PLATE — the Belgian EXPORT plate, red on white, thirty days. TWO
1003
+ DATES, both recorded: the export category was carved out of the general
1004
+ short-duration temporary category by the arrete royal of 19 February 2016 (in
1005
+ force 01-05-2016), which inserted art. 20 § 1, 3°/1; the "X" letter and the
1006
+ LL-99-LLL inscription come from the 2019 ministerial instrument in force
1007
+ 01-01-2021, and that is what period.start records. Unlike the German
1008
+ Ausfuhrkennzeichen, the Belgian export plate KEEPS the euroband.
1009
+
1010
+ - id: be-international-2021
1011
+ class: temporary
1012
+ categories: [car, van, truck, bus, motorcycle, moped]
1013
+ period: { start: 2021 }
1014
+ period_evidence: instrument-in-force
1015
+ matching: strict
1016
+ format:
1017
+ pattern: "9-LLL-999"
1018
+ regex: '\A\d-[A-Z]{3}-\d{3}\z'
1019
+ regex_statutory: '\A(?:[A-Z0-9]-(?:[A-Z]{3}-\d{3}|\d{3}-[A-Z]{3})|(?:[A-Z]{3}-\d{3}|\d{3}-[A-Z]{3})-[A-Z0-9])\z'
1020
+ charset:
1021
+ notes: >-
1022
+ Art. 6 alinea 2, verbatim: "En ce qui concerne l'inscription, les
1023
+ dispositions de l'article 4, § 1er, points 1° et 2° de cet arrete sont
1024
+ d'application." The long-duration temporary plate therefore takes the
1025
+ ORDINARY inscription, with no distinguishing index of its own.
1026
+ design:
1027
+ plate: { w: 520, h: 110, unit: mm }
1028
+ plate_variants:
1029
+ - { w: 340, h: 210, unit: mm }
1030
+ - { w: 210, h: 140, unit: mm, note: "motorcycle form, art. 14" }
1031
+ - { w: 100, h: 120, unit: mm, note: "moped form, art. 20" }
1032
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1033
+ foreground: "#9B111E"
1034
+ foreground_spec: "RAL 3003"
1035
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1036
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1037
+ binding: vehicle
1038
+ region_encoding: none
1039
+ sources:
1040
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 6 (car), art. 14 (motorcycle), art. 20 (moped): white ground, ruby red RAL 3003, ordinary inscription, and the rule that the inscription may NOT be kept for a subsequent ordinary registration"
1041
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 20 § 1, 4° (the long-duration temporary category, called the 'marque d'immatriculation internationale') and art. 5 § 1, 1°-3° (diplomatic and consular staff, SHAPE and NATO members and their families)"
1042
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # art. 5 of the 2010 instrument, which gave this plate the fixed index EIGHT — 'du chiffre (index) huit suivi d'un tiret ... et d'une combinaison de trois lettres suivies de trois chiffres'"
1043
+ notes: >-
1044
+ MARQUE D'IMMATRICULATION INTERNATIONALE — the long-duration temporary plate,
1045
+ for diplomatic and consular staff, SHAPE and NATO personnel and comparable
1046
+ holders whose vehicle does not carry a CD plate. A NEGATIVE FINDING WORTH
1047
+ RECORDING: since 01-01-2021 this plate is NOT distinguishable from an
1048
+ ordinary plate by its string. Between 15-11-2010 and 31-12-2020 it was: the
1049
+ arrete ministeriel of 8 November 2010 fixed its index at the digit EIGHT, so
1050
+ "8-ABC-123" was an international plate and nothing else (see
1051
+ be-international-2010). The 2019 instrument dropped that, and no replacement
1052
+ marker appears anywhere in the consolidated text. Art. 6 § 2 adds a rule a
1053
+ claims model should keep: on expiry "l'inscription ne peut pas etre conservee
1054
+ pour une immatriculation sous une plaque normale" — the one Belgian number
1055
+ that its holder may NOT keep.
1056
+
1057
+ - id: be-diplomatic-cd-2010
1058
+ class: diplomatic
1059
+ categories: [car, van, motorcycle]
1060
+ period: { start: 2010 }
1061
+ period_evidence: enabling-instrument
1062
+ matching: strict
1063
+ format:
1064
+ pattern: "CD-LL-999"
1065
+ regex: '\ACD-[A-Z]{2}-\d{3}\z'
1066
+ charset:
1067
+ fixed_letters: "CD"
1068
+ notes: >-
1069
+ Art. 7, 1°, verbatim: "d'une combinaison des lettres 'CD' suivies d'un
1070
+ tiret de separation ..., de deux lettres suivies d'un tiret de separation
1071
+ ... et de trois chiffres". The motorcycle CD plate (art. 15) is the same
1072
+ string with the letter group forced to begin "M".
1073
+ separator_note: >-
1074
+ THE SECOND HYPHEN IS YOUNGER THAN THE PLATE. The arrete ministeriel of
1075
+ 8 November 2010 prescribed only ONE hyphen — "Les lettres 'CD' sont
1076
+ separees des autres caracteres par un tiret" — so a CD plate issued between
1077
+ 15-11-2010 and 30-03-2014 prints "CD-AB123". The second hyphen was inserted
1078
+ by the arrete ministeriel of 28 March 2014, in force 31-03-2014.
1079
+ design:
1080
+ plate: { w: 520, h: 110, unit: mm }
1081
+ plate_variants:
1082
+ - { w: 340, h: 210, unit: mm, note: "'CD' and a hyphen, then two letters above three digits" }
1083
+ - { w: 210, h: 140, unit: mm, note: "motorcycle CD plate, art. 15; letter group begins 'M'" }
1084
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1085
+ foreground: "#9B111E"
1086
+ foreground_spec: "RAL 3003"
1087
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1088
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1089
+ binding: owner
1090
+ region_encoding: none
1091
+ sources:
1092
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 7 (car CD plate: white ground, ruby red RAL 3003, CD-LL-999) and art. 15 (motorcycle CD plate, letter group begins 'M')"
1093
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # art. 6 of the 2010 instrument: the CD plate becomes ruby red on white with a single hyphen, in force 15-11-2010"
1094
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2014032807&table_name=loi # art. 4 of the 2014 instrument: the second hyphen, in force 31-03-2014"
1095
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 20 § 4: the CD plate is assigned on the proposal of the Protocol service of the FPS Foreign Affairs, to members of the diplomatic or consular corps, to persons with comparable immunities, and to missions and permanent establishments of public international organisations for their service vehicles"
1096
+ notes: >-
1097
+ THE CD PLATE, from 15 November 2010. Belgium keeps the ordinary ruby-red
1098
+ design and signals diplomatic status through the literal letters "CD" — the
1099
+ German approach (status in the prefix, ordinary colours) rather than the
1100
+ Spanish one (a colour per corps). CONSULAR CAVEAT: art. 20 § 4 of the arrete
1101
+ royal puts the consular corps INSIDE the CD category, so Belgium has no
1102
+ separate consular series and `class: consular` is unused for this
1103
+ jurisdiction. The two-letter group is a mission code allocated by the Protocol
1104
+ service and is NOT published in either instrument — a decode table would be an
1105
+ L4 deliverable and is deliberately not guessed here. Before 15-11-2010 the CD
1106
+ plate was two-coloured: green "CD", then a red letter and three red digits
1107
+ (see be-diplomatic-2001).
1108
+
1109
+ - id: be-supplementary-court
1110
+ class: government
1111
+ categories: [car]
1112
+ period: { start: 2001 }
1113
+ period_evidence: instrument-in-force
1114
+ matching: strict
1115
+ format:
1116
+ pattern: "999"
1117
+ regex: '\A\d{1,3}\z'
1118
+ charset:
1119
+ notes: "art. 4 § 5, 1°, verbatim: 'les marques d'immatriculation \"Cour\": un a trois chiffres uniquement' — digits only, one to three of them, and nothing else on the plate"
1120
+ design:
1121
+ plate: { w: 520, h: 110, unit: mm }
1122
+ plate_variants:
1123
+ - { w: 340, h: 210, unit: mm }
1124
+ - { w: 210, h: 140, unit: mm, note: "motorcycle form, art. 12 § 4, 1°" }
1125
+ - { w: 100, h: 120, unit: mm, note: "moped form, art. 19 § 4, 1°" }
1126
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1127
+ foreground: "#9B111E"
1128
+ foreground_spec: "RAL 3003"
1129
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1130
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1131
+ binding: owner
1132
+ region_encoding: none
1133
+ sources:
1134
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 4 § 5, 1° (car), art. 12 § 4, 1° (motorcycle), art. 19 § 4, 1° (moped)"
1135
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 20 § 1, 2° and § 2, 1°: the 'Cour' plate goes to members of the royal family and dignitaries of the Court, and is issued only IN ADDITION to a plate the vehicle already carries"
1136
+ - "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # the arrete ministeriel as published 08-08-2001, art. 4 § 2, 1°: 'un a trois chiffres seulement' — the composition is unchanged since 01-10-2001"
1137
+ notes: >-
1138
+ THE COURT PLATE — one to three digits and nothing else, the shortest
1139
+ inscription in this dataset and the only Belgian plate with no letters at
1140
+ all. It is a SUPPLEMENTARY plate: arrete royal art. 20 § 2 requires the
1141
+ vehicle already to carry an ordinary or CD plate, and "Le titulaire d'une
1142
+ double immatriculation choisit laquelle des deux marques d'immatriculation
1143
+ est apposee sur son vehicule", so the same car legally has two numbers and
1144
+ shows one. period.start 2001 is the in-force date of the arrete ministeriel
1145
+ that states the composition; the composition itself survived the 2010, 2019
1146
+ and 2022 rewrites unchanged, which is why the series is not split.
1147
+
1148
+ - id: be-supplementary-aep
1149
+ class: government
1150
+ categories: [car]
1151
+ period: { start: 2001 }
1152
+ period_evidence: instrument-in-force
1153
+ matching: strict
1154
+ format:
1155
+ pattern: "A-999"
1156
+ regex: '\A[AEP]-\d{1,3}\z'
1157
+ charset:
1158
+ index: [A, E, P]
1159
+ notes: >-
1160
+ Art. 4 § 5, 2°, verbatim: "les marques d'immatriculation 'A', 'E' ou 'P':
1161
+ la lettre 'A', 'E' ou 'P' est suivie d'un trait de separation et d'un a
1162
+ trois chiffres." The letter is the office, not a serial character:
1163
+ A = federal executive and senior magistracy, E = Community and Regional
1164
+ governments, P = parliamentarians (arrete royal art. 20 § 2, 2°-4°).
1165
+ design:
1166
+ plate: { w: 520, h: 110, unit: mm }
1167
+ plate_variants:
1168
+ - { w: 340, h: 210, unit: mm }
1169
+ - { w: 210, h: 140, unit: mm, note: "motorcycle form, art. 12 § 4, 2°" }
1170
+ - { w: 100, h: 120, unit: mm, note: "moped form, art. 19 § 4, 2°" }
1171
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1172
+ foreground: "#9B111E"
1173
+ foreground_spec: "RAL 3003"
1174
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1175
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1176
+ binding: owner
1177
+ region_encoding: none
1178
+ sources:
1179
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 4 § 5, 2° (car), art. 12 § 4, 2° (motorcycle), art. 19 § 4, 2° (moped)"
1180
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 20 § 2, 2°-4°: who receives an A, E or P plate, including ministers of State, provincial governors, the heads of recognised religions and of the Central Freethought Council, and Belgian members of the European Parliament"
1181
+ - "https://mobilit.belgium.be/fr/route/immatriculer/plaque-personnalisee/introduction # DIV reserves A-0 to A-999999, E-0 to E-999999 and P-0 to P-999999 against personalised inscriptions — corroborating that the letter is an office marker and not a free serial (accessed 2026-08-02)"
1182
+ notes: >-
1183
+ THE A / E / P SUPPLEMENTARY PLATES — Belgium's political-office plates, and
1184
+ an unusually legible piece of constitutional structure on a licence plate:
1185
+ "E" exists because Belgium has Community and Regional governments distinct
1186
+ from the federal one. Like the Court plate these are ADDITIONAL to an
1187
+ ordinary or CD plate and the holder chooses which to display. DIV's
1188
+ personalised-plate page reserves A-, E- and P- ranges up to six digits, which
1189
+ is wider than the one-to-three digits the arrete ministeriel prescribes — the
1190
+ discrepancy is recorded, not averaged, and the statutory bound is what
1191
+ `regex` carries.
1192
+
1193
+ - id: be-personalized-2014
1194
+ class: personalized
1195
+ categories: [car, van, truck, bus, trailer, motorcycle, moped]
1196
+ period: { start: 2014 }
1197
+ period_evidence: enabling-instrument
1198
+ # RECALL-ONLY (PRD-PLATES § 2.7): the regex below accepts any hyphen-grouped
1199
+ # alphanumeric string, which is deliberately WIDER than the grammar DIV
1200
+ # issues — the eight-character cap, the at-least-one-letter rule and the
1201
+ # long list of reserved shapes cannot be expressed without either a
1202
+ # mixed separator/serial character class (forbidden by § 2.8) or an
1203
+ # unescaped dot (rejected by the lint's atom walker). A match here is a
1204
+ # shape hit and nothing more.
1205
+ matching: recall-only
1206
+ format:
1207
+ pattern: "LLL-999"
1208
+ regex: '\A[A-Z0-9]+(?:-[A-Z0-9]+)*\z'
1209
+ max_positions: 8
1210
+ max_positions_note: >-
1211
+ Art. 4 § 1/1, verbatim: "2° l'inscription se compose d'un maximum de
1212
+ 8 caracteres, LE TIRET DE SEPARATION ETANT EGALEMENT CONSIDERE COMME UN
1213
+ CARACTERE; 3° l'inscription ne peut pas se composer uniquement de
1214
+ chiffres; ... 5° l'inscription ne peut pas commencer ou finir par un tiret
1215
+ de separation; 6° le sceau en relief precede l'inscription." DIV states the
1216
+ same cap physically: "elle est composee au maximum de 9 emplacements, dont
1217
+ un emplacement impose (le sceau de la DIV), ce qui permet une combinaison
1218
+ de maximum 8 caracteres."
1219
+ charset:
1220
+ notes: >-
1221
+ Art. 4 § 1/1, 1°: letters and digits are separated by a hyphen, and a
1222
+ hyphen may also separate letter groups from digit groups. 4°: the
1223
+ inscription "ne peut pas creer de confusion avec l'inscription d'autres
1224
+ marques d'immatriculation", enumerating articles 4 § 2 alinea 1, §§ 4 and
1225
+ 5, 5, 6, 7, 9, 12, 13, 14, 16 and 19 — see
1226
+ region_encoding_tables.reserved_shapes_for_personalised_plates for DIV's
1227
+ own rendering of that list.
1228
+ design:
1229
+ plate: { w: 520, h: 110, unit: mm }
1230
+ plate_variants:
1231
+ - { w: 340, h: 210, unit: mm }
1232
+ - { w: 210, h: 140, unit: mm }
1233
+ - { w: 100, h: 120, unit: mm }
1234
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1235
+ foreground: "#9B111E"
1236
+ foreground_spec: "RAL 3003"
1237
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1238
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1239
+ extra_field: { condition: "oldtimer only", content: "a red 26 x 26 mm 'Oldtimer' vignette below the seal, because a personalised inscription cannot also carry the 'O' index (art. 4 § 2 alinea 2)" }
1240
+ binding: owner
1241
+ region_encoding: none
1242
+ sources:
1243
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 4 § 1/1 (the personalised inscription grammar) and art. 4 § 2 alinea 2 (the Oldtimer vignette that replaces the O index)"
1244
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2014032807&table_name=loi # art. 3 a) of the 2014 instrument, which inserted art. 4 § 1/1; art. 9: in force 31-03-2014"
1245
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 23 (reservation of a chosen number against a fee, five months to use it) as replaced by the arrete royal of 28 March 2014, in force 31-03-2014"
1246
+ - "https://mobilit.belgium.be/fr/route/immatriculer/plaque-personnalisee/introduction # DIV's own conditions and the list of forbidden combinations (accessed 2026-08-02)"
1247
+ notes: >-
1248
+ PERSONALISED INSCRIPTIONS, from 31 March 2014. The one Belgian series whose
1249
+ regex is honestly `recall-only`: the sourced grammar is a length cap plus a
1250
+ blacklist of shapes, and neither survives the round-trip discipline. Two
1251
+ details worth keeping: the 2014 text allowed an all-digit inscription for
1252
+ vehicles registered that way BEFORE 1 JANUARY 1954 — a grandfather clause
1253
+ reaching back to the pre-numberplate era — and the 2022 re-cut dropped it,
1254
+ so an all-digit personalised inscription is no longer obtainable. And
1255
+ arrete royal art. 22 § 2 carries the one recorded fact about a retired
1256
+ index: a holder with a reserved number whose plate no longer complies may
1257
+ keep the old number, "a l'exception des marques d'immatriculation commencant
1258
+ par un chiffre (index) '9'", in which case the number survives WITHOUT the
1259
+ leading 9.
1260
+
1261
+ # =========================================================================
1262
+ # G2 — 15 NOVEMBER 2010 to 31 DECEMBER 2020. European format, digit index on
1263
+ # every category. Still very much on the road: arrete ministeriel art. 25
1264
+ # keeps a non-conforming plate valid "jusqu'au moment de la prochaine
1265
+ # immatriculation, reimmatriculation ou renouvellement".
1266
+ # =========================================================================
1267
+ - id: be-motorcycle-2010
1268
+ class: motorcycle
1269
+ categories: [motorcycle]
1270
+ period: { start: 2010, end: 2020 }
1271
+ period_evidence: enabling-instrument
1272
+ matching: strict
1273
+ format:
1274
+ pattern: "9-LLL-999"
1275
+ regex: '\A\d-[A-Z]{3}[- ]\d{3}\z'
1276
+ charset:
1277
+ notes: >-
1278
+ Arrete ministeriel of 8 November 2010, art. 10, verbatim: "L'inscription
1279
+ consiste en un chiffre (index) suivi d'un tiret et en un groupe de trois
1280
+ lettres au-dessus groupe de trois chiffres." From 31-03-2014 the arrete
1281
+ ministeriel of 28 March 2014 added art. 12 § 2's rule that "le groupe de
1282
+ lettres commence par un 'M'" — so a plate from this series issued after
1283
+ 31-03-2014 reads 9-Mxx-999, and one issued before it need not. That split
1284
+ is stated here rather than encoded, because the series has one format and
1285
+ two charset epochs.
1286
+ separator_note: "two-line plate; separator-only class `[- ]` at the stacked group boundary"
1287
+ design:
1288
+ plate: { w: 210, h: 140, unit: mm }
1289
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1290
+ foreground: "#9B111E"
1291
+ foreground_spec: "RAL 3003"
1292
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1293
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed, geometry: "62 x 31 mm, 5 mm from the left and bottom border under the 2010 text" }
1294
+ rear_differs: false
1295
+ binding: owner
1296
+ region_encoding: none
1297
+ sources:
1298
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # art. 9 (moto plate becomes 210 x 140 with a European symbol and annexe 2 characters) and art. 10 (the digit index and the 62 x 31 mm blue zone at 5 mm from the borders); art. 16: in force 15-11-2010"
1299
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2014032807&table_name=loi # art. 7: the letter group must begin with 'M' from 31-03-2014"
1300
+ notes: >-
1301
+ MOTORCYCLES UNDER THE DIGIT INDEX, 15-11-2010 to 31-12-2020. This is the
1302
+ series that makes a bare "1-ABC-123" ambiguous: for ten years a Belgian
1303
+ motorcycle carried the same string shape as a car, and only the 210 x 140
1304
+ plate told them apart. The M INDEX that resolves it arrived on 01-01-2021
1305
+ (be-motorcycle-m-2021); the M LETTER GROUP, which narrows but does not
1306
+ resolve it, arrived on 31-03-2014.
1307
+
1308
+ - id: be-historic-2010
1309
+ class: historic
1310
+ categories: [car, van, truck, bus]
1311
+ period: { start: 2014, end: 2020 }
1312
+ period_evidence: enabling-instrument
1313
+ matching: strict
1314
+ format:
1315
+ pattern: "9-OLL-999"
1316
+ regex: '\A\d-O[A-Z]{2}-\d{3}\z'
1317
+ charset:
1318
+ first_letter_of_group: [O]
1319
+ notes: "arrete ministeriel of 28 March 2014, art. 3 b), verbatim: 'les marques d'immatriculation dont le GROUPE DE LETTRES commence par un \"O\" sont delivrees lors de l'immatriculation ou de la reimmatriculation des vehicules automobiles vises a l'article 2, § 2, 7°, de l'arrete royal du 15 mars 1968'"
1320
+ design:
1321
+ plate: { w: 520, h: 110, unit: mm }
1322
+ plate_variants:
1323
+ - { w: 340, h: 210, unit: mm }
1324
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1325
+ foreground: "#9B111E"
1326
+ foreground_spec: "RAL 3003"
1327
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1328
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1329
+ extra_field: { condition: "personalised numbers only", content: "a red 28 x 28 mm 'Oldtimer' vignette below the seal — it shrank to 26 x 26 mm with the 2022 re-cut" }
1330
+ binding: owner
1331
+ region_encoding: none
1332
+ sources:
1333
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2014032807&table_name=loi # art. 3 b): the O letter group, the 28 x 28 mm Oldtimer vignette; art. 9: in force 31-03-2014"
1334
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # art. 4 § 3 as replaced: 'O' becomes an INDEX from 01-01-2021, closing this series"
1335
+ notes: >-
1336
+ OLDTIMERS UNDER THE DIGIT INDEX, 31-03-2014 to 31-12-2020. period.start is
1337
+ 2014 and not 2010 because the oldtimer marker was carried in a different
1338
+ place before that: under the arrete ministeriel as published in 2001 it was
1339
+ already the first letter of the letter group, but the 2010 European-format
1340
+ instrument left art. 4 § 3 untouched while replacing the surrounding
1341
+ inscription, so the shape 9-Oxx-999 is only pinned from the 2014 text. The
1342
+ pre-2010 shape is be-historic-2001.
1343
+
1344
+ - id: be-trailer-2010
1345
+ class: trailer
1346
+ categories: [trailer]
1347
+ period: { start: 2014, end: 2020 }
1348
+ period_evidence: enabling-instrument
1349
+ matching: strict
1350
+ format:
1351
+ pattern: "9-QLL-999"
1352
+ regex: '\A\d-Q[A-Z]{2}-\d{3}\z'
1353
+ charset:
1354
+ first_letter_of_group: [Q]
1355
+ notes: "arrete ministeriel of 28 March 2014, art. 3 c), verbatim: 'les marques d'immatriculation dont le groupe de lettres commence par un \"Q\" sont delivrees lors de l'immatriculation ou de la reimmatriculation des remorques'"
1356
+ design:
1357
+ plate: { w: 520, h: 110, unit: mm }
1358
+ plate_variants:
1359
+ - { w: 340, h: 210, unit: mm }
1360
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1361
+ foreground: "#9B111E"
1362
+ foreground_spec: "RAL 3003"
1363
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1364
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1365
+ binding: owner
1366
+ region_encoding: none
1367
+ sources:
1368
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2014032807&table_name=loi # art. 3 c): the Q letter group for trailers; art. 9: in force 31-03-2014"
1369
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # 'Q' becomes an INDEX from 01-01-2021, closing this series"
1370
+ notes: >-
1371
+ TRAILERS UNDER THE DIGIT INDEX, 31-03-2014 to 31-12-2020, with "Q" at the
1372
+ head of the letter group. The 2001 text gave trailers "U" OR "Q" and a
1373
+ black-on-white 520 x 110 plate; the 2014 text kept only "Q" and folded
1374
+ trailers into the ordinary ruby-red design; the 2019 text promoted "Q" to
1375
+ the index. Three regimes, three entries, one letter.
1376
+
1377
+ - id: be-taxi-2010
1378
+ class: taxi
1379
+ categories: [car, van]
1380
+ period: { start: 2010, end: 2020 }
1381
+ period_evidence: instrument-in-force
1382
+ matching: strict
1383
+ format:
1384
+ pattern: "9-TXL-999"
1385
+ regex: '\A\d-TX[A-Z]-\d{3}\z'
1386
+ charset:
1387
+ notes: >-
1388
+ The arrete ministeriel as published in 2001, art. 4 § 5: "Les marques
1389
+ d'immatriculation dont le groupe des lettres commence par 'TX' sont
1390
+ delivrees lors de l'immatriculation de vehicules mentionnes dans
1391
+ l'article 28, § 3, premier alinea de l'arrete royal du 20 juillet 2001."
1392
+ Neither the 2010 nor the 2014 instrument touched that paragraph, so the
1393
+ TX letter group simply acquired a digit index on 15-11-2010.
1394
+ design:
1395
+ plate: { w: 520, h: 110, unit: mm }
1396
+ plate_variants:
1397
+ - { w: 340, h: 210, unit: mm }
1398
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1399
+ foreground: "#9B111E"
1400
+ foreground_spec: "RAL 3003"
1401
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1402
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1403
+ binding: owner
1404
+ region_encoding: none
1405
+ sources:
1406
+ - "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # the arrete ministeriel as published 08-08-2001, art. 4 § 5: the 'TX' letter group for taxis"
1407
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # art. 3, which put a digit index in front of every ordinary inscription from 15-11-2010"
1408
+ - "https://mobilit.belgium.be/fr/route/immatriculer/plaque-personnalisee/introduction # DIV reserves 'les lettres TX et TL, afin d'eviter la confusion avec les plaques taxi' — corroborating that both prefixes are live in the register (accessed 2026-08-02)"
1409
+ notes: >-
1410
+ TAXIS UNDER THE DIGIT INDEX, 15-11-2010 to 31-12-2020, letter group "TX".
1411
+ period_evidence is `instrument-in-force` and not `enabling-instrument`
1412
+ because the 2010 instrument did not restate art. 4 § 5 — the TX rule was
1413
+ already there and merely inherited the new index. DIV's personalised-plate
1414
+ reservation list names both "TX" and "TL", which is how the pre-2021 taxi
1415
+ convention survives into the modern T-Xxx / T-Lxx split.
1416
+
1417
+ - id: be-commercial-2010
1418
+ class: dealer
1419
+ categories: [car, van, truck, bus, trailer, motorcycle]
1420
+ period: { start: 2010, end: 2020 }
1421
+ period_evidence: enabling-instrument
1422
+ matching: strict
1423
+ format:
1424
+ pattern: "9-LLL-999"
1425
+ regex: '\A\d-[A-Z]{3}-\d{3}\z'
1426
+ regex_statutory: '\A\d-(?:[A-Z]{3}-\d{3}|\d{3}-[A-Z]{3})\z'
1427
+ charset:
1428
+ notes: >-
1429
+ Arrete ministeriel of 8 November 2010, art. 8, verbatim: "d'un chiffre
1430
+ (index) suivi d'un tiret ... et d'une combinaison de soit trois lettres
1431
+ suivies de trois chiffres, soit trois chiffres suivis de trois lettres."
1432
+ The 2010 text does NOT distinguish the test plate from the dealer plate
1433
+ by any letter — the distinction was carried by the certificate and the
1434
+ vignette, not by the string. That is why the 2019 instrument's Y / Z / V
1435
+ indexes were a real gain in parseability.
1436
+ design:
1437
+ plate: { w: 520, h: 110, unit: mm }
1438
+ plate_variants:
1439
+ - { w: 340, h: 210, unit: mm }
1440
+ - { w: 210, h: 140, unit: mm, note: "motorcycle trade plate, art. 15 as amended in 2010" }
1441
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1442
+ foreground: "#007243"
1443
+ foreground_spec: "RAL 6029"
1444
+ foreground_note: "arrete ministeriel of 8 November 2010, art. 8 and art. 13, verbatim: 'L'inscription et le lisere sont verts menthe (RAL 6029)' — MINT green, replaced by moss green RAL 6005 on 01-01-2021"
1445
+ border: { color: "#007243", spec: "RAL 6029", width_mm: 5 }
1446
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1447
+ extra_field: { position: "below the hyphen, between the letter group and the digit group", content: "a 26 x 26 mm rounded-corner vignette carrying the year of issue in small print, the abbreviation 'DIV', the expiry year in large print, and an oval CV logo between the last two digits" }
1448
+ binding: business
1449
+ region_encoding: none
1450
+ sources:
1451
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # art. 8 (car trade plate: mint green RAL 6029, digit index, the 26 x 26 mm vignette and its four contents) and art. 13 (motorcycle trade plate); art. 16: in force 15-11-2010"
1452
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # art. 12, replacing the trade-plate article with the Y / Z / V letter indexes and moss green RAL 6005, in force 01-01-2021"
1453
+ notes: >-
1454
+ TRADE PLATES UNDER THE DIGIT INDEX, 15-11-2010 to 31-12-2020 — and the only
1455
+ Belgian plate ever specified as MINT green (RAL 6029). It is worth recording
1456
+ that for that decade the string alone could not tell a test plate from a
1457
+ dealer plate; only the vignette and the registration certificate could. The
1458
+ three-way Y / Z / V split that fixes this is be-dealer-essai-y-2021,
1459
+ be-dealer-marchand-z-2021 and be-dealer-professionnelle-v-2021.
1460
+
1461
+ - id: be-temporary-2010
1462
+ class: temporary
1463
+ categories: [car, van, truck, bus, trailer, motorcycle]
1464
+ period: { start: 2010, end: 2020 }
1465
+ period_evidence: enabling-instrument
1466
+ matching: strict
1467
+ format:
1468
+ pattern: "9-999999"
1469
+ regex: '\A\d-\d{6}\z'
1470
+ charset:
1471
+ notes: >-
1472
+ Arrete ministeriel of 8 November 2010, art. 4, verbatim: "d'un chiffre
1473
+ (index) suivi d'un tiret ..., de six chiffres en format ordinaire suivis
1474
+ du millesime en petit format". Digits only — the pre-2021 Belgian
1475
+ temporary plate had no letters at all, which is the single cleanest
1476
+ structural tell in the whole system.
1477
+ fields_note: "the two-digit year is printed in SMALL format after the six ordinary digits and is not part of the serial; a month vignette (red for transit, blue for provisional) completes the expiry date"
1478
+ design:
1479
+ plate: { w: 520, h: 110, unit: mm }
1480
+ plate_variants:
1481
+ - { w: 340, h: 210, unit: mm, note: "index and hyphen, then three digits above three digits, the lower group preceded by the small-format year" }
1482
+ - { w: 210, h: 140, unit: mm, note: "motorcycle form, art. 11 of the 2010 instrument" }
1483
+ background: { color: "#CC0605", finish: retroreflective, hex_basis: spec, spec: "RAL 3020", spec_note: "arrete ministeriel of 8 November 2010, art. 4 and art. 11: 'un fond rouge signalisation (RAL 3020)'" }
1484
+ foreground: "#FFFFFF"
1485
+ border: { color: "#FFFFFF", width_mm: 5 }
1486
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1487
+ extra_field: { content: "a rectangular vignette carrying the expiry month; RED for a transit registration, BLUE for a provisional one" }
1488
+ binding: vehicle
1489
+ region_encoding: none
1490
+ sources:
1491
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # art. 4 (car temporary plate: RAL 3020, digit index, six digits, small-format year) and art. 11 (motorcycle temporary plate); art. 16: in force 15-11-2010"
1492
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2019121519&table_name=loi # the 2019 instrument replacing this with the W / X letter scheme, in force 01-01-2021"
1493
+ notes: >-
1494
+ SHORT-DURATION TEMPORARY PLATES UNDER THE DIGIT INDEX, 15-11-2010 to
1495
+ 31-12-2020: red ground, white characters, and SEVEN DIGITS with no letter
1496
+ anywhere. Distinct from be-international-2010, which shared the red-plate
1497
+ chapter's neighbourhood but was white with ruby-red characters and a fixed
1498
+ index of eight. The transit/provisional distinction was, and still is,
1499
+ carried by the vignette colour rather than by the number.
1500
+
1501
+ - id: be-international-2010
1502
+ class: temporary
1503
+ categories: [car, van, truck, bus, motorcycle]
1504
+ period: { start: 2010, end: 2020 }
1505
+ period_evidence: enabling-instrument
1506
+ matching: strict
1507
+ format:
1508
+ pattern: "8-LLL-999"
1509
+ regex: '\A8-[A-Z]{3}-\d{3}\z'
1510
+ charset:
1511
+ index: ["8"]
1512
+ notes: >-
1513
+ Arrete ministeriel of 8 November 2010, art. 5, verbatim: "du CHIFFRE
1514
+ (INDEX) HUIT suivi d'un tiret situe sur la ligne mediane horizontale de
1515
+ la marque d'immatriculation et d'une combinaison de trois lettres suivies
1516
+ de trois chiffres". A fixed index digit, reserved to one category — the
1517
+ only such reservation Belgian law has ever made.
1518
+ design:
1519
+ plate: { w: 520, h: 110, unit: mm }
1520
+ plate_variants:
1521
+ - { w: 340, h: 210, unit: mm }
1522
+ - { w: 210, h: 140, unit: mm, note: "motorcycle form, art. 12 of the 2010 instrument, same index eight" }
1523
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1524
+ foreground: "#9B111E"
1525
+ foreground_spec: "RAL 3003"
1526
+ border: { color: "#9B111E", spec: "RAL 3003", width_mm: 5 }
1527
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed }
1528
+ binding: vehicle
1529
+ region_encoding: none
1530
+ sources:
1531
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # art. 5 (car international plate, index eight) and art. 12 (motorcycle international plate, index eight); art. 16: in force 15-11-2010"
1532
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # art. 6 as it stands today, which no longer reserves any index"
1533
+ notes: >-
1534
+ THE INDEX-EIGHT PLATE, 15-11-2010 to 31-12-2020 — Belgium's long-duration
1535
+ temporary registration for diplomatic and NATO-related holders, and the one
1536
+ period in which such a plate could be identified from its string alone.
1537
+ Recorded here precisely because the capability was LOST on 01-01-2021 when
1538
+ the 2019 instrument sent this plate back to the ordinary inscription (see
1539
+ be-international-2021). A parse API can therefore date an "8-ABC-123" plate
1540
+ to this decade with high confidence, which no other Belgian shape allows.
1541
+
1542
+ # =========================================================================
1543
+ # G1 — 1 OCTOBER 2001 to 14 NOVEMBER 2010. The national format: a small
1544
+ # 340 x 110 mm plate, red on white, and NO European band on ordinary cars.
1545
+ # Arrete ministeriel art. 25 keeps these plates legally valid until the
1546
+ # vehicle's next registration, re-registration or renewal, so they are still
1547
+ # on Belgian roads today.
1548
+ # =========================================================================
1549
+ - id: be-standard-2001
1550
+ class: standard
1551
+ categories: [car, van, truck, bus]
1552
+ period: { start: 2001, end: 2010 }
1553
+ period_evidence: instrument-in-force
1554
+ matching: strict
1555
+ format:
1556
+ pattern: "LLL-999"
1557
+ regex: '\A[A-Z]{3}-\d{3}\z'
1558
+ regex_statutory: '\A(?:[A-Z]{3}-\d{3}|[A-Z]-\d{4}|[A-Z]{2}-\d{3})\z'
1559
+ charset:
1560
+ notes: >-
1561
+ Arrete ministeriel as published 08-08-2001, art. 4 § 1, verbatim:
1562
+ "L'inscription est constituee d'une combinaison de trois lettres suivies
1563
+ de trois chiffres, ou de la combinaison soit d'une lettre et de quatre
1564
+ chiffres, soit de deux lettres et de trois chiffres. Les lettres sont
1565
+ separees des chiffres par un tiret: AU CENTRE de la marque
1566
+ d'immatriculation pour la premiere combinaison mentionnee, VERS LE BAS de
1567
+ celle-ci pour les autres combinaisons." The hyphen's HEIGHT therefore
1568
+ encoded which of the three shapes was in use — a typographic tell no
1569
+ regex can carry, recorded here instead. The two short shapes are older
1570
+ stock kept in issue and are held in regex_statutory.
1571
+ design:
1572
+ plate: { w: 340, h: 110, unit: mm }
1573
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec, spec_note: "art. 4 § 1: 'La marque d'immatriculation ordinaire a un fond blanc'; art. 3 § 1: retroreflective ground" }
1574
+ foreground: "#9B111E"
1575
+ foreground_note: >-
1576
+ art. 4 § 1 (2001), verbatim: "L'inscription et le lisere sont ROUGES" — a
1577
+ colour NAME with no code. RAL 3003 first appears in the arrete ministeriel
1578
+ of 8 November 2010, so this hex carries hex_basis observed, not spec.
1579
+ foreground_hex_basis: observed
1580
+ border: { color: "#9B111E", width_mm: 5 }
1581
+ band: { side: none }
1582
+ band_note: >-
1583
+ NO EUROPEAN BAND. Art. 4 § 1 as published in 2001 says nothing about a
1584
+ European symbol, while art. 4 § 4 (trailers) and art. 10 (trade plates) both
1585
+ specify one in detail — so the omission is deliberate and sourced, not an
1586
+ oversight in the reading. Belgium put the euroband on its ORDINARY plate
1587
+ only on 15 November 2010, later than any other founding Member State.
1588
+ characters: { h: 70, w: 35, w_digit_one: 20, w_letter_i: 9, stroke: 9, hyphen_w: 12, hyphen_h: 6, unit: mm }
1589
+ seal: { name: "sceau en relief CV", h: 20, w: 12, unit: mm }
1590
+ rear_differs: false
1591
+ binding: owner
1592
+ region_encoding: none
1593
+ sources:
1594
+ - "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # the arrete ministeriel of 23 July 2001 AS PUBLISHED in the Moniteur belge of 08-08-2001: art. 3 (340 x 110 mm, rounded corners, 5 mm border, 1 mm relief, character metrics, 20 x 12 mm CV seal) and art. 4 § 1 (white ground, red inscription and border, the three inscription shapes and the hyphen-height rule)"
1595
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014154&caller=SUM&view_numac=2001014154f # the Justel header giving 'Entree en vigueur: 1 octobre 2001' and art. 25, which keeps superseded plates valid until the next registration"
1596
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # the instrument that closed this series on 14-11-2010"
1597
+ notes: >-
1598
+ THE PRE-EUROPEAN BELGIAN PLATE, 01-10-2001 to 14-11-2010: 340 x 110 mm, red
1599
+ on white, no blue band. PERIOD CAVEAT, stated plainly: 2001 is the in-force
1600
+ date of the arrete ministeriel that STATES this format, not the date the
1601
+ format began. The three-letters-three-digits plate long predates it — the
1602
+ 2001 instrument replaced the arrete ministeriel of 30 August 1967, whose text
1603
+ Justel does not carry in consolidated form (probed 2026-08-02, empty
1604
+ response). FOLKLORE FLAG: the enthusiast web dates this format to 1973
1605
+ essentially unanimously; that year is NOT asserted here and remains unsourced
1606
+ until the 1967 instrument or its amendments are obtained from the Moniteur
1607
+ belge archive. Also from this era and deliberately not modelled as series:
1608
+ the "EUR" plate for European institutions (art. 8: blue on white, "EUR" in
1609
+ reduced format inside a ring of twelve yellow stars, then four digits or
1610
+ three digits and a letter) and the "EUROCONTROL" plate (art. 9: three digits
1611
+ or two digits and a letter, then "EURO" in reduced format). Both were
1612
+ abrogated by art. 7 of the arrete ministeriel of 8 November 2010.
1613
+
1614
+ - id: be-trailer-2001
1615
+ class: trailer
1616
+ categories: [trailer]
1617
+ period: { start: 2001, end: 2010 }
1618
+ period_evidence: instrument-in-force
1619
+ matching: strict
1620
+ format:
1621
+ pattern: "LLL-999"
1622
+ regex: '\A[A-Z]{3}-\d{3}\z'
1623
+ regex_strict: '\A[UQ][A-Z]{2}-\d{3}\z'
1624
+ charset:
1625
+ first_letter_of_group: [U, Q]
1626
+ notes: "art. 4 § 4 (2001), verbatim: 'Les marques d'immatriculation dont le groupe de lettres commence par un \"U\" ou un \"Q\" sont delivrees lors de l'immatriculation de remorques.'"
1627
+ design:
1628
+ plate: { w: 520, h: 110, unit: mm }
1629
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1630
+ foreground: "#000000"
1631
+ foreground_note: "art. 4 § 4 (2001), verbatim: 'Ces marques d'immatriculation ont un fond blanc. L'inscription et le lisere sont NOIRS.' Belgian trailers were black-on-white while Belgian cars were red-on-white."
1632
+ border: { color: "#000000", width_mm: 5 }
1633
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed, geometry: "blue zone against the left edge, 100 mm high x 45 mm wide" }
1634
+ characters: { h: 75, w: 45, w_digit_one: 25, w_letter_i: 11, stroke: 11, hyphen_w: 18, hyphen_h: 11, unit: mm }
1635
+ binding: owner
1636
+ region_encoding: none
1637
+ sources:
1638
+ - "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # art. 4 § 4 as published 08-08-2001: the U/Q letter groups, 520 x 110 mm, black on white, the European symbol with its 100 x 45 mm blue zone, and the character metrics"
1639
+ notes: >-
1640
+ THE BELGIAN TRAILER PLATE, 01-10-2001 to 14-11-2010 — and the reason this
1641
+ file insists on the euroband finding: for nine years a Belgian TRAILER
1642
+ carried the twelve stars and the "B" while the CAR TOWING IT did not, because
1643
+ art. 4 § 4 specified a European symbol and art. 4 § 1 did not. It was also
1644
+ bigger (520 x 110 against the car's 340 x 110) and a different colour
1645
+ (black against red). Trade plates (art. 10) were the other pre-2010 euroband
1646
+ carrier.
1647
+
1648
+ - id: be-motorcycle-2001
1649
+ class: motorcycle
1650
+ categories: [motorcycle]
1651
+ period: { start: 2001, end: 2010 }
1652
+ period_evidence: instrument-in-force
1653
+ matching: strict
1654
+ format:
1655
+ pattern: "LLL-999"
1656
+ regex: '\A[A-Z]{3}[- ]\d{3}\z'
1657
+ regex_strict: '\A[MW][A-Z]{2}[- ]\d{3}\z'
1658
+ charset:
1659
+ first_letter_of_group: [M, W]
1660
+ notes: "art. 12 (2001), verbatim: 'L'inscription est constituee d'un groupe de trois lettres au dessus d'un groupe de trois chiffres. § 2. Le groupe de lettres commence par un \"M\" ou un \"W\".'"
1661
+ separator_note: "two-line plate with no index and no printed glyph between the groups; the position is the separator-only class `[- ]` (PRD-PLATES § 2.8)"
1662
+ design:
1663
+ plate: { w: 140, h: 175, unit: mm }
1664
+ background: { color: "#F9B700", finish: retroreflective, hex_basis: observed, spec_note: "art. 12 § 1 (2001), verbatim: 'La marque d'immatriculation ordinaire a un fond JAUNE. L'inscription et le lisere sont noirs.' The statute names the colour without a code, so the hex is observed within a named colour." }
1665
+ foreground: "#000000"
1666
+ border: { color: "#000000", width_mm: 5 }
1667
+ band: { side: none }
1668
+ band_note: "no European symbol on the 2001 motorcycle plate; art. 11 as published mentions only inscription, seal and security elements. The euroband arrived with art. 9 of the arrete ministeriel of 8 November 2010."
1669
+ characters: { h: 50, w: 30, w_digit_one: 17, w_letter_i: 7, stroke: 7, unit: mm }
1670
+ seal: { name: "sceau en relief CV", h: 15, w: 9, unit: mm }
1671
+ rear_differs: false
1672
+ binding: owner
1673
+ region_encoding: none
1674
+ sources:
1675
+ - "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # arts. 11-12 as published 08-08-2001: the moto plate's construction and character metrics, the 140 x 175 mm PORTRAIT format, the yellow ground with black inscription and border, and the M/W letter rule"
1676
+ notes: >-
1677
+ THE YELLOW BELGIAN MOTORCYCLE PLATE, 01-10-2001 to 14-11-2010 — the only
1678
+ Belgian plate that was ever yellow, and the only one that was taller than it
1679
+ was wide (140 mm wide x 175 mm high; today's is 210 x 140, landscape). It
1680
+ carried no index and no European band. A three-letter group beginning "M" or
1681
+ "W" above three digits, on a portrait yellow plate, is therefore a
1682
+ one-glance date range for a Belgian motorcycle.
1683
+
1684
+ - id: be-historic-2001
1685
+ class: historic
1686
+ categories: [car, van, truck, bus]
1687
+ period: { start: 2001, end: 2010 }
1688
+ period_evidence: instrument-in-force
1689
+ matching: strict
1690
+ format:
1691
+ pattern: "OLL-999"
1692
+ regex: '\AO[A-Z]{2}-\d{3}\z'
1693
+ charset:
1694
+ first_letter_of_group: [O]
1695
+ notes: "art. 4 § 3 (2001), verbatim: 'Les marques d'immatriculation dont le groupe de lettres commence par un \"O\" sont delivrees lors de l'immatriculation des vehicules automobiles visees a l'article 2, § 2, 7°, de l'arrete royal du 15 mars 1968 ... L'inscription est constituee d'une combinaison de trois lettres suivies de trois chiffres.'"
1696
+ design:
1697
+ plate: { w: 340, h: 110, unit: mm }
1698
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1699
+ foreground: "#9B111E"
1700
+ foreground_hex_basis: observed
1701
+ border: { color: "#9B111E", width_mm: 5 }
1702
+ band: { side: none }
1703
+ characters: { h: 70, w: 35, w_digit_one: 20, w_letter_i: 9, stroke: 9, unit: mm }
1704
+ binding: owner
1705
+ region_encoding: none
1706
+ sources:
1707
+ - "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # art. 4 § 3 as published 08-08-2001: the O letter group, restricted to the three-letters-three-digits shape"
1708
+ notes: >-
1709
+ OLDTIMERS UNDER THE NATIONAL FORMAT, 01-10-2001 to 14-11-2010. Note the
1710
+ narrowing that art. 4 § 3 performs: an ordinary plate could take any of three
1711
+ shapes, but an oldtimer plate was confined to three letters and three digits,
1712
+ so "O" plus two letters plus three digits is the complete grammar. The
1713
+ eligibility test was a cross-reference to art. 2 § 2, 7° of the
1714
+ technical-conditions decree of 15 March 1968 rather than an age in years;
1715
+ the plain thirty-year test is a 2023 innovation (see be-historic-o-2021).
1716
+
1717
+ - id: be-diplomatic-2001
1718
+ class: diplomatic
1719
+ categories: [car, van]
1720
+ period: { start: 2001, end: 2010 }
1721
+ period_evidence: instrument-in-force
1722
+ matching: strict
1723
+ format:
1724
+ pattern: "CD-L-999"
1725
+ regex: '\ACD-[A-Z]-\d{3}\z'
1726
+ charset:
1727
+ fixed_letters: "CD"
1728
+ notes: "art. 7 (2001), verbatim: 'L'inscription comporte les lettres \"CD\" de couleur VERTE, suivies d'une lettre ROUGE et de trois chiffres ROUGES. Les lettres \"CD\" sont separees de l'autre lettre et des chiffres par un tiret au bas de la marque d'immatriculation.'"
1729
+ design:
1730
+ plate: { w: 340, h: 110, unit: mm }
1731
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1732
+ foreground: "#9B111E"
1733
+ foreground_hex_basis: observed
1734
+ foreground_note: >-
1735
+ A TWO-COLOUR INSCRIPTION, unique in this dataset: the letters "CD" are
1736
+ GREEN and the following letter and three digits are RED, on a white ground
1737
+ with a red border. `design.foreground` records the dominant red because the
1738
+ schema carries one foreground; the green "CD" is recorded in
1739
+ `foreground_secondary`. Neither colour is given a code in the 2001 text.
1740
+ foreground_secondary: { color: "#007A33", applies_to: "the letters CD", hex_basis: observed }
1741
+ border: { color: "#9B111E", width_mm: 5 }
1742
+ band: { side: none }
1743
+ binding: owner
1744
+ region_encoding: none
1745
+ sources:
1746
+ - "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # art. 7 as published 08-08-2001: white ground, red border, green 'CD', red letter and three red digits, hyphens set low"
1747
+ - "https://www.ejustice.just.fgov.be/cgi_loi/change_lg.pl?language=fr&la=F&cn=2010110801&table_name=loi # art. 6, which made the whole inscription ruby red RAL 3003 from 15-11-2010"
1748
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 40 § 1: plates issued under the abrogated 1953 decree stay valid EXCEPT 'CD' plates whose number is 'CD' followed by four digits — the sourced shape of the pre-2001 Belgian diplomatic plate, and the only one the 2001 reform withdrew outright"
1749
+ notes: >-
1750
+ THE TWO-COLOUR CD PLATE, 01-10-2001 to 14-11-2010. Green "CD", then one red
1751
+ letter and three red digits — a design the 2010 European-format instrument
1752
+ abolished in favour of a single ruby red. It is the only plate in the L0/L1
1753
+ dataset whose inscription is specified in two colours, and it is a genuine
1754
+ schema stressor: `design.foreground` is a scalar, so the second colour has to
1755
+ live in an ad-hoc key. Note also the single letter where the modern plate has
1756
+ two, which makes the pre-2010 CD number four characters shorter. THE ONE
1757
+ SOURCED PRE-2001 SHAPE IN THIS FILE sits behind it: arrete royal art. 40 § 1
1758
+ grandfathered every plate issued under the abrogated 1953 decree except a CD
1759
+ plate reading "CD" plus FOUR DIGITS, which tells us both what the old
1760
+ diplomatic plate looked like and that it alone was forcibly replaced.
1761
+
1762
+ - id: be-commercial-2001
1763
+ class: dealer
1764
+ categories: [car, van, truck, bus, trailer]
1765
+ period: { start: 2001, end: 2010 }
1766
+ period_evidence: instrument-in-force
1767
+ matching: strict
1768
+ format:
1769
+ pattern: "ZLL-999"
1770
+ regex: '\AZ[A-Z]{2}-\d{3}\z'
1771
+ charset:
1772
+ first_letter_of_group: [Z]
1773
+ notes: >-
1774
+ Art. 10 § 3 (2001), verbatim: "1. la plaque essai 'auto': les deux
1775
+ premieres lettres 'ZX', 'ZY' ou 'ZZ' sont suivies d'une troisieme lettre,
1776
+ a l'exclusion des lettres 'M', 'Q', 'U' et 'W'; 2. la plaque essai
1777
+ 'remorque': les deux premieres lettres 'ZZ' sont suivies de la troisieme
1778
+ lettre 'Q' ou 'U'; 3. la plaque marchand 'auto': la premiere lettre 'Z'
1779
+ est suivie d'une deuxieme lettre a l'exclusion des lettres 'M', 'Q', 'U',
1780
+ et 'W' a 'Z'; 4. la plaque marchand 'remorque' la premiere lettre 'Z' est
1781
+ suivie d'une deuxieme lettre 'Q' ou 'U'."
1782
+ design:
1783
+ plate: { w: 520, h: 110, unit: mm }
1784
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
1785
+ foreground: "#007243"
1786
+ foreground_hex_basis: observed
1787
+ foreground_note: "art. 10 § 1 (2001): 'L'inscription et le bord sont VERTS' — a colour name with no code; RAL 6029 first appears in 2010 and RAL 6005 in 2021"
1788
+ border: { color: "#007243", width_mm: 5 }
1789
+ band: { side: left, color: "#003399", content: eu-stars+B, hex_basis: observed, geometry: "blue zone against the left edge, 100 mm high x 45 mm wide" }
1790
+ characters: { h: 75, w: 45, w_digit_one: 25, w_letter_i: 11, stroke: 11, hyphen_w: 18, hyphen_h: 11, unit: mm }
1791
+ extra_field: { position: "between the last digit and the right edge", content: "a green rounded-corner vignette 45 x 38 mm carrying the year of issue, 'DIV', the expiry year in large print and an oval CV logo" }
1792
+ binding: business
1793
+ region_encoding: none
1794
+ sources:
1795
+ - "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # art. 10 as published 08-08-2001: 520 x 110 mm, white ground, green inscription and border, the European symbol, the 45 x 38 mm vignette and the four ZX/ZY/ZZ/Z sub-schemes"
1796
+ notes: >-
1797
+ TRADE PLATES UNDER THE NATIONAL FORMAT, 01-10-2001 to 14-11-2010 — the
1798
+ second pre-2010 Belgian plate to carry the euroband, and the ancestor of both
1799
+ the modern "Y" test plate and the modern "Z" dealer plate: art. 10 § 3
1800
+ distinguished them by the SECOND letter ("ZX"/"ZY"/"ZZ" for a test plate, any
1801
+ other second letter for a dealer plate), and by whether the third letter was
1802
+ "Q" or "U" for a trailer. `regex` covers the whole Z family; the four
1803
+ sub-schemes are recorded in charset rather than split into four series,
1804
+ because the 2001 text presents them as characteristics of one plate type.
1805
+
1806
+ - id: be-temporary-2001
1807
+ class: temporary
1808
+ categories: [car, van, truck, bus, trailer, motorcycle]
1809
+ period: { start: 2001, end: 2010 }
1810
+ period_evidence: instrument-in-force
1811
+ matching: strict
1812
+ format:
1813
+ pattern: "999999"
1814
+ regex: '\A\d{6}\z'
1815
+ charset:
1816
+ notes: "art. 5 § 1 (2001), verbatim: 'L'inscription se compose des deux derniers chiffres du millesime en PETIT FORMAT, suivis de six chiffres en format ordinaire.' The serial proper is the six ordinary digits; the year is a smaller typographic field ahead of them, 32 mm high against the serial's full height."
1817
+ fields_note: "small-format year digits 32 x 16 mm (the digit '1' 9 mm), stroke 4 mm, all set the same distance from the bottom edge"
1818
+ design:
1819
+ plate: { w: 340, h: 110, unit: mm }
1820
+ plate_variants:
1821
+ - { w: 180, h: 140, unit: mm, note: "motorcycle form, art. 13 (2001): two stacked groups of three digits with the small year digits to the left of the lower group" }
1822
+ background: { color: "#CC0605", finish: retroreflective, hex_basis: observed, spec_note: "art. 5 § 1 (2001): 'ont un fond ROUGE. L'inscription et le lisere sont blancs' — a colour name; RAL 3020 first appears in the 2010 instrument" }
1823
+ foreground: "#FFFFFF"
1824
+ border: { color: "#FFFFFF", width_mm: 5 }
1825
+ band: { side: none }
1826
+ extra_field: { position: "above the year digits", content: "a rounded-corner vignette 45 x 38 mm carrying an individual number in small black print and the expiry MONTH in large white print, with an oval CV logo between the month's two digits; RED for transit, BLUE for provisional" }
1827
+ binding: vehicle
1828
+ region_encoding: none
1829
+ sources:
1830
+ - "https://www.ejustice.just.fgov.be/cgi/article_body.pl?language=fr&caller=summary&pub_date=01-08-08&numac=2001014154 # art. 5 as published 08-08-2001 (car temporary plate: red ground, white inscription, small-format year plus six digits, the 45 x 38 mm month vignette and its red/blue transit/provisional rule) and art. 13 (motorcycle form, 180 x 140 mm)"
1831
+ - "https://www.ejustice.just.fgov.be/cgi_loi/article.pl?language=fr&lg_txt=f&numac_search=2001014153&caller=SUM&view_numac=2001014153f # arrete royal art. 1, 4°-5° defining 'immatriculation transit' (import-duty and VAT exemption granted) against 'immatriculation provisoire' (no exemption) — the distinction the vignette colour carries"
1832
+ notes: >-
1833
+ SHORT-DURATION TEMPORARY PLATES UNDER THE NATIONAL FORMAT, 01-10-2001 to
1834
+ 14-11-2010: red ground, white digits, no index, no European band, and a
1835
+ month-only vignette rather than the day-and-month pair used from 2021. The
1836
+ transit/provisional split is worth carrying into any parse model because it
1837
+ is FISCAL, not operational: arrete royal art. 1, 4° defines a transit
1838
+ registration as one where the FPS Finance has granted exemption from import
1839
+ duty and VAT (or VAT alone), and art. 1, 5° defines a provisional
1840
+ registration as one where it has not.