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,1091 @@
1
+ # plates/se.yml — Sweden (PRD-PLATES gate L1).
2
+ #
3
+ # EVERY format, colour, dimension and class claim here comes from one of four
4
+ # primary layers, and each series says which:
5
+ #
6
+ # 1. förordningen (2019:383) om fordons registrering och användning —
7
+ # the ordinance in force since 1 July 2019, which REPLACED förordningen
8
+ # (2001:650) om vägtrafikregister (repealed by förordning 2019:384).
9
+ # It carries the registration-number rule itself.
10
+ # 2. Transportstyrelsens föreskrifter och allmänna råd (TSFS 2015:63) om
11
+ # registrering av fordon m.m. i vägtrafikregistret, in force 1 January
12
+ # 2016, consolidated to TSFS 2026:72 — the delegated instrument that
13
+ # carries every plate DIMENSION, COLOUR and layout rule. 15 kap. 1 §
14
+ # andra stycket förordningen (2019:383) is the bemyndigande: "Transport-
15
+ # styrelsen får meddela ytterligare föreskrifter om registreringsbevis,
16
+ # utformningen av registreringsskyltar, hur personliga fordonsskyltar får
17
+ # användas och om förfarandet i de avseenden som regleras i denna
18
+ # förordning."
19
+ # 3. Repealed-but-citable ancestors where they DATE something the current
20
+ # instruments do not: bilregisterkungörelsen (1972:599), förordningen
21
+ # (1988:964) om skyltar för beskickningsfordon, förordningen (1988:965)
22
+ # om personliga fordonsskyltar, and the amending förordning (1998:788).
23
+ # 4. Transportstyrelsen's own published pages and news items — the ONLY
24
+ # source for the issued letter alphabet, the blocked letter combinations,
25
+ # and the day the letter-final format began. Where a page has been taken
26
+ # down the archived capture is cited with its capture timestamp.
27
+ #
28
+ # THE FIVE STRUCTURAL FACTS THAT SHAPE THIS FILE
29
+ #
30
+ # 1. ONE REGISTRATION NUMBER, TWO SHAPES, TWO DATES. 3 kap. 1 § förordningen
31
+ # (2019:383), verbatim:
32
+ # "Registreringsnumret ska bestå av
33
+ # 1. tre bokstäver och tre siffror, eller
34
+ # 2. tre bokstäver, två siffror och en bokstav."
35
+ # Those are alternatives of ONE issuance system, but they started 47 years
36
+ # apart, so they are modelled as two `standard` series. Splitting them is
37
+ # the single highest-value modelling choice in this file: a Swedish plate
38
+ # whose last character is a LETTER cannot predate 16 January 2019, and that
39
+ # is the only date signal a Swedish plate string carries at all.
40
+ # Every non-standard plate type (taxi, saluvagn, tävling, interim,
41
+ # provisorisk, terrängskoter, motorcycle) carries whichever shape the
42
+ # vehicle's registration number has, so those series take the UNION regex
43
+ # with one representative `pattern` — the de.yml Anlage-1 treatment.
44
+ #
45
+ # 2. THE LETTER-FINAL SHAPE IS DATED TWICE, AND THE COMMON "2019 FÖRORDNING"
46
+ # STORY IS WRONG. The enabling amendment is förordning (2017:100), utfärdad
47
+ # 16 February 2017, which substituted the two-alternative wording into
48
+ # 7 kap. 1 § förordningen (2001:650) "i stället för lydelsen enligt
49
+ # förordningen (2016:1216)" — and 2016:1216 entered into force 20 MAY 2017.
50
+ # So the letter-final shape became LEGAL on 2017-05-20. Transportstyrelsen
51
+ # then announced, on 2019-01-16: "Idag tilldelas de första registrerings-
52
+ # skyltarna med det nya formatet för registreringsnummer, där sista siffran
53
+ # även kan vara en bokstav." So it became ISSUED on 2019-01-16.
54
+ # period.start records the ISSUANCE date (2019) because that is what a
55
+ # parse API infers from; the legal date sits in the notes. förordningen
56
+ # (2019:383) merely re-enacted the same words on 1 July 2019 — it is NOT
57
+ # the instrument that created the format, and any dataset that says so is
58
+ # repeating a plausible-looking coincidence of numbers.
59
+ #
60
+ # 3. THE ISSUED ALPHABET IS AN AUTHORITY STATEMENT, NOT A REGULATION. Neither
61
+ # the förordning nor TSFS 2015:63 restricts the letters. Transportstyrelsen
62
+ # states the restriction in its own words (news, 2015-10-07):
63
+ # "I och med att några bokstäver av läsbarhetsskäl är undantagna från
64
+ # tilldelning (I, Q, V, Å, Ä och Ö) samt att 91 bokstavskombinationer
65
+ # sedan tidigare är spärrade från tilldelning, ger det nuvarande
66
+ # systemet 11,1 miljoner tänkbara bokstavskombinationer."
67
+ # and, for the new shape (news, 2019-01-16):
68
+ # "I de nya registreringsnumren används inte bokstaven O som sista
69
+ # tecken, eftersom det är lätt att missta bokstaven O för siffran 0.
70
+ # Sedan tidigare används inte heller bokstäverna I, Q, V, Å, Ä och Ö."
71
+ # Å, Ä and Ö are outside this dataset's serial alphabet anyway
72
+ # (_meta/separators.yml), so only I, Q and V bite — plus O in the final
73
+ # position of the new shape. This is what `regex_strict` carries; `regex`
74
+ # cannot, because the lint generates every letter A-Z from an "L".
75
+ #
76
+ # 4. NO GEOGRAPHY, AND ONLY ONE DECODABLE DIMENSION. The länsbokstav (county
77
+ # letter) was removed when this system came in — Transportstyrelsen,
78
+ # 2019-01-16: "Senaste gången registreringsnumren ändrades var 1972. Då
79
+ # togs länsbokstaven bort och formatet med tre siffror och tre bokstäver
80
+ # infördes." Since then a Swedish registration number encodes NOTHING:
81
+ # no region, no year, no vehicle class. Allocation is sequential-ish but
82
+ # numbers from deregistered vehicles are RE-USED ("de nya numren kommer att
83
+ # användas parallellt med att gamla registreringsnummer återanvänds"), so
84
+ # even letter-block age inference is unsound. The one exception worth
85
+ # recording: first letters Y and Z entered service only in October 2015, so
86
+ # a Y- or Z-initial number cannot predate that month. The ONLY Swedish
87
+ # plate with a real decode table is the beskickningsskylt (diplomatic) —
88
+ # see plates/_decode/se-diplomatic.yml.
89
+ #
90
+ # 5. SWEDEN HAS NO HISTORIC-VEHICLE PLATE AND NO EXPORT PLATE. Both are
91
+ # genuine negative findings, not gaps in this pass. Veteran vehicles keep
92
+ # their ordinary plates (age affects inspection intervals, not plates), and
93
+ # export is handled by TILLFÄLLIG REGISTRERING — the red interimsskylt —
94
+ # under 15-22 §§ lagen (2019:370) and 10 kap. förordningen (2019:383).
95
+ # The old exportvagnskungörelsen (1964:39) and turistvagnskungörelsen
96
+ # (1972:601) regimes are gone; 2 kap. of the current förordning knows only
97
+ # tillfällig registrering.
98
+ #
99
+ # SEPARATOR POLICY: the printed gap between letter group and digit group is a
100
+ # GAP, not a glyph — TSFS 2015:63 6 kap. 4 § says only "tre bokstäver till
101
+ # vänster och tre siffror till höger". Per PRD-PLATES §2.6 that gap is written
102
+ # as the emitted SPACE in `pattern` and as an optional " ?" in every regex.
103
+ #
104
+ # REGEX POLICY: `format.regex` is the lint-round-trippable regex over the full
105
+ # A-Z/0-9 alphabet; `format.regex_strict` carries the sourced issuing alphabet
106
+ # (no I, Q, V; no final O in the 2019 shape). No `regex_statutory` is used:
107
+ # the Swedish statute is not wider than what is issued, it is silent.
108
+ #
109
+ # FONT: NO TYPEFACE IS MANDATED. TSFS 2015:63 prescribes plate outer
110
+ # dimensions, colours, the black frame and the left/right and top/bottom
111
+ # arrangement of the character groups, and nothing else — no named font, no
112
+ # character height, no stroke width, and no statutory Schriftmuster of the
113
+ # German or Spanish kind. Per PRD-PLATES §6 the render layer therefore has no
114
+ # licensable font to clear and no drawing to derive from either; the schematic
115
+ # fallback applies and the gap is recorded.
116
+ jurisdiction: se
117
+ authority:
118
+ name: Transportstyrelsen
119
+ url: "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/"
120
+ binding: vehicle
121
+ instrument:
122
+ citation: "Förordning (2019:383) om fordons registrering och användning, i lydelse t.o.m. SFS 2024:998"
123
+ in_force: "2019-07-01"
124
+ replaces: "Förordning (2001:650) om vägtrafikregister (upphävd 2019-07-01 genom förordning 2019:384)"
125
+ delegated: "Transportstyrelsens föreskrifter och allmänna råd (TSFS 2015:63) om registrering av fordon m.m. i vägtrafikregistret, i kraft 2016-01-01, konsoliderad t.o.m. TSFS 2026:72"
126
+ source: "https://data.riksdagen.se/dokument/sfs-2019-383.html # consolidated text; Övergångsbestämmelser 2019:383 p.1 'Denna förordning träder i kraft den 1 juli 2019'; accessed 2026-08-02"
127
+
128
+ # ---------------------------------------------------------------------------
129
+ # Jurisdiction-wide facts, cited once and referenced per series.
130
+ # ---------------------------------------------------------------------------
131
+ common:
132
+ number_rule:
133
+ text: >-
134
+ 3 kap. 1 § förordningen (2019:383), verbatim: "Transportstyrelsen ska i
135
+ samband med registreringen av ett fordon tilldela det ett registrerings-
136
+ nummer. Registreringsnumret ska bestå av 1. tre bokstäver och tre siffror,
137
+ eller 2. tre bokstäver, två siffror och en bokstav."
138
+ source: "https://data.riksdagen.se/dokument/sfs-2019-383.html # 3 kap. 1 §; accessed 2026-08-02"
139
+ layout:
140
+ text: >-
141
+ TSFS 2015:63 6 kap. 4 §, verbatim: "På en enradig registreringsskylt anges
142
+ registreringsnumret med – tre bokstäver till vänster och tre siffror till
143
+ höger, eller – tre bokstäver till vänster och två siffror och en bokstav
144
+ till höger. På en tvåradig skylt anges registreringsnumret med – tre
145
+ bokstäver överst och tre siffror under bokstäverna, eller – tre bokstäver
146
+ överst och två siffror och en bokstav under de tre bokstäverna. Bokstäver
147
+ och siffror är svarta på vit ljusreflekterande botten. Skylten har svart
148
+ ram."
149
+ source: "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # TSFS 2015:63 consolidated, 6 kap. 4 § (as amended by TSFS 2019:53); accessed 2026-08-02"
150
+ plate_shapes:
151
+ text: >-
152
+ TSFS 2015:63 6 kap. 2 §, verbatim: "Registreringsskyltar utformas 1. som
153
+ en enradig skylt med yttermåtten 520 mm x 110 mm, 2. som en enradig skylt
154
+ med yttermåtten 300 mm x 110 mm, 3. som en enradig, självhäftande skylt
155
+ med yttermåtten 260 mm x 70 mm, eller 4. som en tvåradig skylt med
156
+ yttermåtten 170 mm x 150 mm."
157
+ allocation: >-
158
+ 6 kap. 3 §: 520x110 for bil, motorredskap, terrängvagn and släpfordon
159
+ (300x110 where the mounting space does not allow it; 170x150 for a
160
+ släpfordon where the vehicle's construction motivates it); 300x110 for
161
+ traktor; 170x150 for motorcykel and moped klass I; 260x70 for
162
+ terrängskoter.
163
+ tolerances: >-
164
+ From Transportstyrelsen's own size table, footnoted per row: "* Tillåten
165
+ avvikelse/tolerans på längden är max 1,3 mm och på höjden max 3,1 mm"
166
+ (marks the 520x110 and 300x110 entries) and "** Tillåten
167
+ avvikelse/tolerans på längden är max 4,3 mm och på höjden max 4,1 mm"
168
+ (marks the 170x150 entries). The 260x70 self-adhesive plate and the
169
+ provisorisk skylt rows carry NO tolerance marker — recorded as published,
170
+ not extrapolated.
171
+ source: "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 2-3 §; tolerances from the authority's own size table (see design_sources); accessed 2026-08-02"
172
+ charset:
173
+ letters_excluded: ["I", "Q", "V", "Å", "Ä", "Ö"]
174
+ letters_excluded_final_position_extra: ["O"]
175
+ letters_issued: [A, B, C, D, E, F, G, H, J, K, L, M, N, O, P, R, S, T, U, W, X, Y, Z]
176
+ basis: authority-statement
177
+ note: >-
178
+ NOT a regulation rule. Transportstyrelsen states it in its own words:
179
+ "några bokstäver av läsbarhetsskäl är undantagna från tilldelning (I, Q,
180
+ V, Å, Ä och Ö)" (2015-10-07) and "I de nya registreringsnumren används
181
+ inte bokstaven O som sista tecken ... Sedan tidigare används inte heller
182
+ bokstäverna I, Q, V, Å, Ä och Ö" (2019-01-16). Å, Ä and Ö cannot appear
183
+ in this dataset's serial alphabet at all (_meta/separators.yml), so the
184
+ operative exclusions here are I, Q, V everywhere and O in the final
185
+ position of the letter-final shape.
186
+ corroboration: >-
187
+ The published blocked-combination list is an independent check: not one
188
+ of its ~100 three-letter combinations contains I, Q or V. That is
189
+ corroboration, not a source, and is recorded as such.
190
+ sources:
191
+ - "https://web.archive.org/web/20170820033303/https://www.transportstyrelsen.se/sv/Nyhetsarkiv/y-och-z-som-forsta-bokstav-pa-registreringsskylten/ # Transportstyrelsen news 2015-10-07, archived capture 2017-08-20: the (I, Q, V, Å, Ä, Ö) exclusion verbatim, the 11.1 -> 12.1 million combination arithmetic, and the Y/Z rollout"
192
+ - "https://web.archive.org/web/20210925055728/https://www.transportstyrelsen.se/sv/Nyhetsarkiv/2019/nu-kommer-de-nya-registreringsnumren/ # Transportstyrelsen news 2019-01-16, archived capture 2021-09-25: the final-O exclusion and the first-issue statement"
193
+ blocked_combinations:
194
+ count: 100
195
+ list: [APA, ARG, ASS, BAJ, BSS, CUC, CUK, CUM, DUM, ETA, ETT, FAG, FAN, FEG, FEL, FEM, FES, FET, FNL, FUC, FUK, FUL, GAM, GAY, GEJ, GEY, GHB, GUD, GYN, HAT, HBT, HKH, HOR, HOT, KGB, KKK, KUC, KUF, KUG, KUK, KYK, LAM, LAT, LEM, LOJ, LSD, LUS, MAD, MAO, MEN, MES, MLB, MUS, NAZ, NRP, NSF, NYP, OND, OOO, ORM, PAJ, PKK, PLO, PMS, PUB, RAP, RAS, ROM, RPS, RUS, SEG, SEX, SJU, SOS, SPY, SUG, SUP, SUR, TBC, TOA, TOK, TRE, TYP, UFO, USA, WAM, WAR, WWW, XTC, XTZ, XUK, XXL, XXX, ZEX, ZOG, ZPY, ZUG, ZUP, ZOO]
196
+ note: >-
197
+ "Undantagna bokstavskombinationer vid tilldelning av registreringsnummer"
198
+ — Transportstyrelsen's own heading. The list applies to the THREE-LETTER
199
+ group. It is deliberately NOT compiled into any regex (the nl.yml
200
+ precedent for the thirteen Dutch combinations): a blocked combination is
201
+ a non-issuance rule, not a well-formedness rule, and plates carrying a
202
+ formerly-issued blocked combination are still on the road —
203
+ Transportstyrelsen grants a number change for exactly that case
204
+ ("Vi beviljar byte av registreringsnummer om man har en
205
+ bokstavskombination som tidigare använts men som idag är spärrad").
206
+ Five of the entries (ZEX, ZPY, ZUG, ZUP, ZOO) were added in October 2015
207
+ with the Y/Z first-letter rollout; the news item of that date counts
208
+ "91 bokstavskombinationer sedan tidigare", which reconciles with the 100
209
+ published today.
210
+ sources:
211
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/byte-av-registreringsnummer/sparrade-bokstavskombinationer/ # the full list; accessed 2026-08-02"
212
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/byte-av-registreringsnummer/ # 'Vi beviljar byte av registreringsnummer om man har en bokstavskombination som tidigare använts men som idag är spärrad'; accessed 2026-08-02"
213
+ eu_band:
214
+ side: left
215
+ content: eu-stars+S
216
+ rule: >-
217
+ TSFS 2015:63 6 kap. 5 § andra stycket: "Registreringsskylt enligt 2 § 1,
218
+ 2 och 4 har ett sådant märke som anges i 7 kap. 2 § 2" — i.e. the 520x110,
219
+ 300x110 and 170x150 plates carry the mark "utformat i enlighet med rådets
220
+ förordning (EG) nr 2411/98". 6 kap. 6 § disapplies it: "Vad som sägs i 5 §
221
+ andra stycket gäller inte för tillfälliga registreringsskyltar,
222
+ provisoriska skyltar eller skyltar för beskickningsfordon." The 260x70
223
+ self-adhesive terrängskoter plate is not in the 5 § list either.
224
+ taxi_saluvagn_tavling: >-
225
+ Expressly included: 6 kap. 7 § (taxi), 16 § (saluvagn) and 19 § (tävling)
226
+ each end with "Skylten har ett sådant märke som anges i 7 kap. 2 § 2."
227
+ added_2014: >-
228
+ Transportstyrelsen press release 2013-05-08: "EU-märkning införs på de
229
+ mindre så kallade USA-skyltarna, saluvagnsskyltar och taxiskyltar.
230
+ (Skyltar för beskickningsfordon, terrängmotorfordon och tillfälliga
231
+ fordon samt provisoriska skyltar kommer även i fortsättningen att vara
232
+ utan EU-symbol.)" and "Idag finns möjlighet att få en ordinarie
233
+ registreringsskylt eller MC-skylt utan EU-symbol. Den möjligheten tas
234
+ bort från och med årsskiftet."
235
+ national_sign_alternative: >-
236
+ TSFS 2015:63 7 kap. 2-4 §: the nationality mark is EITHER an ellipse of
237
+ at least 175 x 115 mm bearing a black "S" at least 80 mm high with
238
+ 10 mm strokes on white, OR the Reg. 2411/98 band. The oval sticker route
239
+ still exists for vehicles whose plates predate the band.
240
+ hex_basis: observed
241
+ sources:
242
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 5-6 §, 7 kap. 2-4 §; accessed 2026-08-02"
243
+ - "https://web.archive.org/web/20161225212648/http://www.transportstyrelsen.se/sv/press/pressmeddelanden/sveriges-registreringsskyltar-forandras # Transportstyrelsen press release 2013-05-08, archived capture 2016-12-25: EU marking extended to USA/saluvagn/taxi plates, non-EU plates withdrawn from the turn of the year, MC plate reduced to 170x150, fabrikatskod added"
244
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/bilder-och-matt-pa-registreringsskyltar/ # 'Alla skyltar har en EU-symbol ... med några undantag: beskickningsskylt (diplomat), självhäftande skylt för terrängmotorfordon, tillfällig registreringsskylt och provisorisk skylt'; accessed 2026-08-02"
245
+ plate_markings:
246
+ vin_and_make: >-
247
+ TSFS 2015:63 6 kap. 5 § första stycket: "På registreringsskylten anges
248
+ hela fordonsidentifieringsnumret enligt 3 kap. 3 § 2 eller motsvarande
249
+ särskilda märkning samt de säkerhetsdetaljer som Transportstyrelsen
250
+ bestämmer." Transportstyrelsen adds that the FABRIKATSKOD is printed too
251
+ ("Det står till exempel VO för Volvo och TO för Toyota direkt på
252
+ skylten"). Both sit outside the serial and are recorded as design facts,
253
+ never as part of the registration number.
254
+ source: "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/bilder-och-matt-pa-registreringsskyltar/ # 'Identifieringsmärkning och fabrikatskod på skyltarna'; accessed 2026-08-02"
255
+ design_sources:
256
+ size_and_colour_table: "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/bilder-och-matt-pa-registreringsskyltar/ # the authority's own Typ av skylt / Skyltfärg / Teckenfärg / Storlekar table for all eleven plate types, plus the tolerance footnotes; accessed 2026-08-02"
257
+ illustrations_note: >-
258
+ Every non-black/white hex in this file is `hex_basis: observed`, sampled
259
+ from Transportstyrelsen's own published plate illustrations. Those
260
+ illustrations are glossy renders with gradients, so the values are
261
+ INDICATIVE. No Swedish instrument gives an RAL or RGB value for any plate
262
+ colour — TSFS 2015:63 names colours only ("gul", "grön", "ljusblå",
263
+ "orange", "röd", "vit ljusreflekterande") — which is the same posture
264
+ de.yml records for Germany's "grünes Kennzeichen".
265
+
266
+ series:
267
+
268
+ # =========================================================================
269
+ # THE STANDARD SERIES, SHAPE 1: AAA 111. The system the länsbokstav was
270
+ # dropped for, still issuing after half a century.
271
+ # =========================================================================
272
+ - id: se-standard-1972
273
+ class: standard
274
+ categories: [car, van, truck, bus, trailer, tractor, machine]
275
+ period: { start: 1972 }
276
+ period_evidence: authority-statement
277
+ matching: strict
278
+ format:
279
+ pattern: "LLL 999"
280
+ regex: '\A[A-Z]{3} ?\d{3}\z'
281
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?\d{3}\z'
282
+ charset:
283
+ letters_excluded: ["I", "Q", "V", "Å", "Ä", "Ö"]
284
+ excluded_combinations_ref: common.blocked_combinations
285
+ notes: >-
286
+ The exclusion is an AUTHORITY STATEMENT, not a regulation rule — see
287
+ common.charset. regex_strict encodes the three exclusions that fall
288
+ inside this dataset's serial alphabet (I, Q, V); Å, Ä and Ö cannot be
289
+ written at all.
290
+ progression: >-
291
+ Sequential-ish, but numbers freed by deregistration are RE-USED
292
+ ("de nya numren kommer att användas parallellt med att gamla
293
+ registreringsnummer återanvänds", 2019-01-16), so a letter block gives
294
+ no reliable age. ONE date signal survives: "Från och med oktober månad
295
+ 2015 går det att få Y eller Z som första bokstav på registreringsskylten"
296
+ — a Y- or Z-initial Swedish number cannot predate October 2015.
297
+ separator_note: >-
298
+ The gap between letter group and digit group is a printed GAP with no
299
+ glyph (TSFS 2015:63 6 kap. 4 §: "tre bokstäver till vänster och tre
300
+ siffror till höger"). Written as the emitted SPACE per PRD-PLATES §2.6.
301
+ design:
302
+ plate: { w: 520, h: 110, unit: mm }
303
+ plate_variants:
304
+ - { w: 300, h: 110, unit: mm, note: "'USA-skylt' — only where the mounting space does not allow the 520 mm plate; granted by Transportstyrelsen after assessing the space (written application with a photo)" }
305
+ - { w: 170, h: 150, unit: mm, note: "two-row; for a släpfordon only where the vehicle's construction motivates it (TSFS 2015:63 6 kap. 3 §)" }
306
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec, spec_note: "TSFS 2015:63 6 kap. 4 §: 'Bokstäver och siffror är svarta på vit ljusreflekterande botten.'" }
307
+ foreground: "#000000"
308
+ border: { color: "#000000", note: "'Skylten har svart ram' (6 kap. 4 §)" }
309
+ band: { side: left, color: "#003399", content: eu-stars+S, hex_basis: observed, note: "the mark is prescribed by cross-reference to Reg. 2411/98; no Swedish instrument gives the blue's RAL or RGB" }
310
+ emblem: { present: false }
311
+ rear_differs: false
312
+ display: "front and rear on a bil; front on traktor, motorredskap and terrängmotorfordon; rear on motorcykel, moped klass I and släpfordon (3 kap. 6 § förordningen 2019:383)"
313
+ extra_markings: "full fordonsidentifieringsnummer (VIN) plus the two- or three-character fabrikatskod, printed on the plate outside the serial"
314
+ region_encoding: none
315
+ region_encoding_note: >-
316
+ NONE, deliberately and by design: the county letter was removed when this
317
+ system replaced the old one. A Swedish registration number encodes no
318
+ region, no year and no vehicle class.
319
+ sources:
320
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 3 kap. 1 § alternative 1 ('tre bokstäver och tre siffror'); 3 kap. 4-7 § (how many plates, where they go, legibility); accessed 2026-08-02"
321
+ - "https://rkrattsbaser.gov.se/sfst?bet=1972%3A599&upph=true # bilregisterkungörelse (1972:599) 14 §: 'Registreringsnumret består av tre bokstäver och tre siffror' — the original enactment of this shape; 18 §: the four plate shapes (480x110, 300x110, 195x155, 260x70 self-adhesive), letters left / digits right, one-row and two-row, 'svart på vit ljusreflekterande botten'; accessed 2026-08-02"
322
+ - "https://rkrattsbaser.gov.se/sfst?bet=1972%3A605 # kungörelse (1972:605) om införande av ny vägtrafiklagstiftning 2 §: 'bilregisterkungörelsen (1972:599) ... träder i kraft den 1 maj 1973', and the repeal of kungörelsen (1937:49) angående beskaffenheten av registreringsskyltar; accessed 2026-08-02"
323
+ - "https://web.archive.org/web/20210925055728/https://www.transportstyrelsen.se/sv/Nyhetsarkiv/2019/nu-kommer-de-nya-registreringsnumren/ # 'Senaste gången registreringsnumren ändrades var 1972. Då togs länsbokstaven bort och formatet med tre siffror och tre bokstäver infördes'; number re-use; accessed 2026-08-02"
324
+ - "https://web.archive.org/web/20170820033303/https://www.transportstyrelsen.se/sv/Nyhetsarkiv/y-och-z-som-forsta-bokstav-pa-registreringsskylten/ # Y and Z as first letter from October 2015; the (I, Q, V, Å, Ä, Ö) exclusion; accessed 2026-08-02"
325
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 2-5 §: the four plate shapes, which vehicle gets which, the layout and colours, the EU mark; accessed 2026-08-02"
326
+ notes: >-
327
+ THE SWEDISH STANDARD PLATE, first shape. PERIOD DISAGREEMENT, RECORDED
328
+ RATHER THAN AVERAGED (PRD-PLATES §5.3): Transportstyrelsen says "1972"
329
+ twice in its own words (2017-02-17: "Dagens system för registreringsnummer
330
+ med tre bokstäver och tre siffror har funnits sedan 1972"; 2019-01-16:
331
+ "Senaste gången registreringsnumren ändrades var 1972"), and the
332
+ instrument that carries the rule — bilregisterkungörelsen (1972:599) — is
333
+ a 1972 SFS number but entered into force on 1 MAY 1973 (kungörelse
334
+ 1972:605 § 2). Both can be true of different things, because § 67 of
335
+ kungörelse 1972:605 provides that vehicles already on a county register
336
+ kept their OLD numbers "till den tidpunkt när skyldighet att använda nytt
337
+ registreringsnummer och ny registreringsskylt inträtt enligt kungörelsen
338
+ (1971:819) om övergång till nytt bilregistreringssystem" — i.e. the
339
+ changeover ran on its own 1971 instrument and plausibly began issuing new
340
+ numbers during 1972. That 1971 instrument is in NO online database
341
+ (recorded gap), so period.start follows the authority's own repeated
342
+ statement (1972) and this note carries the 1 May 1973 in-force date. The
343
+ PREDECESSOR format (county letter + digits) is therefore documented but
344
+ NOT authored as a series: its grammar sits in repealed instruments
345
+ (kungörelsen 1937:49, vägtrafikförordningen 1951:648, vägtrafik-
346
+ kungörelsen 1951:743) that no reachable database carries, and inventing a
347
+ shape for it was declined.
348
+
349
+ # =========================================================================
350
+ # THE STANDARD SERIES, SHAPE 2: AAA 11A. The only date a Swedish plate
351
+ # string carries.
352
+ # =========================================================================
353
+ - id: se-standard-2019
354
+ class: standard
355
+ categories: [car, van, truck, bus, trailer, tractor, machine]
356
+ period: { start: 2019 }
357
+ period_evidence: first-issue-announced
358
+ matching: strict
359
+ format:
360
+ pattern: "LLL 99L"
361
+ regex: '\A[A-Z]{3} ?\d{2}[A-Z]\z'
362
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?\d{2}[ABCDEFGHJKLMNPRSTUWXYZ]\z'
363
+ charset:
364
+ letters_excluded: ["I", "Q", "V", "Å", "Ä", "Ö"]
365
+ letters_excluded_final: ["I", "Q", "V", "O", "Å", "Ä", "Ö"]
366
+ excluded_combinations_ref: common.blocked_combinations
367
+ notes: >-
368
+ The FINAL letter additionally excludes O. Transportstyrelsen,
369
+ 2019-01-16, verbatim: "Precis som idag är det inte alla bokstäver som
370
+ kommer att användas som sista tecken. I de nya registreringsnumren
371
+ används inte bokstaven O som sista tecken, eftersom det är lätt att
372
+ missta bokstaven O för siffran 0." regex_strict is the only place this
373
+ can live: the lint generates every letter A-Z from an "L".
374
+ progression: >-
375
+ "Från och med nu kommer de nya registreringsnumren att fasas in
376
+ successivt och de nya kombinationerna kommer att prioriteras när
377
+ registreringsnummer ska tilldelas" (2019-01-16). Both shapes issue in
378
+ parallel and the old one was not withdrawn: "Men det gamla formatet
379
+ finns också kvar. Det innebär att ingen behöver byta ut sin
380
+ registreringsskylt."
381
+ tax_month_note: >-
382
+ A real consequence of the shape change, stated by the authority: the
383
+ month in which fordonsskatt falls due is keyed to the LAST DIGIT, so
384
+ where the final character is a letter it is the SECOND-TO-LAST character
385
+ that governs — "och det är alltid en siffra".
386
+ design:
387
+ plate: { w: 520, h: 110, unit: mm }
388
+ plate_variants:
389
+ - { w: 300, h: 110, unit: mm, note: "'USA-skylt'" }
390
+ - { w: 170, h: 150, unit: mm, note: "two-row" }
391
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
392
+ foreground: "#000000"
393
+ border: { color: "#000000" }
394
+ band: { side: left, color: "#003399", content: eu-stars+S, hex_basis: observed }
395
+ emblem: { present: false }
396
+ rear_differs: false
397
+ region_encoding: none
398
+ sources:
399
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 3 kap. 1 § alternative 2 ('tre bokstäver, två siffror och en bokstav'); accessed 2026-08-02"
400
+ - "https://rkrattsdb.gov.se/SFSdoc/17/170100.PDF # SFS 2017:100, utfärdad 16 februari 2017: 'Regeringen föreskriver att 7 kap. 1 § förordningen (2001:650) om vägtrafikregister i stället för lydelsen enligt förordningen (2016:1216) ... ska ha följande lydelse' — the two-alternative wording, verbatim; accessed 2026-08-02"
401
+ - "https://rkrattsdb.gov.se/SFSdoc/16/161216.PDF # SFS 2016:1216 Ikraftträdande p.1: 'Denna förordning träder i kraft den 20 maj 2017' — the date the amended 7 kap. 1 § took effect, and therefore the date the letter-final shape became legal; accessed 2026-08-02"
402
+ - "https://rkrattsbaser.gov.se/sfsr?bet=2001%3A650 # SFS register for förordningen (2001:650): 2016:1216 'Ikraft: 2017-05-20 överg.best.' and 2017:100 'ändr. 7 kap. 1 § i 2016:1216' — the amendment chain, from the official register; accessed 2026-08-02"
403
+ - "https://web.archive.org/web/20210925055728/https://www.transportstyrelsen.se/sv/Nyhetsarkiv/2019/nu-kommer-de-nya-registreringsnumren/ # Transportstyrelsen news 2019-01-16: 'Idag tilldelas de första registreringsskyltarna med det nya formatet' + the final-O exclusion + the fordonsskatt rule; accessed 2026-08-02"
404
+ - "https://web.archive.org/web/20170820073927/https://www.transportstyrelsen.se/sv/Nyhetsarkiv/beslutat--nya-registreringsnummer-infors-under-2019/ # Transportstyrelsen news 2017-02-17: 'Den 16 februari fattade regeringen beslut om att genomföra de nödvändiga ändringarna i förordningen om vägtrafikregister', 12.1 million combinations exhausting during 2019, existing numbers retained; accessed 2026-08-02"
405
+ notes: >-
406
+ THE LETTER-FINAL SHAPE, and the one Swedish era signal. period.start 2019
407
+ is the FIRST-ISSUE date the authority announced on the day
408
+ (2019-01-16, "Idag tilldelas de första registreringsskyltarna med det nya
409
+ formatet"), not an instrument date. FOLKLORE FLAG, and it is the reason
410
+ this series is sourced three deep: the change is very widely attributed to
411
+ "the 2019 förordning". It is not. The enabling amendment is förordning
412
+ (2017:100) of 16 February 2017, which rewrote the pending lydelse in
413
+ förordning (2016:1216); that lydelse entered into force on 20 May 2017,
414
+ under the OLD förordningen (2001:650) om vägtrafikregister. Förordningen
415
+ (2019:383) simply re-enacted the same two alternatives when it replaced
416
+ 2001:650 on 1 July 2019, five and a half months AFTER the first plates
417
+ were issued. Three dates, all sourced, none of them interchangeable:
418
+ 2017-02-16 decided, 2017-05-20 legal, 2019-01-16 issued.
419
+
420
+ # =========================================================================
421
+ # MOTORCYCLE AND MOPED KLASS I — the two-row 170x150 plate. Same numbers,
422
+ # different plate, so a series of its own (PRD-PLATES §2.3 design limb).
423
+ # =========================================================================
424
+ - id: se-motorcycle
425
+ class: motorcycle
426
+ categories: [motorcycle, moped]
427
+ period: { start: 1972 }
428
+ period_evidence: authority-statement
429
+ matching: strict
430
+ format:
431
+ pattern: "LLL 999"
432
+ regex: '\A[A-Z]{3} ?(?:\d{3}|\d{2}[A-Z])\z'
433
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?(?:\d{3}|\d{2}[ABCDEFGHJKLMNPRSTUWXYZ])\z'
434
+ pattern_note: >-
435
+ The pattern shows shape 1; the regex is the UNION of both registration-
436
+ number shapes, because a motorcycle carries whichever shape its own
437
+ registration number has. Shape 2 only from 2019-01-16 — see
438
+ se-standard-2019.
439
+ charset: { letters_excluded: ["I", "Q", "V", "Å", "Ä", "Ö"], notes: "as common.charset" }
440
+ layout_note: >-
441
+ TSFS 2015:63 6 kap. 4 § andra stycket: on the two-row plate the three
442
+ letters sit on the UPPER row and the digits (or two digits + letter) on
443
+ the lower row. The space in the pattern is the single-line textual
444
+ rendering of that row break, not a printed glyph.
445
+ design:
446
+ plate: { w: 170, h: 150, unit: mm }
447
+ plate_variants:
448
+ - { w: 520, h: 110, unit: mm, note: "TSFS 2015:63 6 kap. 3 §: where the mounting space does not allow the 170x150 plate, Transportstyrelsen may supply a 520x110 or 300x110 plate instead" }
449
+ - { w: 300, h: 110, unit: mm }
450
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
451
+ foreground: "#000000"
452
+ border: { color: "#000000" }
453
+ band: { side: left, color: "#003399", content: eu-stars+S, hex_basis: observed }
454
+ rear_differs: false
455
+ display: "rear only (3 kap. 6 § förordningen 2019:383)"
456
+ region_encoding: none
457
+ sources:
458
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 3 § ('För motorcykel och moped klass I tillhandahålls en skylt som avses i 2 § 4') and 6 kap. 4 § andra stycket (the two-row arrangement); accessed 2026-08-02"
459
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 3 kap. 4 § (one plate for motorcycle/moped klass I) and 3 kap. 6 § (rear placement); accessed 2026-08-02"
460
+ - "https://web.archive.org/web/20161225212648/http://www.transportstyrelsen.se/sv/press/pressmeddelanden/sveriges-registreringsskyltar-forandras # Transportstyrelsen 2013-05-08: 'Slopandet av kontrollmärkena har möjliggjort en minskning av storleken på MC-skylten. Det nya måttet kommer att vara 170 X 150 mm' — the current size dates from that review; accessed 2026-08-02"
461
+ notes: >-
462
+ MOTORCYCLES AND MOPED KLASS I share ONE plate and one number system, so
463
+ they are one series with two categories rather than two series: the
464
+ PRD-PLATES §2.3 test (own series iff format OR design OR period differs)
465
+ separates nothing between them. period.start follows the standard series
466
+ because the NUMBER is the same national number; the 170x150 plate itself
467
+ is younger — Transportstyrelsen announced the reduction on 2013-05-08 and
468
+ the 2014 authority publication already prints 170x150, superseding the
469
+ 195x155 two-row plate of bilregisterkungörelsen 18 § c. The date moped
470
+ klass I first became registration-liable in Sweden was not pinned in this
471
+ pass (recorded gap), so no separate moped period is asserted.
472
+
473
+ # =========================================================================
474
+ # TERRÄNGSKOTER — the 260x70 self-adhesive plate. Its own series because
475
+ # both the design and the EU-band posture differ.
476
+ # =========================================================================
477
+ - id: se-offroad-selfadhesive
478
+ class: standard
479
+ categories: [snowmobile, atv]
480
+ period: { start: 2016 }
481
+ period_evidence: instrument-in-force
482
+ matching: strict
483
+ format:
484
+ pattern: "LLL 999"
485
+ regex: '\A[A-Z]{3} ?(?:\d{3}|\d{2}[A-Z])\z'
486
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?(?:\d{3}|\d{2}[ABCDEFGHJKLMNPRSTUWXYZ])\z'
487
+ pattern_note: "representative shape; the regex is the union of both registration-number shapes"
488
+ design:
489
+ plate: { w: 260, h: 70, unit: mm }
490
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
491
+ foreground: "#000000"
492
+ band: { side: none }
493
+ band_note: >-
494
+ NO EU BAND. TSFS 2015:63 6 kap. 5 § andra stycket gives the Reg. 2411/98
495
+ mark to plates under 2 § 1, 2 and 4 only — the 260x70 self-adhesive
496
+ plate under 2 § 3 is not in the list — and Transportstyrelsen's own page
497
+ names "självhäftande skylt för terrängmotorfordon" among the four plate
498
+ types without the EU symbol.
499
+ adhesive: true
500
+ region_encoding: none
501
+ sources:
502
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 2 § 3 (260x70 självhäftande) and 6 kap. 3 § ('För terrängskoter tillhandahålls en skylt som avses i 2 § 3'); 5 § andra stycket for the EU-mark list; accessed 2026-08-02"
503
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/bilder-och-matt-pa-registreringsskyltar/ # 'Självhäftande skylt — Enradig registreringsskylt för terrängmotorfordon (till exempel snöskoter)'; the size/colour table row 'Terrängmotorfordonsskylt vit svart 260 x 70 mm'; accessed 2026-08-02"
504
+ notes: >-
505
+ SNOWMOBILE / ATV PLATE. Recorded under class `standard` because it is the
506
+ ordinary registration plate of an ordinary privately-owned vehicle, only
507
+ in a self-adhesive 260x70 form; _meta/classes.yml has no off-road class
508
+ and none is invented here. period.start 2016 is INSTRUMENT-DATED (TSFS
509
+ 2015:63, in force 2016-01-01); the 260x70 self-adhesive plate is far older
510
+ — bilregisterkungörelsen 18 § d prescribed the same 260x70 self-adhesive
511
+ form — but no date for its introduction was pinned.
512
+
513
+ # =========================================================================
514
+ # TAXI — two series, because the T came off on a dated day.
515
+ # =========================================================================
516
+ - id: se-taxi-t-1998
517
+ class: taxi
518
+ categories: [car, van, bus]
519
+ period: { start: 1998, end: 2017 }
520
+ period_evidence: enabling-instrument
521
+ matching: strict
522
+ format:
523
+ pattern: "LLL 999"
524
+ regex: '\A[A-Z]{3} ?\d{3}\z'
525
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?\d{3}\z'
526
+ charset: { letters_excluded: ["I", "Q", "V", "Å", "Ä", "Ö"] }
527
+ t_mark_note: >-
528
+ THE "T" IS NOT PART OF THE SERIAL. Bilregisterkungörelsen 18 §, as
529
+ amended by förordning (1998:788), verbatim: "Bokstaven T anges till
530
+ höger om registreringsnumret, dock inte om fordonet enligt förordningen
531
+ (1988:965) om personliga fordonsskyltar är försett med personliga
532
+ fordonsskyltar. Bokstäver och siffror utförs i svart på gul
533
+ ljusreflekterande botten." It is a stamped mark beside the number, so
534
+ it lives in `design`, not in `format.regex`. Only the AAA 111 shape ever
535
+ appeared on a T plate: the letter-final shape began issuing in 2019, two
536
+ years after the T was withdrawn.
537
+ design:
538
+ plate: { w: 520, h: 110, unit: mm }
539
+ plate_variants:
540
+ - { w: 300, h: 110, unit: mm }
541
+ background: { color: "#DC9D00", finish: retroreflective, hex_basis: observed, spec_note: "the instrument says only 'gul ljusreflekterande botten' — no RAL, no RGB" }
542
+ foreground: "#000000"
543
+ border: { color: "#000000" }
544
+ band: { side: left, color: "#003399", content: eu-stars+S, hex_basis: observed, note: "only from the 2013-05-08 review; taxi plates made before then carry no EU symbol" }
545
+ extra_field: { position: right, content: "the letter T, stamped beside the registration number" }
546
+ region_encoding: none
547
+ sources:
548
+ - "https://rkrattsdb.gov.se/SFSdoc/98/980788.PDF # förordning (1998:788) om ändring i bilregisterkungörelsen (1972:599), 18 §: the T and 'svart på gul ljusreflekterande botten', verbatim; 'Denna förordning träder i kraft den 1 oktober 1998'; accessed 2026-08-02"
549
+ - "https://rkrattsbaser.gov.se/sfsr?bet=1972%3A599&upph=true # SFS register: 'Ändring, SFS 1998:788 ... Ikraft: 1998-10-01'; accessed 2026-08-02"
550
+ - "https://web.archive.org/web/20170408075118/http://www.transportstyrelsen.se/sv/Nyhetsarkiv/inte-langre-nagra-t-pa-taxiskyltar # Transportstyrelsen news 2017-04-03, archived capture 2017-04-08: 'Taxiskyltens utseende förändras från och med den 1 april 2017. Det T som tidigare varit instansat till höger om registreringsnumret tas bort' and 'Skyltar som tillverkats innan den 1 april 2017 och som har det gamla utseendet med ett instansat T kommer fortfarande att vara giltiga'; accessed 2026-08-02"
551
+ - "https://web.archive.org/web/20160519223846if_/http://www.transportstyrelsen.se/globalassets/global/publikationer/vag/fordon/svenska_registreringsskyltar_2014.pdf # Transportstyrelsen publication 201.143 (U07), March 2014: 'Taxiskylt ... Bokstaven T anges till höger om registreringsnumret. Mått: 520 x 110 mm. Finns också i måttet: 300 x 110 mm'; accessed 2026-08-02"
552
+ notes: >-
553
+ THE YELLOW TAXI PLATE WITH THE STAMPED T, 1 October 1998 to 31 March 2017.
554
+ period.end 2017 closes ISSUANCE only: plates manufactured before 1 April
555
+ 2017 remain valid indefinitely, which the authority states in terms, so a
556
+ T plate seen today is legal and is a hard pre-April-2017 manufacturing
557
+ signal — one of the very few dating tells on any Swedish plate. Parallel
558
+ with se-taxi-2017 during 2017, which is why both carry distinct notes.
559
+
560
+ - id: se-taxi-2017
561
+ class: taxi
562
+ categories: [car, van, bus]
563
+ period: { start: 2017 }
564
+ period_evidence: authority-announcement
565
+ matching: strict
566
+ format:
567
+ pattern: "LLL 999"
568
+ regex: '\A[A-Z]{3} ?(?:\d{3}|\d{2}[A-Z])\z'
569
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?(?:\d{3}|\d{2}[ABCDEFGHJKLMNPRSTUWXYZ])\z'
570
+ pattern_note: "representative shape; the regex is the union of both registration-number shapes"
571
+ design:
572
+ plate: { w: 520, h: 110, unit: mm }
573
+ plate_variants:
574
+ - { w: 300, h: 110, unit: mm }
575
+ background: { color: "#DC9D00", finish: retroreflective, hex_basis: observed, spec_note: "TSFS 2015:63 6 kap. 7 §: 'På en taxiskylt är bokstäver och siffror svarta på gul ljusreflekterande botten. Registreringsskylten har svart ram.' Colour named, not numbered." }
576
+ foreground: "#000000"
577
+ border: { color: "#000000" }
578
+ band: { side: left, color: "#003399", content: eu-stars+S, hex_basis: observed }
579
+ note: "identical to the ordinary plate in every respect except the yellow ground — which was the stated point of removing the T"
580
+ region_encoding: none
581
+ variants:
582
+ - class: personalized
583
+ note: >-
584
+ PERSONLIG SKYLT FÖR TAXI — a personal character combination on the
585
+ yellow taxi ground. TSFS 2015:63 12 kap. 9 §: "En personlig
586
+ fordonsskylt kan även utformas på det sätt som anges i 6 kap. 7 eller
587
+ 20 §" (taxi yellow or tävling orange). Recorded as a sub-entry because
588
+ only the ground colour differs from se-personal.
589
+ sources:
590
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/bilder-och-matt-pa-registreringsskyltar/ # size table row 'Personlig skylt för taxi | gul | svart | 520 x 110 mm, 300 x 110 mm'; accessed 2026-08-02"
591
+ sources:
592
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 7-9 §: the taxi plate's colours and frame, when it is supplied, and that an ordinary plate may be used until the taxi plate arrives; accessed 2026-08-02"
593
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 3 kap. 11 §: 'Ett fordon som har anmälts för användning i taxitrafik enligt taxitrafiklagen (2012:211) ska ha en särskild registreringsskylt (taxiskylt)', with the 2 b kap. 1 § exception; 3 kap. 12 §: the plates must be returned when the vehicle leaves taxi service; accessed 2026-08-02"
594
+ - "https://web.archive.org/web/20170408075118/http://www.transportstyrelsen.se/sv/Nyhetsarkiv/inte-langre-nagra-t-pa-taxiskyltar # Transportstyrelsen news 2017-04-03: the T removed from 1 April 2017; accessed 2026-08-02"
595
+ notes: >-
596
+ THE TAXI PLATE WITHOUT THE T, from 1 April 2017. Its own series rather
597
+ than a colour variant of the standard plate because it is a distinct
598
+ statutory issuance (3 kap. 11 § makes it compulsory for a vehicle notified
599
+ for taxi traffic, and 3 kap. 12 § requires its surrender), and because its
600
+ predecessor carried an extra stamped character. Note the 2 b kap. 1 §
601
+ taxitrafiklagen exception, added by förordning (2020:632): a vehicle
602
+ notified under that provision need not have a taxi plate at all, so
603
+ "yellow plate" is a sufficient but not necessary condition for a Swedish
604
+ taxi.
605
+
606
+ # =========================================================================
607
+ # SALUVAGNSSKYLT — the green trade plate. Bound to a BUSINESS, not a
608
+ # vehicle, exactly like the German rote Kennzeichen.
609
+ # =========================================================================
610
+ - id: se-dealer-saluvagn
611
+ class: dealer
612
+ categories: [car, van, truck, bus, motorcycle, moped, trailer, tractor, machine, snowmobile]
613
+ period: { start: 1973 }
614
+ period_evidence: enabling-instrument
615
+ matching: strict
616
+ format:
617
+ pattern: "LLL 999"
618
+ regex: '\A[A-Z]{3} ?(?:\d{3}|\d{2}[A-Z])\z'
619
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?(?:\d{3}|\d{2}[ABCDEFGHJKLMNPRSTUWXYZ])\z'
620
+ characters: 6
621
+ charset:
622
+ notes: >-
623
+ TSFS 2015:63 6 kap. 16 §, verbatim: "En saluvagnsskylt har en
624
+ beteckning med sex tecken och utformas enligt 2 § 1 eller 4. Bokstäver
625
+ och siffror utförs i svart på grön ljusreflekterande botten." The
626
+ föreskrift gives the COUNT but not the arrangement; Transportstyrelsen's
627
+ own published illustration shows both registration-number shapes
628
+ ("MLB 803" and "MLB 36U"), which is why the union regex is used. The
629
+ 1972 ancestor was explicit — bilregisterkungörelsen 42 §: "skyltens
630
+ nummer, som består av tre bokstäver och tre siffror".
631
+ fields_note: >-
632
+ THE VEHICLE-TYPE LETTER IS A FIELD, NOT PART OF THE BETECKNING.
633
+ TSFS 2015:63 6 kap. 18 §: "På skylten anges, utöver beteckningen enligt
634
+ 16 §, det slag av fordon som skylten avser enligt följande: 1. För bil
635
+ bokstaven 'B'. 2. För motorcykel och moped klass I bokstaven 'M'.
636
+ 3. För traktor och motorredskap bokstaven 'T'. 4. För terrängmotorfordon
637
+ bokstäverna 'TM'. 5. För släpfordon bokstaven 'S' eller, om samtliga
638
+ släpfordon ... utgörs av släpvagnar med en skattevikt av högst 3 ton,
639
+ släpslädar eller terrängsläp, bokstäverna 'LS'." Time-limited licences
640
+ additionally carry the expiry date stamped into the plate. Neither can
641
+ be expressed in a single `pattern` string — the same schema pressure
642
+ PRD-PLATES §2.2 records for Japan.
643
+ design:
644
+ plate: { w: 520, h: 110, unit: mm }
645
+ plate_variants:
646
+ - { w: 170, h: 150, unit: mm, note: "two-row, for motorcycle and moped klass I (TSFS 2015:63 6 kap. 17 §)" }
647
+ background: { color: "#03995C", finish: retroreflective, hex_basis: observed, spec_note: "'grön ljusreflekterande botten' (6 kap. 16 §) — colour named, not numbered" }
648
+ foreground: "#000000"
649
+ border: { color: "#000000" }
650
+ band: { side: left, color: "#003399", content: eu-stars+S, hex_basis: observed, note: "EU mark added by the 2013-05-08 review; earlier saluvagn plates carry none" }
651
+ extra_field: { position: right, content: "vehicle-type letter B / M / T / TM / S / LS; plus a stamped expiry date on time-limited licences" }
652
+ hangs: "the plate is HUNG on the vehicle being driven, not fixed: rear on bil, motorcykel, moped klass I and släpfordon; front on traktor, motorredskap and terrängmotorfordon (9 kap. 3 § förordningen 2019:383)"
653
+ binding: business
654
+ region_encoding: none
655
+ validity:
656
+ note: >-
657
+ 9 kap. 5 §: a saluvagnsskylt issued in a given calendar year may be used
658
+ after that year's end for as long as the licence lasts, provided the
659
+ holder pays the annual vägtrafikregisteravgift and saluvagnsskatt and
660
+ keeps the vehicles insured. The licence itself runs indefinitely or, on
661
+ special grounds, for a limited term.
662
+ sources:
663
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 16-18 §: six characters, black on green reflective, black frame, EU mark, which plate size on which vehicle, and the B/M/T/TM/S/LS type letters (18 § in the TSFS 2026:72 lydelse); accessed 2026-08-02"
664
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 9 kap. 1-9 §: saluvagnslicens, where the plate is hung, replacement plates get a DIFFERENT beteckning, annual fees, surrender on revocation; accessed 2026-08-02"
665
+ - "https://rkrattsbaser.gov.se/sfst?bet=1972%3A599&upph=true # bilregisterkungörelse (1972:599) 42 §: 'Saluvagnsskylt har rektangulär form med yttermåtten 480x110 mm och upptar skyltens nummer, som består av tre bokstäver och tre siffror. Bokstäver och siffror upptas i en rad och utförs i svart på grön ljusreflekterande botten' — the regime's original enactment, in force 1 May 1973; accessed 2026-08-02"
666
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/for-fordonsbranschen/saluvagnslicens/ # 'en grön skylt med svarta tecken'; 520x110 and 170x150; time-limited plates carry a stamped validity date; accessed 2026-08-02"
667
+ - "https://www.transportstyrelsen.se/globalassets/global/bilder/vag/fordon/saluvagnsskyltar.png # the authority's own illustration: beteckningar 'MLB 803' and 'MLB 36U' with the type letter B / M outside the beteckning, and the stamped date block on the time-limited variants; accessed 2026-08-02"
668
+ notes: >-
669
+ SALUVAGNSSKYLT — the Swedish trade plate. BINDING NOTE: like the German
670
+ rote Kennzeichen and unlike every other entry here, this plate binds to a
671
+ BUSINESS ("den som yrkesmässigt tillverkar, transporterar eller handlar
672
+ med fordon eller släpfordon") and moves between unregistered and
673
+ deregistered vehicles, so `binding: business` is set and a vehicle-keyed
674
+ consumer must not join on it. Two details a parse API needs: the
675
+ beteckning is NOT a registration number and never appears in the
676
+ vägtrafikregister as one; and 9 kap. 4 § provides that a lost plate is
677
+ replaced "med en annan beteckning än den som fanns på den tidigare
678
+ skylten", so a saluvagn beteckning is not stable across replacement.
679
+ period.start 1973 is the in-force date of bilregisterkungörelsen (1972:599)
680
+ — see se-standard-1972's period note for the 1972/1973 disagreement — and
681
+ the current six-character rule, 520x110 size and EU mark are all younger.
682
+
683
+ # =========================================================================
684
+ # BESKICKNINGSSKYLT — the only Swedish plate with a decode table.
685
+ # =========================================================================
686
+ - id: se-diplomatic
687
+ class: diplomatic
688
+ categories: [car, van, motorcycle]
689
+ period: { start: 1988 }
690
+ period_evidence: enabling-instrument
691
+ matching: strict
692
+ format:
693
+ pattern: "LL 999L"
694
+ regex: '\A[A-Z]{2} ?\d{3}[A-Z]\z'
695
+ regex_strict: '\A[A-F][ABCDEFGHJKLMNPRSTUVWXYZ] ?\d{3}[A-J]\z'
696
+ characters: 6
697
+ charset:
698
+ notes: >-
699
+ regex_strict is sourced by ENUMERATION of the closed tables, not by a
700
+ stated letter rule: across all 128 published landskoder the first
701
+ letter is always A-F and the second never I, O or Q; the kategorikod
702
+ table runs A-H plus "I eller J". Note that V IS used in a landskod
703
+ (EV = International IDEA) even though V is excluded from ordinary
704
+ registration numbers — the two alphabets are different, and a parse
705
+ API must not share them.
706
+ composition: >-
707
+ TSFS 2015:63 12 kap. 3 §, verbatim: "Teckensammansättningen ska, från
708
+ vänster på den enradiga registreringsskylten, bestå av 1. en landskod
709
+ (två bokstäver) som utvisar vilken beskickning ägaren eller brukaren av
710
+ fordonet tillhör, 2. ett löpnummer (tre siffror) inom respektive
711
+ landskod, och 3. en kategorikod (en bokstav) som utvisar ägarens eller
712
+ brukarens ställning." On the two-row plate the landskod is on the upper
713
+ row and the löpnummer + kategorikod on the lower row.
714
+ design:
715
+ plate: { w: 520, h: 110, unit: mm }
716
+ plate_variants:
717
+ - { w: 170, h: 150, unit: mm, note: "two-row" }
718
+ - { w: 300, h: 110, unit: mm }
719
+ background: { color: "#469BD1", finish: retroreflective, hex_basis: observed, spec_note: "TSFS 2015:63 12 kap. 2 §: 'Tecknen är svarta på ljusblå ljusreflekterande botten. Skylten har svart ram.' Identical wording to förordning (1988:964) 2 §, thirty-seven years earlier." }
720
+ foreground: "#000000"
721
+ border: { color: "#000000" }
722
+ band: { side: none }
723
+ band_note: >-
724
+ NO EU BAND — TSFS 2015:63 6 kap. 6 § disapplies the mark for skyltar för
725
+ beskickningsfordon, and the authority's own page lists beskickningsskylt
726
+ first among the four exceptions. Nor does the plate carry the VIN /
727
+ fabrikatskod marking (6 kap. 6 § again).
728
+ binding: owner
729
+ binding_note: >-
730
+ Set to `owner` deliberately. 11 kap. 2 § förordningen (2019:383): the
731
+ character composition is fixed by Regeringskansliet "med hänsyn till det
732
+ berörda landet och den ställning som den som äger eller använder fordonet
733
+ har. Om dessa förhållanden ändras, ska fordonet tilldelas nya skyltar."
734
+ The plate therefore tracks the HOLDER'S STATUS, not the vehicle: a
735
+ promotion or a posting change re-plates the same car.
736
+ region_encoding: "plates/_decode/se-diplomatic.yml"
737
+ region_encoding_note: >-
738
+ 128 landskoder + 10 kategorikoder, both closed and primary. Held in a
739
+ _decode file rather than inline (PRD-PLATES §2.4) because 138 rows is well
740
+ past de.yml's Anlage-2 inline threshold.
741
+ sources:
742
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 12 kap. 1 a § (definitions of landskod and kategorikod, added by TSFS 2025:33), 12 kap. 2 § (six characters, black on light blue reflective, black frame), 12 kap. 3 § (the 2+3+1 composition, one-row and two-row); 6 kap. 6 § (no EU mark, no VIN marking); accessed 2026-08-02"
743
+ - "https://rkrattsbaser.gov.se/sfst?bet=1988%3A964&upph=true # förordning (1988:964) om skyltar för beskickningsfordon 2 §, verbatim: 'Skyltar för beskickningsfordon upptar sex tecken som utgörs av bokstäver och siffror. Tecknen utförs i svart på ljusblå reflekterande botten.'; Övergångsbestämmelser: 'Denna förordning träder i kraft den 1 oktober 1988'; accessed 2026-08-02"
744
+ - "https://rkrattsbaser.gov.se/sfsr?bet=1988%3A964&upph=true # SFS register: 'Ikraft: 1988-10-01 överg.best.', 'Upphävd: 2001-10-01' (absorbed into förordningen 2001:650); accessed 2026-08-02"
745
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 11 kap. 1-5 §: who gets the plates (immunity/privileges), Utrikesdepartementet decides and supplies them, new plates when status changes, ordinary plates if the vehicle becomes taxable; 15 kap. 13 §: Säkerhetspolisen may grant an exemption on security grounds; accessed 2026-08-02"
746
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/skylt-for-beskickningsfordon-diplomatfordon/ # the 128-row landskod table and the kategorikod table; accessed 2026-08-02"
747
+ - "https://www.transportstyrelsen.se/globalassets/global/bilder/vag/fordon/diplomat.png # authority illustration: 'ML 803 B' one-row and 'ML / 803B' two-row, black on light blue, no EU band; accessed 2026-08-02"
748
+ notes: >-
749
+ THE BESKICKNINGSSKYLT. period.start 1988 is a REAL start, not an
750
+ instrument-in-force convenience: förordningen (1988:964) created the
751
+ six-character light-blue plate and took effect on 1 October 1988, with a
752
+ transitional grace to the end of December 1988. The colour wording has
753
+ survived verbatim through three instruments (1988:964 -> 2001:650 ->
754
+ 2019:383 + TSFS 2015:63), which is why the design claim is `spec` while
755
+ the hex is `observed`. SECURITY EXEMPTION worth recording for a claims
756
+ model: 15 kap. 13 § lets Säkerhetspolisen exempt a vehicle from the
757
+ beskickningsskylt requirement "om det finns särskilda skäl som gäller
758
+ säkerheten" — so absence of a blue plate does not disprove diplomatic
759
+ ownership.
760
+
761
+ # =========================================================================
762
+ # TILLFÄLLIG REGISTRERING — the red interimsskylt. This is also Sweden's
763
+ # export plate; there is no separate export series.
764
+ # =========================================================================
765
+ - id: se-temporary-interim
766
+ class: temporary
767
+ categories: [car, van, truck, bus, motorcycle, moped, trailer, tractor, machine]
768
+ period: { start: 2016 }
769
+ period_evidence: instrument-in-force
770
+ matching: strict
771
+ format:
772
+ pattern: "LLL 999"
773
+ regex: '\A[A-Z]{3} ?(?:\d{3}|\d{2}[A-Z])\z'
774
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?(?:\d{3}|\d{2}[ABCDEFGHJKLMNPRSTUWXYZ])\z'
775
+ pattern_note: >-
776
+ Representative shape; the regex is the union of both registration-number
777
+ shapes, because TSFS 2015:63 6 kap. 11 § assigns the number "enligt 4 §"
778
+ — the ordinary rule.
779
+ number_identity_rule: >-
780
+ 6 kap. 11 § andra stycket, and it matters to a parse API: for a vehicle
781
+ registered under 16 § lagen (2019:370) the temporary number is THE SAME
782
+ as the one it will get at ordinary registration; for a vehicle
783
+ registered under 17 § it "får inte motsvara ett eventuellt tidigare
784
+ tilldelat registreringsnummer".
785
+ fields_note: >-
786
+ The plate carries the registration's expiry as day, month and year
787
+ (6 kap. 12 §), printed as a stacked day-over-month block at the LEFT and
788
+ the year at the RIGHT — the reverse of the German Kurzzeitkennzeichen
789
+ layout. A vehicle used under 20 § lagen (2019:370) additionally carries
790
+ the letter "B" (restricted use). None of that fits a single `pattern`.
791
+ design:
792
+ plate: { w: 520, h: 110, unit: mm }
793
+ plate_variants:
794
+ - { w: 170, h: 150, unit: mm, note: "two-row" }
795
+ background: { color: "#BB0908", finish: retroreflective, hex_basis: observed, spec_note: "6 kap. 11 § tredje stycket: 'Bokstäver och siffror utförs i vitt på röd ljusreflekterande botten.'" }
796
+ foreground: "#FFFFFF"
797
+ band: { side: none }
798
+ band_note: "no EU mark and no VIN/fabrikatskod marking (6 kap. 6 §); Transportstyrelsen lists 'tillfällig registreringsskylt' among the four EU-symbol exceptions"
799
+ extra_field:
800
+ position: left
801
+ content: "day over month of expiry; the year sits at the right-hand end; a 'B' below the year marks a vehicle restricted under 20 § lagen (2019:370)"
802
+ region_encoding: none
803
+ validity:
804
+ note: >-
805
+ Set per decision, not by a fixed statutory period; the expiry is printed
806
+ on the plate. A vehicle temporarily registered under 17 § första stycket
807
+ 1-3 lagen (2019:370) must LEAVE the country within the registration's
808
+ validity (10 kap. 3 § förordningen 2019:383), and non-departure of a
809
+ non-Union good is reported to Tullverket.
810
+ sources:
811
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 11-13 §: the number rule, white on red reflective, the day/month/year field, the 'B' marking, and the stripped-down plate usable while the dated ones are awaited; 6 kap. 6 § for the EU-mark exclusion; accessed 2026-08-02"
812
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 10 kap. 1-8 §: application, the out-of-country obligation, 'När en tillfällig registrering har beslutats ska Transportstyrelsen tillhandahålla särskilda registreringsskyltar (interimsskyltar)', and 'En interimsskylt får dock inte vara provisorisk'; accessed 2026-08-02"
813
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/import-och-export-av-fordon/export-och-tillfallig-registrering/tillfallig-registrering/ # 'Den särskilda registreringsskylten är röd med vit text och finns som enradig skylt med yttermåtten 520 x 110 mm, tvåradig skylt med yttermåtten 170 x 150 mm'; 'årtal angivet till höger på skylten och dag och månad till vänster'; 'Om ett fordon endast får användas i begränsad omfattning, är skylten försedd med ett B'; accessed 2026-08-02"
814
+ - "https://www.transportstyrelsen.se/globalassets/global/bilder/vag/fordon/interimsskyltar.png # authority illustration: white on red, '03/04 MLB 803 2014' and '31/01 MLB 36U 2019 B'; accessed 2026-08-02"
815
+ notes: >-
816
+ INTERIMSSKYLT — and SWEDEN'S EXPORT PLATE, which is why this file has no
817
+ `export` series. The old exportvagnskungörelsen (1964:39) and
818
+ turistvagnskungörelsen (1972:601) regimes, both still cross-referenced in
819
+ bilregisterkungörelsen 3 §, are gone; export, import and temporary foreign
820
+ use all run through tillfällig registrering under 15-22 §§ lagen
821
+ (2019:370). period.start 2016 is INSTRUMENT-DATED (TSFS 2015:63, in force
822
+ 2016-01-01); the tillfällig-registrering regime itself dates from
823
+ förordningen (2001:650), in force 1 October 2001, and the red/white design
824
+ is older than the föreskrift that now states it — the earlier date was not
825
+ pinned (recorded gap).
826
+
827
+ - id: se-provisional
828
+ class: temporary
829
+ categories: [car, van, truck, bus, motorcycle, moped, trailer, tractor, machine]
830
+ period: { start: 2016 }
831
+ period_evidence: instrument-in-force
832
+ matching: strict
833
+ format:
834
+ pattern: "LLL 999"
835
+ regex: '\A[A-Z]{3} ?(?:\d{3}|\d{2}[A-Z])\z'
836
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?(?:\d{3}|\d{2}[ABCDEFGHJKLMNPRSTUWXYZ])\z'
837
+ pattern_note: "the provisional plate carries the vehicle's OWN registration number, so the regex is the union of both shapes"
838
+ design:
839
+ plate: { w: 520, h: 110, unit: mm }
840
+ background: { color: "#FCA62F", finish: unspecified, hex_basis: observed, spec_note: "TSFS 2015:63 6 kap. 15 §: 'En provisorisk registreringsskylt har sådan form som avses i 2 § 1. Bokstäver och siffror utförs i svart på gul botten.' Note the ABSENCE of 'ljusreflekterande' — the only Swedish plate whose colour rule omits the word, exactly as bilregisterkungörelsen 25 § omitted it before. `finish: unspecified` records that absence rather than asserting non-reflectivity from silence, though Transportstyrelsen's own photograph of the plate shows a matte, un-sheened surface." }
841
+ foreground: "#000000"
842
+ band: { side: none }
843
+ band_note: "no EU mark, no VIN/fabrikatskod marking (6 kap. 6 §)"
844
+ region_encoding: none
845
+ validity:
846
+ note: >-
847
+ 3 kap. 17 § förordningen (2019:383): usable only until the owner or
848
+ driver has received a replacement plate (ersättningsskylt), which must
849
+ then be fitted as soon as possible.
850
+ sources:
851
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 15 §; 6 kap. 6 § for the EU-mark exclusion; accessed 2026-08-02"
852
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 3 kap. 13-18 §: the Polismyndighet issues the provisional plate on an ersättningsskylt application, the use-ban carve-outs, and 3 kap. 5 § andra stycket permitting the drive to the police station on no plate at all; accessed 2026-08-02"
853
+ - "https://rkrattsbaser.gov.se/sfst?bet=1972%3A599&upph=true # bilregisterkungörelse 25 §: 'Provisorisk registreringsskylt utformas som enradig skylt med yttermåtten 445x120 mm ... Bokstäver och siffror utförs i svart på gul botten' — the pre-2016 size, superseded; accessed 2026-08-02"
854
+ - "https://www.transportstyrelsen.se/globalassets/global/press/registreringsskyltar/provisorisk-regskylt_ny.jpg # Transportstyrelsen's own photograph of a provisorisk skylt — the source of the observed hex and of the matte, un-sheened surface observation; accessed 2026-08-02"
855
+ notes: >-
856
+ PROVISORISK REGISTRERINGSSKYLT — issued by the POLICE, not by
857
+ Transportstyrelsen, when a plate is lost or stolen. Its own series rather
858
+ than a variant because the issuing authority, the colour and the (absent)
859
+ retroreflectivity requirement all differ from the ordinary plate. SIZE
860
+ CHANGE WORTH RECORDING: 445x120 mm under bilregisterkungörelsen 25 § and
861
+ still 445x120 in Transportstyrelsen's own March 2014 publication; 520x110
862
+ under TSFS 2015:63 6 kap. 15 § (in force 2016-01-01). Distinct from the
863
+ interimsskylt: 10 kap. 4 § provides in terms that "En interimsskylt får
864
+ dock inte vara provisorisk."
865
+
866
+ # =========================================================================
867
+ # PERSONLIG FORDONSSKYLT — and the file's one schema stressor.
868
+ # =========================================================================
869
+ - id: se-personal
870
+ class: personalized
871
+ categories: [car, van, truck, bus, motorcycle, moped, trailer, tractor, machine, snowmobile]
872
+ period: { start: 1988 }
873
+ period_evidence: enabling-instrument
874
+ matching: strict
875
+ format:
876
+ pattern: "LLLLLL"
877
+ regex: '\A(?![A-Z]{3} ?\d{3}\z)(?![A-Z]{3} ?\d{2}[A-Z]\z)(?![A-Z]{2} ?\d{3}[A-Z]\z)[A-Z0-9](?:[A-Z0-9]| ){0,5}[A-Z0-9]\z'
878
+ characters: { min: 2, max: 7 }
879
+ charset:
880
+ note: >-
881
+ SCHEMA STRESSOR, FLAGGED FOR THE MAINTAINER. Transportstyrelsen:
882
+ "Du får använda alla bokstäver i svenska alfabetet, A-Ö" — so Å, Ä and
883
+ Ö ARE issued on personal plates, and they are OUTSIDE this dataset's
884
+ serial alphabet (_meta/separators.yml: "ABCDEFGHIJKLMNOPQRSTUVWXYZ
885
+ 0123456789" and nothing else). Per PRD-PLATES §2.6 that is "a schema
886
+ amendment, not a data entry": the regexes here are therefore
887
+ deliberately NARROWER than the issuing grammar in that one respect,
888
+ which §2.7 confirms is still `strict`. A Swedish personal plate reading
889
+ "SÖDER" will not match, and cannot until _meta/separators.yml grows.
890
+ equivalences: >-
891
+ "O och 0 (nolla) jämställs som tecken, I och 1 (ett) jämställs som
892
+ tecken" — SONNY and S0NNY are the SAME combination for allocation
893
+ purposes, as are SOFIA and SOF1A. A regex cannot express an
894
+ equivalence class; recorded here for the parse API, which must
895
+ canonicalise O/0 and I/1 before deduplicating personal combinations.
896
+ space_rule: >-
897
+ "Det får finnas mellanrum mellan tecknen under förutsättning att
898
+ teckenkombinationen inklusive mellanrum ryms på skylten. Ett mellanrum
899
+ tar samma plats på skylten som ett tecken." So a space COUNTS toward
900
+ the 2-7 budget. It is still an emitted separator per PRD-PLATES §2.6
901
+ and is written as a bare literal inside an alternation, never inside a
902
+ mixed character class (§2.8).
903
+ forbidden_shapes: >-
904
+ "Det är inte tillåtet med teckenkombinationer som motsvarar
905
+ registreringsnummer (tre bokstäver + tre siffror eller tre bokstäver +
906
+ två siffror + en bokstav) eller skylt för beskickningsfordon (två
907
+ bokstäver + tre siffror + en bokstav)." All three shapes are excluded
908
+ by the negative lookaheads at the head of `regex` — which is why this
909
+ series needs no `regex_strict`: the sourced narrowing is already in
910
+ `regex`.
911
+ discretionary: >-
912
+ Two rules that are NOT enumerable and are therefore not encoded:
913
+ TSFS 12 kap. 10 § ("En personlig fordonsskylt får inte utformas så att
914
+ den kan bedömas medföra olägenhet eller väcka anstöt") and 12 kap. 11 §
915
+ (trade-mark, company-name and personal-name rights are weighed under
916
+ the olägenhet test). Same posture as de.yml's "gute Sitten" note.
917
+ size_limits: >-
918
+ TSFS 12 kap. 9 §, verbatim: "En personlig fordonsskylt upptar två till
919
+ sju tecken om fordonet är försett med sådan skylt som avses i 6 kap.
920
+ 2 § 1. En personlig fordonsskylt som avses i 6 kap. 2 § 2-4 upptar två
921
+ till sex tecken." So 2-7 on the 520x110 plate and 2-6 on the 300x110,
922
+ 260x70 and 170x150 plates. Transportstyrelsen adds, on its own page and
923
+ not in the föreskrift, that "En mc-skylt får ha högst tre tecken per
924
+ rad" — a layout constraint on the two-row plate.
925
+ design:
926
+ plate: { w: 520, h: 110, unit: mm }
927
+ plate_variants:
928
+ - { w: 300, h: 110, unit: mm, note: "2-6 characters" }
929
+ - { w: 170, h: 150, unit: mm, note: "2-6 characters, at most three per row" }
930
+ - { w: 260, h: 70, unit: mm, note: "2-6 characters" }
931
+ background: { color: "#FFFFFF", finish: retroreflective, hex_basis: spec }
932
+ foreground: "#000000"
933
+ border: { color: "#000000" }
934
+ band: { side: left, color: "#003399", content: eu-stars+S, hex_basis: observed, note: "12 kap. 9 §: 'Skylten har ett sådant märke som anges i 7 kap. 2 § 2'" }
935
+ extra_field: { position: right, content: "the date the plate was ordered (12 kap. 12 §)" }
936
+ identification_sticker: >-
937
+ 12 kap. 13-14 §: a separate identifieringsmärke carrying the vehicle's
938
+ ORDINARY registration number, the personal character combination and the
939
+ VIN must be stuck to the inside of the rear right side window. Without
940
+ it the personal plates may not be used. This is the mechanism that keeps
941
+ the ordinary number alive for tax, inspection and enforcement.
942
+ binding: owner
943
+ binding_note: >-
944
+ The RIGHT is personal and time-limited, not the plate: 11 kap. 9 §
945
+ förordningen (2019:383) gives ten years, renewable in five- or ten-year
946
+ periods, and the combination may be moved to another vehicle the holder
947
+ owns on notification. 15 kap. 7 § 6 lets Transportstyrelsen permit a
948
+ transfer of the right to someone else, but only "om det finns särskilda
949
+ skäl". The vehicle keeps its ordinary registration number throughout.
950
+ region_encoding: none
951
+ sources:
952
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 12 kap. 9-15 §: 2-7 / 2-6 characters, letters or digits or both, the EU mark, the no-look-alike rule, the anstöt/olägenhet tests, the order date on the plate, the identifieringsmärke and its placement; accessed 2026-08-02"
953
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 11 kap. 6-10 §: definition, Transportstyrelsen grants the right at a price Trafikverket sets, transfer between the holder's vehicles, ten years renewable by five or ten; accessed 2026-08-02"
954
+ - "https://rkrattsbaser.gov.se/sfst?bet=1988%3A965&upph=true # förordning (1988:965) om personliga fordonsskyltar 3 §: 'En personlig fordonsskylt skall uppta två till sex tecken. Tecknen utgörs av bokstäver eller siffror eller en kombination av båda' — the original two-to-SIX rule; 4 §: ten years, renewable, non-transferable; accessed 2026-08-02"
955
+ - "https://rkrattsbaser.gov.se/sfsr?bet=1988%3A965&upph=true # SFS register: 'Ikraft: 1988-10-01'; accessed 2026-08-02"
956
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/personlig-skylt/ # 'Du får använda alla bokstäver i svenska alfabetet, A-Ö'; the O/0 and I/1 equivalences; the space rule; the forbidden registration-number and beskickning shapes; SEK 6 900 for ten years; accessed 2026-08-02"
957
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/personlig-skylt/regler-for-att-aga-en-personlig-skylt/ # the identifieringsmärke requirement and the advice to refit ordinary plates when driving abroad; accessed 2026-08-02"
958
+ notes: >-
959
+ PERSONLIG FORDONSSKYLT, from 1 October 1988 (förordning 1988:965), and the
960
+ most schema-stressing entry in this file for three separate reasons: it
961
+ admits Å, Ä and Ö, which this dataset's serial alphabet cannot spell; it
962
+ treats O/0 and I/1 as THE SAME CHARACTER for allocation, which no regex
963
+ can express; and it counts a SPACE as a character position while
964
+ PRD-PLATES §2.6 classifies space as a separator a lenient consumer may
965
+ delete — a consumer deriving a separator-free twin of this regex is
966
+ therefore doing something semantically different here than everywhere
967
+ else in the dataset. The character budget also grew: 2-6 under the 1988
968
+ förordning, 2-7 on the full-size plate under TSFS 2015:63 12 kap. 9 §.
969
+ The date of that widening was not pinned (recorded gap).
970
+
971
+ # =========================================================================
972
+ # TÄVLINGSSKYLT — orange, compulsory, and a vocabulary gap.
973
+ # =========================================================================
974
+ - id: se-competition
975
+ class: specialty
976
+ categories: [car, motorcycle]
977
+ period: { start: 2016 }
978
+ period_evidence: enabling-instrument
979
+ matching: strict
980
+ format:
981
+ pattern: "LLL 999"
982
+ regex: '\A[A-Z]{3} ?(?:\d{3}|\d{2}[A-Z])\z'
983
+ regex_strict: '\A[ABCDEFGHJKLMNOPRSTUWXYZ]{3} ?(?:\d{3}|\d{2}[ABCDEFGHJKLMNPRSTUWXYZ])\z'
984
+ pattern_note: >-
985
+ The competition plate carries the vehicle's OWN registration number in
986
+ black on orange — "Tävlingsskyltarna för rallybilar och enduro- och
987
+ trialmotorcyklar är orangea med registreringsnumret i svart" — so the
988
+ regex is the union of both registration-number shapes. A personal
989
+ combination may also be issued on the orange ground (TSFS 12 kap. 9 §
990
+ last sentence, referring to 6 kap. 20 §).
991
+ design:
992
+ plate: { w: 300, h: 110, unit: mm }
993
+ plate_variants:
994
+ - { w: 170, h: 150, unit: mm, note: "two-row, enduro and trial motorcycles" }
995
+ - { w: 520, h: 110, unit: mm, note: "TSFS 6 kap. 19 §: another size under 2 § may be assigned where the vehicle's construction motivates it" }
996
+ background: { color: "#DE5E1C", finish: retroreflective, hex_basis: observed, spec_note: "TSFS 2015:63 6 kap. 20 §: 'Bokstäver och siffror utförs i svart på orange ljusreflekterande botten.'" }
997
+ foreground: "#000000"
998
+ band: { side: left, color: "#003399", content: eu-stars+S, hex_basis: observed, note: "6 kap. 19 §: 'Skylten har även ett sådant märke som anges i 7 kap. 2 § 2'" }
999
+ display: "one front and one rear on a rally car; rear only on an enduro/trial motorcycle"
1000
+ region_encoding: none
1001
+ eligibility:
1002
+ note: >-
1003
+ Keyed to a textkod in the vägtrafikregister, which is unusually
1004
+ machine-legible for an eligibility rule: T71MC (enduro and trial
1005
+ motorcycles) and T71R, T71X, T71Y, T71Z, T71ZE, T71ZK (rally cars) take
1006
+ the orange plate; T71ZO takes ordinary white plates.
1007
+ usage: >-
1008
+ The plate signals a dispens: "Fordon med tävlingsskylt har dispens som
1009
+ innebär att de endast får köras på allmänna vägar i samband med
1010
+ tävlingar, mellan specialsträckor i tävlingen." A competition motorcycle
1011
+ may additionally be ridden in connection with training or competition
1012
+ organised by a club registered with "Svenska motorcykel- och
1013
+ snöskoterförbundet eller Motorförarnas helnykterhetsförbund".
1014
+ sources:
1015
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63k.pdf # 6 kap. 19-20 §: which plate size for which competition vehicle, the EU mark, black on orange reflective; accessed 2026-08-02"
1016
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 3 kap. 9-10 §: 'En registreringsskylt för ett fordon som har registrerats för användning som tävlingsfordon (tävlingsfordonsskylt) ska ha det särskiljande utseende som framgår av föreskrifter...', and the duty to surrender them; accessed 2026-08-02"
1017
+ - "https://www.transportstyrelsen.se/TSFS/TSFS%202015_63.pdf # TSFS 2015:63 as enacted, Ikraftträdande p.1: 'Denna författning träder i kraft den 1 januari 2016' — the tävlingsskylt provisions were in the föreskrift from day one; accessed 2026-08-02"
1018
+ - "https://www.transportstyrelsen.se/sv/vagtrafik/fordon/aga-kopa-eller-salja-fordon/registreringsskyltar/tavlingsskyltar/ # 'Från och med 1 januari 2016 ska de flesta tävlingsfordon ha tävlingsskylt'; 300x110 front and rear for rally cars, 170x150 rear for enduro/trial; the textkod list; accessed 2026-08-02"
1019
+ notes: >-
1020
+ TÄVLINGSSKYLT. CLASS CAVEAT, and it is a real one: _meta/classes.yml
1021
+ defines `specialty` as "optional-design programs on standard serials (US
1022
+ state programs)", and this plate is neither optional nor a program — it is
1023
+ COMPULSORY for a registered competition vehicle and it exists to make such
1024
+ vehicles visually separable ("Genom en särskiljande registreringsskylt kan
1025
+ tävlingsfordon enklare urskiljas från övriga fordon"). `specialty` is
1026
+ recorded as the least-wrong fit and a `competition` class is proposed to
1027
+ the vocabulary in the dossier — the same move de.yml made when it filed
1028
+ the tax-exempt green plate under `agricultural`. Announced in the
1029
+ 2013-05-08 review as a new plate type and brought in with TSFS 2015:63 on
1030
+ 1 January 2016.
1031
+
1032
+ # =========================================================================
1033
+ # MILITARY — a different register, a different authority, a different colour
1034
+ # scheme, and the least-sourced entry here.
1035
+ # =========================================================================
1036
+ - id: se-military
1037
+ class: military
1038
+ categories: [car, van, truck, bus, motorcycle, trailer, machine]
1039
+ period: { start: 2009 }
1040
+ period_evidence: instrument-in-force
1041
+ # RECALL-ONLY (PRD-PLATES §2.7): militärtrafikförordningen states the
1042
+ # COLOURS and that the number is rendered in "gula siffror", and delegates
1043
+ # everything else — length, grouping, any leading letters — to Försvars-
1044
+ # makten's own föreskrifter, which were not reached in this pass. A 1-6
1045
+ # digit regex is therefore deliberately wider than whatever Försvarsmakten
1046
+ # actually issues, and a match is a shape hit and nothing more.
1047
+ matching: recall-only
1048
+ format:
1049
+ pattern: "999999"
1050
+ regex: '\A\d{1,6}\z'
1051
+ pattern_note: >-
1052
+ DIGITS ONLY is sourced — 5 kap. 6 § militärtrafikförordningen (2009:212):
1053
+ "Fordonets registreringsnummer ska anges på skylten med gula siffror på
1054
+ svart botten." The WIDTH is not: no reachable instrument states it. The
1055
+ 1-6 quantifier is a recall envelope, not a claim.
1056
+ design:
1057
+ plate: { w: 360, h: 100, unit: mm }
1058
+ plate_variants:
1059
+ - { note: "Transportstyrelsen's 2014 publication: 'Mått: 360 x 100 mm. Finns i flera olika mått.' The other sizes are not enumerated anywhere reached." }
1060
+ background: { color: "#000000", finish: unspecified, hex_basis: spec, spec_note: "5 kap. 6 § militärtrafikförordningen names only 'gula siffror på svart botten' — the only Swedish plate that inverts the national black-on-light scheme. Black is taken at face value; the yellow is NOT, see foreground_note." }
1061
+ foreground: "#FFD400"
1062
+ foreground_note: >-
1063
+ HEX IS A PLACEHOLDER FOR A NAMED COLOUR, and is flagged rather than
1064
+ dressed up as observed: the instrument says "gula siffror" and nothing
1065
+ more, no RAL or RGB exists, and no authority-published image of a
1066
+ Swedish military plate was located in this pass (Transportstyrelsen's
1067
+ 2014 publication shows one but the file was not reachable at a stable
1068
+ URL). Treat #FFD400 as "some yellow" until a render spec or an
1069
+ authority image is pinned.
1070
+ band: { side: none }
1071
+ binding: vehicle
1072
+ region_encoding: none
1073
+ sources:
1074
+ - "https://data.riksdagen.se/dokument/sfs-2009-212.html # militärtrafikförordning (2009:212) 5 kap. 3 § (Försvarsmakten assigns the number), 5 kap. 6 § (yellow digits on black; the number may instead be painted directly on the vehicle and that counts as a plate; 3 kap. 6-7 § förordningen 2019:383 apply in relevant parts; Försvarsmakten may issue further design rules), 5 kap. 6 a § (US military vehicles under the 2023 DCA may be given Swedish military plates on request); accessed 2026-08-02"
1075
+ - "https://rkrattsbaser.gov.se/sfsr?bet=2009%3A212 # SFS register: 'Ikraft: 2009-04-29 överg.best.'; accessed 2026-08-02"
1076
+ - "https://web.archive.org/web/20160519223846if_/http://www.transportstyrelsen.se/globalassets/global/publikationer/vag/fordon/svenska_registreringsskyltar_2014.pdf # Transportstyrelsen publication 201.143 (U07), March 2014: 'Militär registreringsskylt — Fordon som finns i det militära fordonsregistret använder denna skylt. Mått: 360 x 100 mm. Finns i flera olika mått.'; accessed 2026-08-02"
1077
+ - "https://data.riksdagen.se/dokument/sfs-2019-383.html # 1 kap. 1 § andra stycket: the militärtrafikförordning's registration rules apply INSTEAD of this ordinance's; 2 kap. 3 a §: Försvarsmakten, FMV and FRA vehicles enter the civil vägtrafikregister on notification under 5 kap. 13 § militärtrafikförordningen; accessed 2026-08-02"
1078
+ notes: >-
1079
+ MILITÄR REGISTRERINGSSKYLT. A separate REGISTER, not merely a separate
1080
+ series: Försvarsmakten keeps the militära fordonsregistret and assigns the
1081
+ numbers, and 1 kap. 1 § förordningen (2019:383) disapplies the civil rules
1082
+ for it. Two things are hard-sourced — yellow digits on black, and 360x100
1083
+ mm — and the grammar is not, which is why `matching: recall-only`.
1084
+ Försvarsmaktens egna föreskrifter (FFS) were not reached in this pass;
1085
+ pinning them is the single highest-value follow-up for this series.
1086
+ period.start 2009 is INSTRUMENT-DATED (militärtrafikförordningen took
1087
+ effect 2009-04-29, replacing militära vägtrafikkungörelsen 1974:97); the
1088
+ Swedish military registration system is decades older. Live edge worth
1089
+ recording: 5 kap. 6 a §, added by förordning (2024:603), lets American
1090
+ military vehicles present in Sweden under the December 2023
1091
+ defence-cooperation agreement carry Swedish military plates on request.