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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +164 -0
- data/CHANGELOG.md +274 -0
- data/README.md +55 -10
- data/data/PROVENANCE-vehicles.md +12 -0
- data/data/plates/PROVENANCE.md +5 -4
- data/data/plates/_decode/at-districts.yml +287 -0
- data/data/plates/_decode/ch-cantons.yml +110 -0
- data/data/plates/_decode/cn-issuing-offices.yml +463 -0
- data/data/plates/_decode/cn-provinces.yml +614 -0
- data/data/plates/_decode/cz-kraj.yml +159 -0
- data/data/plates/_decode/dk-serial-blocks.yml +327 -0
- data/data/plates/_decode/fr-departements.yml +191 -0
- data/data/plates/_decode/gb-age-identifiers.yml +170 -0
- data/data/plates/_decode/gb-memory-tags.yml +202 -0
- data/data/plates/_decode/gr-prefectures.yml +1408 -0
- data/data/plates/_decode/hr-cities.yml +315 -0
- data/data/plates/_decode/ie-counties.yml +227 -0
- data/data/plates/_decode/in-state-codes.yml +169 -0
- data/data/plates/_decode/is-districts-1938.yml +116 -0
- data/data/plates/_decode/it-provinces.yml +348 -0
- data/data/plates/_decode/jp-office-marks.yml +960 -0
- data/data/plates/_decode/jp-use-marks.yml +205 -0
- data/data/plates/_decode/kr-authority-marks.yml +146 -0
- data/data/plates/_decode/kr-use-syllables.yml +194 -0
- data/data/plates/_decode/lu-series-order.yml +638 -0
- data/data/plates/_decode/mx-entity-series.yml +380 -0
- data/data/plates/_decode/my-index-marks.yml +271 -0
- data/data/plates/_decode/no-counties-1913.yml +148 -0
- data/data/plates/_decode/no-districts.yml +901 -0
- data/data/plates/_decode/pl-powiats.yml +567 -0
- data/data/plates/_decode/pt-trailer-services.yml +96 -0
- data/data/plates/_decode/ro-counties.yml +213 -0
- data/data/plates/_decode/se-diplomatic.yml +220 -0
- data/data/plates/_decode/si-regions.yml +123 -0
- data/data/plates/_decode/sk-districts.yml +314 -0
- data/data/plates/_decode/th-registration-elements.yml +208 -0
- data/data/plates/_decode/ua-regions.yml +393 -0
- data/data/plates/_decode/za-licence-marks.yml +215 -0
- data/data/plates/_meta/classes.yml +1 -0
- data/data/plates/_meta/separators.yml +102 -0
- data/data/plates/ad.yml +961 -0
- data/data/plates/ar.yml +762 -0
- data/data/plates/at.yml +1424 -0
- data/data/plates/au-act.yml +472 -0
- data/data/plates/au-nsw.yml +282 -0
- data/data/plates/au-nt.yml +431 -0
- data/data/plates/au-qld.yml +272 -0
- data/data/plates/au-sa.yml +248 -0
- data/data/plates/au-tas.yml +302 -0
- data/data/plates/au-vic.yml +215 -0
- data/data/plates/au-wa.yml +309 -0
- data/data/plates/be.yml +1840 -0
- data/data/plates/br.yml +1152 -0
- data/data/plates/ca-ab.yml +430 -0
- data/data/plates/ca-bc.yml +697 -0
- data/data/plates/ca-mb.yml +499 -0
- data/data/plates/ca-nb.yml +537 -0
- data/data/plates/ca-nl.yml +743 -0
- data/data/plates/ca-ns.yml +808 -0
- data/data/plates/ca-nt.yml +610 -0
- data/data/plates/ca-nu.yml +280 -0
- data/data/plates/ca-on.yml +881 -0
- data/data/plates/ca-pe.yml +592 -0
- data/data/plates/ca-qc.yml +1036 -0
- data/data/plates/ca-sk.yml +256 -0
- data/data/plates/ca-yt.yml +656 -0
- data/data/plates/ch.yml +1273 -0
- data/data/plates/cn.yml +1431 -0
- data/data/plates/cy.yml +688 -0
- data/data/plates/cz.yml +1179 -0
- data/data/plates/de.yml +553 -118
- data/data/plates/dk.yml +1647 -0
- data/data/plates/ee.yml +1275 -0
- data/data/plates/es.yml +228 -32
- data/data/plates/fi.yml +1271 -0
- data/data/plates/fr.yml +1265 -0
- data/data/plates/gb.yml +1188 -0
- data/data/plates/gr.yml +721 -0
- data/data/plates/hr.yml +860 -0
- data/data/plates/hu.yml +959 -0
- data/data/plates/ie.yml +775 -0
- data/data/plates/in.yml +1172 -0
- data/data/plates/is.yml +667 -0
- data/data/plates/it.yml +1317 -0
- data/data/plates/jp.yml +3650 -0
- data/data/plates/kr.yml +1375 -0
- data/data/plates/li.yml +1010 -0
- data/data/plates/lt.yml +879 -0
- data/data/plates/lu.yml +842 -0
- data/data/plates/lv.yml +924 -0
- data/data/plates/mc.yml +1024 -0
- data/data/plates/mt.yml +854 -0
- data/data/plates/mx.yml +1372 -0
- data/data/plates/my.yml +685 -0
- data/data/plates/nl.yml +44 -0
- data/data/plates/no.yml +1018 -0
- data/data/plates/nz.yml +1699 -0
- data/data/plates/pl.yml +1296 -0
- data/data/plates/pt.yml +847 -0
- data/data/plates/ro.yml +785 -0
- data/data/plates/se.yml +1091 -0
- data/data/plates/si.yml +1105 -0
- data/data/plates/sk.yml +1439 -0
- data/data/plates/sm.yml +1119 -0
- data/data/plates/th.yml +1150 -0
- data/data/plates/ua.yml +1672 -0
- data/data/plates/us-ak.yml +763 -0
- data/data/plates/us-al.yml +457 -0
- data/data/plates/us-ar.yml +427 -0
- data/data/plates/us-as.yml +454 -0
- data/data/plates/us-az.yml +430 -0
- data/data/plates/us-ca.yml +892 -0
- data/data/plates/us-co.yml +452 -0
- data/data/plates/us-ct.yml +427 -0
- data/data/plates/us-dc.yml +614 -0
- data/data/plates/us-de.yml +551 -0
- data/data/plates/us-fl.yml +319 -96
- data/data/plates/us-ga.yml +644 -0
- data/data/plates/us-gu.yml +658 -0
- data/data/plates/us-hi.yml +585 -0
- data/data/plates/us-ia.yml +438 -0
- data/data/plates/us-id.yml +531 -0
- data/data/plates/us-il.yml +516 -0
- data/data/plates/us-in.yml +324 -0
- data/data/plates/us-ks.yml +351 -0
- data/data/plates/us-ky.yml +770 -0
- data/data/plates/us-la.yml +568 -0
- data/data/plates/us-ma.yml +379 -0
- data/data/plates/us-md.yml +536 -0
- data/data/plates/us-me.yml +445 -0
- data/data/plates/us-mi.yml +408 -0
- data/data/plates/us-mn.yml +411 -0
- data/data/plates/us-mo.yml +356 -0
- data/data/plates/us-mp.yml +402 -0
- data/data/plates/us-ms.yml +432 -0
- data/data/plates/us-mt.yml +619 -0
- data/data/plates/us-nc.yml +602 -0
- data/data/plates/us-nd.yml +419 -0
- data/data/plates/us-ne.yml +483 -0
- data/data/plates/us-nh.yml +394 -0
- data/data/plates/us-nj.yml +547 -0
- data/data/plates/us-nm.yml +574 -0
- data/data/plates/us-nv.yml +655 -0
- data/data/plates/us-ny.yml +592 -0
- data/data/plates/us-oh.yml +404 -0
- data/data/plates/us-ok.yml +513 -0
- data/data/plates/us-or.yml +392 -0
- data/data/plates/us-pa.yml +506 -0
- data/data/plates/us-pr.yml +507 -0
- data/data/plates/us-ri.yml +445 -0
- data/data/plates/us-sc.yml +605 -0
- data/data/plates/us-sd.yml +428 -0
- data/data/plates/us-tn.yml +471 -0
- data/data/plates/us-tx.yml +535 -0
- data/data/plates/us-ut.yml +384 -0
- data/data/plates/us-va.yml +567 -0
- data/data/plates/us-vi.yml +489 -0
- data/data/plates/us-vt.yml +458 -0
- data/data/plates/us-wa.yml +484 -0
- data/data/plates/us-wi.yml +509 -0
- data/data/plates/us-wv.yml +446 -0
- data/data/plates/us-wy.yml +523 -0
- data/data/plates/va.yml +604 -0
- data/data/plates/za.yml +1141 -0
- data/data/vehicles.json +160653 -105090
- data/lib/vehicles/configuration.rb +17 -3
- data/lib/vehicles/dataset.rb +73 -18
- data/lib/vehicles/fuzzy.rb +115 -0
- data/lib/vehicles/http.rb +48 -0
- data/lib/vehicles/make.rb +36 -6
- data/lib/vehicles/mcp_server.rb +5 -5
- data/lib/vehicles/model.rb +21 -2
- data/lib/vehicles/plates/series.rb +172 -18
- data/lib/vehicles/plates/template_fill.rb +188 -0
- data/lib/vehicles/plates/templates.rb +162 -0
- data/lib/vehicles/plates.rb +12 -0
- data/lib/vehicles/providers/hosted_provider.rb +28 -55
- data/lib/vehicles/validators/vehicle_make_validator.rb +3 -1
- data/lib/vehicles/validators/vehicle_model_validator.rb +1 -1
- data/lib/vehicles/version.rb +1 -1
- data/lib/vehicles.rb +32 -16
- data/rakelib/data_refresh.rake +109 -0
- data/rakelib/plates_refresh.rake +29 -0
- data/sig/vehicles.rbs +18 -0
- metadata +164 -2
data/data/plates/pl.yml
ADDED
|
@@ -0,0 +1,1296 @@
|
|
|
1
|
+
# plates/pl.yml — Poland (PRD-PLATES gate L1, wave 2).
|
|
2
|
+
#
|
|
3
|
+
# EVERY format, colour, dimension and class claim here is read from a Polish
|
|
4
|
+
# primary instrument fetched in this pass through the Sejm's ELI API
|
|
5
|
+
# (api.sejm.gov.pl/eli), which serves the same Dziennik Ustaw PDFs as ISAP
|
|
6
|
+
# without ISAP's bot wall. The instruments, in force order:
|
|
7
|
+
# * Ustawa z dnia 20 czerwca 1997 r. – Prawo o ruchu drogowym, tekst jednolity
|
|
8
|
+
# Dz. U. 2024 poz. 1251 — art. 73 (registration, number retention), art. 75a
|
|
9
|
+
# (plate manufacture), art. 76 (the four delegations).
|
|
10
|
+
# * Rozporządzenie Ministra Infrastruktury z dnia 8 listopada 2024 r.
|
|
11
|
+
# w sprawie rejestracji i oznaczania pojazdów, wymagań dla tablic
|
|
12
|
+
# rejestracyjnych oraz wzorów innych dokumentów związanych z rejestracją
|
|
13
|
+
# pojazdów (Dz. U. 2024 poz. 1709), in force 2024-11-30 — §§ 25-33 and
|
|
14
|
+
# załączniki 12 (the plate SPEC) and 13 (the CODE table); as amended by
|
|
15
|
+
# Dz. U. 2025 poz. 939 and Dz. U. 2026 poz. 891.
|
|
16
|
+
# * The predecessors that DATE the system changes: Dz. U. 1993 nr 37 poz. 164,
|
|
17
|
+
# Dz. U. 1998 nr 57 poz. 365, Dz. U. 1999 nr 59 poz. 632, Dz. U. 2002 nr 133
|
|
18
|
+
# poz. 1123, Dz. U. 2006 nr 70 poz. 489, Dz. U. 2019 poz. 1272,
|
|
19
|
+
# Dz. U. 2017 poz. 2355, Dz. U. 2022 poz. 1847.
|
|
20
|
+
# * The three SIDE regimes, each under its own delegation: professional
|
|
21
|
+
# registration (Dz. U. 2019 poz. 546, consolidated Dz. U. 2023 poz. 2616),
|
|
22
|
+
# armed forces (art. 76 ust. 2 → Dz. U. 2023 poz. 1776) and the security
|
|
23
|
+
# services (art. 76 ust. 4 → Dz. U. 2025 poz. 1326).
|
|
24
|
+
#
|
|
25
|
+
# THE SIX STRUCTURAL FACTS THAT SHAPE THIS FILE
|
|
26
|
+
#
|
|
27
|
+
# 1. THE OPERATIVE INSTRUMENT IS THE 2024 ONE, NOT THE 2022 ONE. Almost every
|
|
28
|
+
# secondary description of Polish plates still cites Dz. U. 2022 poz. 1847.
|
|
29
|
+
# The Sejm ELI register records that instrument "uznany za uchylony" with
|
|
30
|
+
# repealDate 2024-11-30, replaced by Dz. U. 2024 poz. 1709. The difference is
|
|
31
|
+
# not cosmetic: the 2024 annex adds real powiat codes (bydgoski BC, kielecki
|
|
32
|
+
# KC/KM/KP, ostródzki OT/OX, Poznań X, Konin N, Kalisz A), extends the
|
|
33
|
+
# tymczasowe/indywidualne column to the second voivodeship letter, and adds a
|
|
34
|
+
# new plate — red on YELLOW for cars built for sporting competition
|
|
35
|
+
# (§ 27 ust. 9 pkt 2). This file is built on the 2024 text throughout.
|
|
36
|
+
#
|
|
37
|
+
# 2. THE POWIAT CODE LIST IS INSIDE THE REGULATION, so it is authored in full,
|
|
38
|
+
# from the instrument, in plates/_decode/pl-powiats.yml — 380 rows, 689
|
|
39
|
+
# distinct prefixes, no secondary source anywhere in it. § 31 ust. 2,
|
|
40
|
+
# verbatim: "Wyróżniki województw i powiatów dla tablic rejestracyjnych są
|
|
41
|
+
# określone w załączniku nr 13 do rozporządzenia."
|
|
42
|
+
#
|
|
43
|
+
# 3. THE REFORM DATE IS 1 MAY 2000, AND IT IS NOT THE DATE OF ITS INSTRUMENT.
|
|
44
|
+
# The rozporządzenie that created the voivodeship-first system is dated
|
|
45
|
+
# 19 June 1999 and § 49 commences it "z dniem 1 lipca 1999 r." — but the SAME
|
|
46
|
+
# sentence excepts the plate provisions: "z wyjątkiem § 16, § 18 ust. 3-8,
|
|
47
|
+
# § 19, § 21 ust. 2, 4 i 5, § 22-24, § 29 i 30, które wchodzą w życie z dniem
|
|
48
|
+
# 1 maja 2000 r." § 21 ust. 2 is the serial grammar and § 24 the wyróżniki
|
|
49
|
+
# annex, so the system began on 1 MAY 2000. § 41 and § 39 ust. 2 close the
|
|
50
|
+
# other end: pre-reform stock could be issued "jednak nie dłużej niż do dnia
|
|
51
|
+
# 30 kwietnia 2000 r." This file therefore carries 2000, not the 1999 of the
|
|
52
|
+
# instrument's own date and not the 2001 that circulates in secondary
|
|
53
|
+
# descriptions. It is the Spanish 1999-2000 trap in Polish dress.
|
|
54
|
+
#
|
|
55
|
+
# 4. THE GREEN PLATE IS 2020, NOT 2022. Rozporządzenie Ministra Infrastruktury
|
|
56
|
+
# z dnia 8 lipca 2019 r. (Dz. U. 2019 poz. 1272) inserted "barwy czarnej na
|
|
57
|
+
# zielonym tle, w przypadku tablicy rejestracyjnej wydawanej dla pojazdu
|
|
58
|
+
# elektrycznego albo pojazdu napędzanego wodorem" and § 9 commences it
|
|
59
|
+
# "z dniem 1 stycznia 2020 r.", with § 6 letting authorities ORDER the new
|
|
60
|
+
# plates from 15 December 2019. The 2022 and 2024 instruments only re-enact
|
|
61
|
+
# it. Recorded here as 2020 with the 2019 instrument cited.
|
|
62
|
+
#
|
|
63
|
+
# 5. THE BLUE BAND WAS THE POLISH FLAG BEFORE IT WAS THE EU STARS, and the swap
|
|
64
|
+
# is dated to the day. Dz. U. 2002 nr 133 poz. 1123 § 19 ust. 1: "Każda
|
|
65
|
+
# tablica posiada dodatkowo na niebieskim tle symbol barw Rzeczypospolitej
|
|
66
|
+
# Polskiej i litery «PL» barwy białej." Dz. U. 2006 nr 70 poz. 489 replaced
|
|
67
|
+
# that with the twelve-star EU symbol and § 6 commences it "z dniem 2 maja
|
|
68
|
+
# 2006 r." — two years AFTER accession, which is the sort of gap a
|
|
69
|
+
# guessed date gets wrong. § 2 of the same instrument keeps the flag-band
|
|
70
|
+
# plates lawful indefinitely, so the two designs are genuinely parallel.
|
|
71
|
+
#
|
|
72
|
+
# 6. H AND U ARE THE TWO LETTERS THAT ARE NEVER A VOIVODEDSHIP. § 30 ust. 1 gives
|
|
73
|
+
# a 25-letter alphabet (A-Z without Q); 23 of those letters appear in column 4
|
|
74
|
+
# of załącznik nr 13. The two that never do are H and U, and both are spoken
|
|
75
|
+
# for elsewhere: H is the base of the six service prefixes and U is the armed
|
|
76
|
+
# forces' wyróżnik. A leading H or U is therefore a positive signal that the
|
|
77
|
+
# plate is not a civil registration — see plates/_decode/pl-powiats.yml.
|
|
78
|
+
#
|
|
79
|
+
# REGEX POLICY, as in plates/at.yml and plates/de.yml: `format.regex` is the
|
|
80
|
+
# lint-round-trippable regex spelling § 30 ust. 2's enumerated layouts;
|
|
81
|
+
# `format.regex_strict` carries the two sourced tightenings the round-trip
|
|
82
|
+
# forbids — the § 30 ust. 1 exclusion of Q from the whole alphabet, and the
|
|
83
|
+
# § 31 ust. 1 exclusion of B, D, I, O and Z from the VEHICLE wyróżnik only
|
|
84
|
+
# (never from the prefix, where DB, DDZ, CIN and CB are all real codes).
|
|
85
|
+
# There is no leading-zero rule to carry: the statutory ranges are "od 00001"
|
|
86
|
+
# and "od 0001", so 0 is significant in every position but the all-zero serial.
|
|
87
|
+
jurisdiction: pl
|
|
88
|
+
authority:
|
|
89
|
+
name: Ministerstwo Infrastruktury — Prawo o ruchu drogowym (Dz. U. 2024 poz. 1251) i rozporządzenie w sprawie rejestracji i oznaczania pojazdów (Dz. U. 2024 poz. 1709)
|
|
90
|
+
url: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709"
|
|
91
|
+
binding: vehicle
|
|
92
|
+
binding_note: >-
|
|
93
|
+
art. 73 ust. 1d Prawa o ruchu drogowym: "Numer rejestracyjny na tablicach
|
|
94
|
+
(tablicy) rejestracyjnych stanowią litery i cyfry (cyfra). Numer ten składa
|
|
95
|
+
się odpowiednio z wyróżnika województwa lub powiatu i wyróżnika pojazdu albo
|
|
96
|
+
wyróżnika indywidualnego pojazdu" — and § 27 ust. 1 of the rozporządzenie:
|
|
97
|
+
"Każdemu pojazdowi przypisuje się jeden numer rejestracyjny." The number binds
|
|
98
|
+
to the VEHICLE, so vehicle-keyed consumers may join on it. The one nuance a
|
|
99
|
+
consumer must know is art. 73 ust. 1a, which since 2022 lets a BUYER keep the
|
|
100
|
+
number: "Składający wniosek o rejestrację pojazdu może wnioskować
|
|
101
|
+
o zachowanie dotychczasowego numeru rejestracyjnego, w tym tablic (tablicy)
|
|
102
|
+
rejestracyjnych, jeżeli pojazd był już zarejestrowany na terytorium
|
|
103
|
+
Rzeczypospolitej Polskiej" — the plate stays on the same vehicle across a
|
|
104
|
+
change of keeper, it never moves to a different vehicle. There is no Polish
|
|
105
|
+
analogue of the British or Swiss owner-binding.
|
|
106
|
+
instrument:
|
|
107
|
+
citation: "Rozporządzenie Ministra Infrastruktury z dnia 8 listopada 2024 r. w sprawie rejestracji i oznaczania pojazdów, wymagań dla tablic rejestracyjnych oraz wzorów innych dokumentów związanych z rejestracją pojazdów (Dz. U. 2024 poz. 1709), zmienione Dz. U. 2025 poz. 939 i Dz. U. 2026 poz. 891"
|
|
108
|
+
enabling_statute: "Ustawa z dnia 20 czerwca 1997 r. – Prawo o ruchu drogowym, art. 76 ust. 1 pkt 1 lit. a, c i d (tekst jednolity Dz. U. 2024 poz. 1251)"
|
|
109
|
+
data_wydania: "2024-11-08"
|
|
110
|
+
wejscie_w_zycie: "2024-11-30"
|
|
111
|
+
wejscie_w_zycie_source: "§ 51, verbatim: 'Rozporządzenie wchodzi w życie po upływie 7 dni od dnia ogłoszenia.' The ELI register fixes the resulting date at 2024-11-30."
|
|
112
|
+
eli: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709"
|
|
113
|
+
source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # the whole instrument, 102 pages, read in this pass. Accessed 2026-08-02"
|
|
114
|
+
|
|
115
|
+
# ---------------------------------------------------------------------------
|
|
116
|
+
# Jurisdiction-wide facts, cited once and referenced per series.
|
|
117
|
+
# ---------------------------------------------------------------------------
|
|
118
|
+
common:
|
|
119
|
+
plate_types:
|
|
120
|
+
statute: >-
|
|
121
|
+
§ 25 of the rozporządzenie closes the type vocabulary at FIVE, verbatim:
|
|
122
|
+
"Do oznaczania pojazdów stosuje się następujące wzory tablic
|
|
123
|
+
rejestracyjnych: 1) zwyczajne – do oznaczania wszystkich pojazdów,
|
|
124
|
+
z zastrzeżeniem pkt 2-5; 2) indywidualne – do oznaczania pojazdów
|
|
125
|
+
samochodowych; 3) zabytkowe – do oznaczania pojazdów zabytkowych;
|
|
126
|
+
4) tymczasowe – do oznaczania pojazdów czasowo zarejestrowanych;
|
|
127
|
+
5) dyplomatyczne – do oznaczania pojazdów należących do przedstawicielstw
|
|
128
|
+
dyplomatycznych, urzędów konsularnych i misji specjalnych państw obcych
|
|
129
|
+
oraz organizacji międzynarodowych, a także ich personelu." Every other
|
|
130
|
+
Polish plate — professional, military, service — exists under a DIFFERENT
|
|
131
|
+
delegation in art. 76 and a different instrument, which is why those
|
|
132
|
+
series cite different sources here.
|
|
133
|
+
sizes: >-
|
|
134
|
+
§ 26 ust. 1 cuts the same plates a second way, by size: samochodowe
|
|
135
|
+
(jednorzędowe / dwurzędowe, and jednorzędowe zmniejszone for vehicles whose
|
|
136
|
+
mounting recess is undersized), motocyklowe (always two-row; also used for
|
|
137
|
+
agricultural tractors and for L6e/L7e quadricycles) and motorowerowe
|
|
138
|
+
(always two-row). A tractor may take a car plate where it has the recess
|
|
139
|
+
for one (ust. 2).
|
|
140
|
+
source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # §§ 25-26. Accessed 2026-08-02"
|
|
141
|
+
dimensions:
|
|
142
|
+
samochodowa_jednorzedowa: { w: 520, h: 114, unit: mm }
|
|
143
|
+
samochodowa_dwurzedowa: { w: 305, h: 214, unit: mm }
|
|
144
|
+
samochodowa_jednorzedowa_zmniejszona: { w: 305, h: 114, unit: mm }
|
|
145
|
+
motocyklowa: { w: 190, h: 150, unit: mm }
|
|
146
|
+
motorowerowa: { w: 140, h: 114, unit: mm }
|
|
147
|
+
corner_radius: { r: 10, unit: mm, tolerance: "-0.5 to +1.5 mm" }
|
|
148
|
+
border_inset: { d: 7, unit: mm, note: "the embossed frame (ramka obrzeża) sits 7 mm in from the plate edge on every size" }
|
|
149
|
+
tolerance: "±1 mm on length and width (pkt 2.2); total plate thickness 1.4-3.0 mm (pkt 2.8); 1 mm aluminium strip (pkt 2.1)"
|
|
150
|
+
source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # załącznik nr 12, Rysunek 1 'Wymiary i kształty tablic rejestracyjnych' (printed page 53) — read from the drawing, which carries the millimetre dimensions as leader-line callouts. Accessed 2026-08-02"
|
|
151
|
+
note: >-
|
|
152
|
+
520 x 114 mm, NOT the 520 x 110 mm that circulates everywhere and that
|
|
153
|
+
Germany, the Netherlands and Spain actually use. The Polish single-line
|
|
154
|
+
plate is 4 mm taller than its neighbours', and the figure is a statutory
|
|
155
|
+
dimension on Rysunek 1, not an observation. The two-row car plate is
|
|
156
|
+
305 x 214 mm, which is also not the 340 x 200 mm of the German pattern.
|
|
157
|
+
colorimetry:
|
|
158
|
+
basis: >-
|
|
159
|
+
Poland specifies COLOUR AS A CIE CHROMATICITY QUADRANGLE plus a luminance
|
|
160
|
+
factor, not as RGB or RAL. Załącznik nr 12 pkt 2.20, verbatim: "Barwa
|
|
161
|
+
biała, żółta, niebieska i zielona powierzchni odblaskowych oraz biała
|
|
162
|
+
i czarna powierzchni znaków, przy oświetleniu wzorcowym źródłem światła
|
|
163
|
+
D65 pod kątem 45º do normalnej do powierzchni i obserwacji wzdłuż normalnej
|
|
164
|
+
(geometria 45/0), powinny mieścić się w polach barwowych normalnego układu
|
|
165
|
+
trójchromatycznego CIE, określonych dla danej barwy przez punkty narożne
|
|
166
|
+
o współrzędnych trójchromatycznych podanych w tablicy 2 i odpowiadać
|
|
167
|
+
podanemu w tablicy 2 współczynnikowi luminancji." Every hex in this file
|
|
168
|
+
is therefore `hex_basis: observed`; the quadrangle is the spec and is
|
|
169
|
+
reproduced here so a renderer can do better than a guess.
|
|
170
|
+
biala: { x: [0.355, 0.305, 0.285, 0.335], y: [0.355, 0.305, 0.325, 0.375], beta: 0.35 }
|
|
171
|
+
czerwona: { x: [0.690, 0.595, 0.569, 0.655], y: [0.310, 0.315, 0.341, 0.345], beta: 0.05 }
|
|
172
|
+
niebieska: { x: [0.078, 0.150, 0.210, 0.137], y: [0.171, 0.220, 0.160, 0.038], beta: 0.01 }
|
|
173
|
+
zolta: { x: [0.481, 0.444, 0.494, 0.545], y: [0.518, 0.476, 0.426, 0.454], beta: 0.27 }
|
|
174
|
+
czarna: { x: [0.385, 0.300, 0.260, 0.345], y: [0.355, 0.270, 0.310, 0.395], beta: "<= 0.03" }
|
|
175
|
+
niebieska_pole_ue: { x: [0.176, 0.176, 0.140, 0.140], y: [0.140, 0.104, 0.104, 0.140], beta: 0.01, note: "a SECOND and much narrower blue, applying only to the field under the EU symbol and the PL letters — the plate's own blue (tablica dyplomatyczna) is the wider quadrangle above" }
|
|
176
|
+
zielona: { x: [0.250, 0.250, 0.325, 0.325], y: [0.355, 0.500, 0.565, 0.400], beta: "0.20 <= beta <= 0.40" }
|
|
177
|
+
retroreflection: "Tablica 1 gives the minimum and maximum coefficient of retroreflection per colour and per observation/illumination angle pair — white min 50 / max 250, yellow 30/175, green 23/100, blue 3/15 cd/lx/m2 at 20' and 5°. Green and yellow are measured for DAYLIGHT only."
|
|
178
|
+
source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # załącznik nr 12 pkt 2.18-2.21, Tablica 1 (retroreflection), Tablica 2 (daylight colour), Tablica 3 (night colour). Accessed 2026-08-02"
|
|
179
|
+
font:
|
|
180
|
+
name: null
|
|
181
|
+
statutory_basis: >-
|
|
182
|
+
NO TYPEFACE IS NAMED ANYWHERE, and the legal object is a DRAWING, exactly
|
|
183
|
+
as the EU dossier found for the UK, Germany, Spain and Austria. Załącznik
|
|
184
|
+
nr 12 pkt 2.11, in full: "Litery i cyfry na tablicach powinny być wykonane
|
|
185
|
+
zgodnie z wymiarami podanymi na rysunku 7." Rysunek 7 is a full
|
|
186
|
+
dimensioned outline drawing of all 25 letters and the 10 digits, with
|
|
187
|
+
construction radii labelled a/b/c/d per glyph. The drawn alphabet is
|
|
188
|
+
A B C D E F G H I J K L M N O P R S T U V W X Y Z — Q is absent from the
|
|
189
|
+
drawing as well as from § 30 ust. 1.
|
|
190
|
+
geometry_gap: >-
|
|
191
|
+
RECORDED GAP, and it is the one place Poland is WEAKER than Austria for a
|
|
192
|
+
renderer: the per-glyph millimetre widths live only in the drawing's
|
|
193
|
+
leader lines, not in any table, so this pass records the drawing as the
|
|
194
|
+
source without extracting numeric widths. What IS extractable in text:
|
|
195
|
+
pkt 2.10's tolerances (character height and width ±1.0 mm; spread within
|
|
196
|
+
one plate 0.8 mm on car plates and 0.5 mm elsewhere; inter-character
|
|
197
|
+
spacing ±1.5 mm; squareness 0.5 mm per 50 mm of character height) and
|
|
198
|
+
pkt 2.12's rule that layout follows Rysunki 9-25, with the substitute
|
|
199
|
+
rectangles of Rysunek 27 used for the digit 1 and the letters I, J, L and T.
|
|
200
|
+
licence: >-
|
|
201
|
+
PRD-PLATES §6 applies unchanged: the render layer derives glyphs from the
|
|
202
|
+
statutory drawing, never from a third-party TTF. Whether Poland has a
|
|
203
|
+
German-style §5 UrhG public-domain rule for designs published inside
|
|
204
|
+
statutory instruments was NOT researched in this pass — recorded gap, and
|
|
205
|
+
one more reason to derive rather than embed.
|
|
206
|
+
source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # załącznik nr 12 pkt 2.10-2.13 and Rysunek 7 (printed page 57), Rysunek 27 (substitute rectangles). Accessed 2026-08-02"
|
|
207
|
+
euro_band:
|
|
208
|
+
side: left
|
|
209
|
+
content: eu-stars+PL
|
|
210
|
+
statute: >-
|
|
211
|
+
§ 28 ust. 1, verbatim: "W skrajnej lewej części tablicy rejestracyjnej
|
|
212
|
+
umieszcza się dodatkowo na niebieskim tle symbol Unii Europejskiej
|
|
213
|
+
składający się z 12 pięcioramiennych gwiazdek barwy żółtej ułożonych na
|
|
214
|
+
obwodzie okręgu oraz znak z literami «PL» barwy białej. Wymóg ten nie
|
|
215
|
+
dotyczy tablic (tablicy) rejestracyjnych dyplomatycznych."
|
|
216
|
+
geometry: >-
|
|
217
|
+
Unlike Austria, Poland DOES publish band geometry in text. Załącznik nr 12
|
|
218
|
+
pkt 2.5: the PL letters are 20 mm high (tolerance +1 mm) with a 4 mm stroke
|
|
219
|
+
(+0.5 mm); the blue field must run into the adjoining frame so that no
|
|
220
|
+
white or yellow strip is left between the blue and the black or red border;
|
|
221
|
+
height tolerance ±2 mm on two-row plates, width tolerance ±2 mm on all.
|
|
222
|
+
Rysunek 8 tabulates the field per plate size (a/b/c/d/e/f/g in mm):
|
|
223
|
+
samochodowa jednorzędowa 30/40/-/20/6.5/24/35, samochodowa dwurzędowa
|
|
224
|
+
30/40/100/20/6.5/17/35, motocyklowa 26/35/70/17.5/4/8/21, motorowerowa
|
|
225
|
+
22.5/30/55/15/1.5/5/15.
|
|
226
|
+
note: >-
|
|
227
|
+
The band is a property of the PLATE, not of the class: it is on ordinary,
|
|
228
|
+
individual, historic, temporary and professional plates and off only the
|
|
229
|
+
diplomatic one. Poland does NOT cross-reference Reg. (EC) 2411/98 the way
|
|
230
|
+
FZV Anlage 4 does — the geometry above is purely national.
|
|
231
|
+
source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 28 ust. 1; załącznik nr 12 pkt 2.5 and Rysunek 8. Accessed 2026-08-02"
|
|
232
|
+
eagle:
|
|
233
|
+
statute: >-
|
|
234
|
+
§ 28 ust. 4 pkt 1: every plate carries a laser-etched OUTLINE of the eagle
|
|
235
|
+
of the Polish coat of arms ("grafikę obrysu wizerunku orła, o którym mowa
|
|
236
|
+
w ustawie z dnia 31 stycznia 1980 r. o godle, barwach i hymnie
|
|
237
|
+
Rzeczypospolitej Polskiej oraz o pieczęciach państwowych"), 15 mm high with
|
|
238
|
+
a 0.25 mm line, centred above the legalisation-sticker slot and 17 mm from
|
|
239
|
+
the top edge on car plates, 15 mm on motorcycle plates. § 28 ust. 6 takes
|
|
240
|
+
it OFF moped plates and temporary plates.
|
|
241
|
+
rendered: placeholder
|
|
242
|
+
render_note: >-
|
|
243
|
+
PRD-PLATES §3 placeholder rule applies. The eagle is a state emblem under
|
|
244
|
+
the 1980 ustawa o godle and its licensing posture was not researched here;
|
|
245
|
+
the render layer draws a neutral placeholder in the slot.
|
|
246
|
+
source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 28 ust. 4 pkt 1 and ust. 6; załącznik nr 12 pkt 2.6 lit. b. Accessed 2026-08-02"
|
|
247
|
+
separator:
|
|
248
|
+
emitted: " "
|
|
249
|
+
statute: >-
|
|
250
|
+
THE REGULATION PRESCRIBES NO SEPARATOR GLYPH AT ALL — and it says what
|
|
251
|
+
occupies the position instead. Załącznik nr 12 pkt 2.6 lit. a places the
|
|
252
|
+
laser-marked slot for the legalisation sticker (18 x 30 mm, corner radius
|
|
253
|
+
3 mm, 0.25 mm line) "w poziomie – symetrycznie między ostatnim znakiem
|
|
254
|
+
wyróżnika województwa lub powiatu a pierwszym znakiem wyróżnika pojazdu",
|
|
255
|
+
42 mm down from the top edge on car plates. The gap a reader sees between
|
|
256
|
+
the prefix and the serial is therefore a STICKER WELL, exactly as the gap
|
|
257
|
+
on an Austrian plate is a coat of arms. Every `pattern` in this file
|
|
258
|
+
prints a SPACE there and every regex spells the position ` ?`, because the
|
|
259
|
+
law prescribes a physical gap and no glyph, and a written Polish plate is
|
|
260
|
+
as often set solid as spaced.
|
|
261
|
+
source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # załącznik nr 12 pkt 2.6 lit. a; § 28 ust. 2-3, ust. 5 (no slot marking on temporary plates). Accessed 2026-08-02"
|
|
262
|
+
serial_grammar:
|
|
263
|
+
alphabet_source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 30 ust. 1 and § 31 ust. 1. Accessed 2026-08-02"
|
|
264
|
+
alphabet: >-
|
|
265
|
+
§ 30 ust. 1, verbatim: "Numery rejestracyjne są tworzone ze zbioru
|
|
266
|
+
następujących 25 liter: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, R,
|
|
267
|
+
S, T, U, V, W, X, Y i Z oraz cyfr od 0 do 9." Q is the only Latin letter
|
|
268
|
+
excluded, and it is excluded dataset-wide, prefix included.
|
|
269
|
+
letters_excluded_everywhere: ["Q"]
|
|
270
|
+
letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"]
|
|
271
|
+
vehicle_exclusion_note: >-
|
|
272
|
+
§ 31 ust. 1: "Wyróżnik pojazdu, z zastrzeżeniem § 32 ust. 2, określa organ
|
|
273
|
+
rejestrujący, posługując się zestawem cyfr i liter stanowiących pojemność
|
|
274
|
+
rejestracyjną, z wyłączeniem liter B, D, I, O i Z." The five letters are
|
|
275
|
+
the digit look-alikes and they are excluded FROM THE VEHICLE WYRÓŻNIK
|
|
276
|
+
ONLY. They remain lawful in the PREFIX, where DB (Wałbrzych), DDZ
|
|
277
|
+
(dzierżoniowski), CIN (inowrocławski), CB (Bydgoszcz) and ZSZ
|
|
278
|
+
(szczecinecki) are all real codes — a distinction every existing
|
|
279
|
+
description of Polish plates blurs and `regex_strict` here does not.
|
|
280
|
+
The "z zastrzeżeniem § 32 ust. 2" carve-out is real too: an INDIVIDUAL
|
|
281
|
+
wyróżnik is chosen by the owner, so the five letters are available there.
|
|
282
|
+
no_leading_zero_rule: false
|
|
283
|
+
no_leading_zero_note: >-
|
|
284
|
+
There is NO leading-zero rule in Polish law, unlike Austria's. The
|
|
285
|
+
statutory ranges are written "od 00001 do 99999", "od 0001 do 9999",
|
|
286
|
+
"od 001 do 999", "od 01 do 99" and "od 1 do 9" — so a zero is significant
|
|
287
|
+
in every position except that the all-zero serial is excluded, and
|
|
288
|
+
"DW 00123" is a well-formed Wrocław plate.
|
|
289
|
+
layouts_source: "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 30 ust. 2 pkt 1-7, the complete enumeration of every layout for every plate type, split by whether the powiat wyróżnik is one letter or two. Accessed 2026-08-02"
|
|
290
|
+
exhaustion_order: >-
|
|
291
|
+
§ 30 ust. 2 lists the layouts "tworzony kolejno w układzie" — IN ORDER OF
|
|
292
|
+
EXHAUSTION. A layout is only reached when the previous one is used up, so
|
|
293
|
+
the list is an era-inference signal for a parse API: within one powiat, a
|
|
294
|
+
plain five-digit serial is older than a four-digit-plus-letter one, which
|
|
295
|
+
is older than three-digits-plus-two-letters. The regulation publishes the
|
|
296
|
+
ORDER but no dates, so the inference is ordinal, never calendar.
|
|
297
|
+
offensive_serials:
|
|
298
|
+
statute: "§ 32 ust. 3: an individual wyróżnik 'powinien być wyrazem, skrótem lub określeniem, które nie zawierają w swoim znaczeniu w języku polskim albo obcym treści obraźliwych lub niezgodnych z zasadami współżycia społecznego.'"
|
|
299
|
+
modelled: false
|
|
300
|
+
modelled_note: >-
|
|
301
|
+
NOT encoded as a charset exclusion, deliberately, and for the same reason
|
|
302
|
+
Austria's § 26 Abs. 8 list is not: it is a refusal standard applied at
|
|
303
|
+
assignment, it binds only INDIVIDUAL plates, and unlike Austria's the
|
|
304
|
+
Polish text enumerates nothing at all — it is a general clause, so there
|
|
305
|
+
is no list to encode even if encoding one were right.
|
|
306
|
+
absent_classes:
|
|
307
|
+
export: "No export series. § 25 closes the type list at five and none of them is an export plate; the TEMPORARY plate does that job, and has since at least 1993 — Dz. U. 1993 nr 37 poz. 164 § 13 ust. 3 gave tablice tymczasowe the express purpose of 'umożliwienia wyjazdu lub wywozu tych pojazdów za granicę'."
|
|
308
|
+
taxi: "No taxi series found in §§ 25-32 or załączniki 12-13."
|
|
309
|
+
seasonal: "No seasonal series — no Polish analogue of the German Saisonkennzeichen was found."
|
|
310
|
+
agricultural: "No agricultural series. § 26 ust. 1 pkt 2 puts agricultural tractors on the MOTORCYCLE plate, and ust. 2 lets them take a car plate where the mounting recess suits — so they are covered by pl-motorcycle and pl-standard rather than by a series of their own."
|
|
311
|
+
trailer: "No trailer series. § 26 ust. 1 pkt 1 lit. a puts trailers on ordinary car plates; załącznik nr 12 pkt 2.4 makes the trailer plate a SINGLE plate rather than a set, which is a manufacturing fact, not a format one."
|
|
312
|
+
dealer: "Superseded rather than absent — see pl-professional. The pre-2019 answer was the tablica tymczasowa badawcza."
|
|
313
|
+
research_badawcza: >-
|
|
314
|
+
ABOLISHED, and dated. Dz. U. 2002 nr 133 poz. 1123 § 18 ust. 7 and § 21
|
|
315
|
+
ust. 2 pkt 6 defined a "tablica tymczasowa badawcza" — red on white,
|
|
316
|
+
letter + digit voivodeship, two digits, then the FIXED letter B marking the
|
|
317
|
+
plate's purpose — for vehicles run under homologation and R&D testing.
|
|
318
|
+
No such type survives in § 25 of the 2024 instrument; the professional
|
|
319
|
+
registration regime of 2019 replaced it. Recorded as a class this
|
|
320
|
+
jurisdiction once had and no longer issues; the plates themselves are not
|
|
321
|
+
modelled as a series because the pass did not establish their withdrawal
|
|
322
|
+
date, which is a recorded gap.
|
|
323
|
+
|
|
324
|
+
series:
|
|
325
|
+
|
|
326
|
+
# =========================================================================
|
|
327
|
+
# THE CURRENT STANDARD SERIES — black on white, EU field since 2 May 2006.
|
|
328
|
+
# =========================================================================
|
|
329
|
+
- id: pl-standard
|
|
330
|
+
class: standard
|
|
331
|
+
categories: [car, van, truck, bus, trailer]
|
|
332
|
+
period: { start: 2006 }
|
|
333
|
+
period_evidence: enacted-commencement
|
|
334
|
+
matching: strict
|
|
335
|
+
format:
|
|
336
|
+
pattern: "LL 99999"
|
|
337
|
+
regex: '\A(?:[A-Z]{2} ?(?:\d{5}|\d{4}[A-Z]|\d{3}[A-Z]{2}|\d[A-Z]\d{3}|\d[A-Z]{2}\d{2})|[A-Z]{3} ?(?:[A-Z]\d{3}|\d{2}[A-Z]{2}|\d[A-Z]\d{2}|\d{2}[A-Z]\d|\d[A-Z]{2}\d|[A-Z]{2}\d{2}|\d{5}|\d{4}[A-Z]|\d{3}[A-Z]{2}))\z'
|
|
338
|
+
regex_strict: '\A(?:[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z] ?(?:\d{5}|\d{4}[ACEFGHJKLMNPRSTUVWXY]|\d{3}[ACEFGHJKLMNPRSTUVWXY]{2}|\d[ACEFGHJKLMNPRSTUVWXY]\d{3}|\d[ACEFGHJKLMNPRSTUVWXY]{2}\d{2})|[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z]{2} ?(?:[ACEFGHJKLMNPRSTUVWXY]\d{3}|\d{2}[ACEFGHJKLMNPRSTUVWXY]{2}|\d[ACEFGHJKLMNPRSTUVWXY]\d{2}|\d{2}[ACEFGHJKLMNPRSTUVWXY]\d|\d[ACEFGHJKLMNPRSTUVWXY]{2}\d|[ACEFGHJKLMNPRSTUVWXY]{2}\d{2}|\d{5}|\d{4}[ACEFGHJKLMNPRSTUVWXY]|\d{3}[ACEFGHJKLMNPRSTUVWXY]{2}))\z'
|
|
339
|
+
charset:
|
|
340
|
+
letters_excluded: ["Q"]
|
|
341
|
+
letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"]
|
|
342
|
+
notes: >-
|
|
343
|
+
Two DIFFERENT exclusions, and conflating them is the standard error.
|
|
344
|
+
§ 30 ust. 1 excludes Q from the whole 25-letter alphabet, prefix
|
|
345
|
+
included. § 31 ust. 1 excludes B, D, I, O and Z from the VEHICLE
|
|
346
|
+
wyróżnik only — they stay lawful in the prefix, where DB, DDZ, CIN,
|
|
347
|
+
CB and ZSZ are real codes in załącznik nr 13. Hence [A-PR-Z] on the
|
|
348
|
+
prefix and [ACEFGHJKLMNPRSTUVWXY] on the serial in regex_strict.
|
|
349
|
+
progression: >-
|
|
350
|
+
§ 30 ust. 2 pkt 1. For a powiat whose wyróżnik is ONE letter (prefix two
|
|
351
|
+
characters) the vehicle wyróżnik is five characters, in this exhaustion
|
|
352
|
+
order: five digits 00001-99999; four digits 0001-9999 and a letter;
|
|
353
|
+
three digits 001-999 and two letters; a digit 1-9, a letter and three
|
|
354
|
+
digits 001-999; a digit 1-9, two letters and two digits 01-99. For a
|
|
355
|
+
powiat whose wyróżnik is TWO letters (prefix three characters) it is
|
|
356
|
+
four or five: a letter and three digits; two digits and two letters; a
|
|
357
|
+
digit, a letter and two digits; two digits, a letter and a digit; a
|
|
358
|
+
digit, two letters and a digit; two letters and two digits; then five
|
|
359
|
+
digits; four digits and a letter; three digits and two letters. The list
|
|
360
|
+
is ordered "tworzony kolejno" — each layout is reached only when the
|
|
361
|
+
previous is exhausted, which makes the layout an ORDINAL age signal
|
|
362
|
+
within a powiat. The regulation publishes no dates against it.
|
|
363
|
+
prefix_split_note: >-
|
|
364
|
+
The two-or-three-letter prefix is NOT self-delimiting, but for this
|
|
365
|
+
series it is deterministic: every five-character layout begins with a
|
|
366
|
+
DIGIT, so a letter in the third position means a three-character prefix
|
|
367
|
+
and a digit there means a two-character one. See
|
|
368
|
+
plates/_decode/plates/_decode/pl-powiats.yml, prefix_split.
|
|
369
|
+
separator_note: >-
|
|
370
|
+
The printed gap between prefix and serial is the LEGALISATION-STICKER
|
|
371
|
+
WELL, not a glyph: załącznik nr 12 pkt 2.6 lit. a puts the 18 x 30 mm
|
|
372
|
+
laser-marked slot "symetrycznie między ostatnim znakiem wyróżnika
|
|
373
|
+
województwa lub powiatu a pierwszym znakiem wyróżnika pojazdu". The law
|
|
374
|
+
prescribes no separator character at all, so `pattern` prints a space
|
|
375
|
+
and the regex spells the position ` ?`.
|
|
376
|
+
design:
|
|
377
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
378
|
+
plate_variants:
|
|
379
|
+
- { w: 305, h: 214, unit: mm, note: "samochodowa dwurzędowa — the two-row rear plate, used where the mounting recess requires it (§ 33 ust. 5)" }
|
|
380
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed, spec_note: "§ 27 ust. 2 pkt 1 names the colour as 'barwy czarnej na białym tle'; załącznik nr 12 Tablica 2 bounds white to the CIE quadrangle in common.colorimetry.biala with a luminance factor of 0.35" }
|
|
381
|
+
foreground: "#000000"
|
|
382
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed, note: "the EU field's blue has its OWN and much narrower quadrangle (common.colorimetry.niebieska_pole_ue), distinct from the blue of the diplomatic plate" }
|
|
383
|
+
emblem: { present: true, rendered: placeholder, position: "laser-etched above the legalisation-sticker slot, 17 mm from the top edge", content: "outline of the eagle of the Polish coat of arms, 15 mm high, 0.25 mm line (§ 28 ust. 4 pkt 1)" }
|
|
384
|
+
rear_differs: false
|
|
385
|
+
display: "front and rear (§ 33 ust. 1); front is always the single-row plate (ust. 4); trailers, agricultural tractors, motorcycles and mopeds carry a rear plate only"
|
|
386
|
+
extra: "a keeper may additionally obtain a legalised DUPLICATE plate bearing the same number, to be fixed to a bicycle carrier that covers the rear plate (art. 73 ust. 1b of the ustawa; § 26 ust. 5) — a genuinely unusual provision and a trap for any consumer that assumes one plate number means at most two physical plates"
|
|
387
|
+
region_encoding: "plates/_decode/pl-powiats.yml"
|
|
388
|
+
region_encoding_mechanism: >-
|
|
389
|
+
§ 30 ust. 2 pkt 1: the first letter is the voivodeship, the second — or
|
|
390
|
+
second and third — the powiat, and § 31 ust. 2 puts the whole table inside
|
|
391
|
+
the instrument as załącznik nr 13. Unlike Germany's, the list needs no
|
|
392
|
+
Bundesanzeiger hunt, so the decode file carries all 380 rows and all 689
|
|
393
|
+
prefixes from the primary.
|
|
394
|
+
sources:
|
|
395
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 27 ust. 2 (black on white), § 28 (EU field, eagle), § 30 ust. 1-2 pkt 1 (alphabet and every layout), § 31 (vehicle-wyróżnik exclusions, the annex, the second-letter rule), § 33 (mounting); załącznik nr 12 Rysunek 1 (520 x 114 mm) and Tablica 2 (colour). Accessed 2026-08-02"
|
|
396
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2006/489/text/O/D20060489.pdf # Dz. U. 2006 nr 70 poz. 489: the amendment that replaced the Polish-flag band with the twelve-star EU symbol, and § 6, verbatim: 'Rozporządzenie wchodzi w życie z dniem 2 maja 2006 r.' — the period.start of this series. § 2 keeps the older plates valid, § 3 makes the swap voluntary and number-preserving. Accessed 2026-08-02"
|
|
397
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1251/text/O/D20241251.pdf # Prawo o ruchu drogowym art. 73 ust. 1, 1a, 1b, 1d and art. 76 ust. 1 — the enabling frame and the number-retention rule. Accessed 2026-08-02"
|
|
398
|
+
notes: >-
|
|
399
|
+
THE POLISH STANDARD SERIES. period.start 2006 is a REAL commencement and
|
|
400
|
+
not an instrument date: the EU field became mandatory on 2 May 2006 under
|
|
401
|
+
Dz. U. 2006 nr 70 poz. 489 § 6 — TWO YEARS AFTER accession, which is
|
|
402
|
+
exactly the kind of gap a plausible guess closes wrongly. The FORMAT is
|
|
403
|
+
six years older than the design: the voivodeship+powiat frame dates from
|
|
404
|
+
1 May 2000 (see pl-standard-preeu), which is why this entry and its
|
|
405
|
+
predecessor share a grammar and differ in the blue field. Both remain on
|
|
406
|
+
the road: § 2 of the 2006 amendment preserved existing plates and § 3 made
|
|
407
|
+
the swap optional and number-preserving, so flag-band plates are lawful
|
|
408
|
+
indefinitely and the two series are genuinely parallel. GRAMMAR CAVEAT,
|
|
409
|
+
stated rather than hidden: the layout list has been WIDENED inside this
|
|
410
|
+
series' period — Dz. U. 2017 poz. 2355 § 57 pkt 2 commenced six further
|
|
411
|
+
layouts on 1 July 2018, and this pass did not diff every amendment between
|
|
412
|
+
2006 and 2024, so the regex is the CURRENT union applied across the whole
|
|
413
|
+
period and is wider than what was issued in its early years. A recorded
|
|
414
|
+
gap, and the reason a per-year format claim here would be false precision.
|
|
415
|
+
|
|
416
|
+
# =========================================================================
|
|
417
|
+
# ONE SERIES BACK — the same numbers under a POLISH FLAG band, 2000-2006.
|
|
418
|
+
# =========================================================================
|
|
419
|
+
- id: pl-standard-preeu
|
|
420
|
+
class: standard
|
|
421
|
+
categories: [car, van, truck, bus, trailer]
|
|
422
|
+
period: { start: 2000, end: 2006 }
|
|
423
|
+
period_evidence: instrument-dated-both-ends
|
|
424
|
+
matching: strict
|
|
425
|
+
format:
|
|
426
|
+
pattern: "LL 99999"
|
|
427
|
+
regex: '\A(?:[A-Z]{2} ?(?:\d{5}|\d{4}[A-Z]|\d{3}[A-Z]{2})|[A-Z]{3} ?(?:\d{4}|\d{3}[A-Z]|[A-Z]\d{3}|\d{2}[A-Z]{2}|\d[A-Z]\d{2}|\d{2}[A-Z]\d|\d[A-Z]{2}\d))\z'
|
|
428
|
+
regex_strict: '\A(?:[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z] ?(?:\d{5}|\d{4}[A-PR-Z]|\d{3}[A-PR-Z]{2})|[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z]{2} ?(?:\d{4}|\d{3}[A-PR-Z]|[A-PR-Z]\d{3}|\d{2}[A-PR-Z]{2}|\d[A-PR-Z]\d{2}|\d{2}[A-PR-Z]\d|\d[A-PR-Z]{2}\d))\z'
|
|
429
|
+
charset:
|
|
430
|
+
letters_excluded: ["Q"]
|
|
431
|
+
notes: >-
|
|
432
|
+
regex_strict here carries ONLY the Q exclusion, because the B/D/I/O/Z
|
|
433
|
+
rule is younger than the series' start: it first appears as § 22
|
|
434
|
+
ust. 1 of Dz. U. 2002 nr 133 poz. 1123, in force 21 September 2002,
|
|
435
|
+
and the 1999 instrument that opened this series has no equivalent.
|
|
436
|
+
Applying today's exclusion backwards over 2000-2002 would be a claim
|
|
437
|
+
this pass cannot make.
|
|
438
|
+
grammar_widening: >-
|
|
439
|
+
THE GRAMMAR CHANGED INSIDE THIS SERIES, on a sourced date. Under
|
|
440
|
+
Dz. U. 1999 nr 59 poz. 632 § 21 ust. 2 pkt 1 (1 May 2000) a one-letter
|
|
441
|
+
powiat had five digits, then four digits and a letter, then three digits
|
|
442
|
+
and two letters; a two-letter powiat had four digits, then three digits
|
|
443
|
+
and a letter — five layouts in all. Dz. U. 2002 nr 133 poz. 1123 § 21
|
|
444
|
+
ust. 2 pkt 1 (21 September 2002) DROPPED the two bare-digit layouts for
|
|
445
|
+
two-letter powiats and added five mixed ones. The regex above is the
|
|
446
|
+
UNION of both, which is the series' own issuing grammar over its whole
|
|
447
|
+
period; `matching: strict` is therefore still correct, but a consumer
|
|
448
|
+
dating a specific plate must know that the mixed layouts cannot predate
|
|
449
|
+
21 September 2002.
|
|
450
|
+
design:
|
|
451
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
452
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
453
|
+
foreground: "#000000"
|
|
454
|
+
band: { side: left, color: "#003399", content: "polish-flag+PL", hex_basis: observed }
|
|
455
|
+
band_note: >-
|
|
456
|
+
THE DIFFERENCE THAT MAKES THIS A SERIES. Dz. U. 2002 nr 133 poz. 1123
|
|
457
|
+
§ 19 ust. 1, verbatim: "Każda tablica posiada dodatkowo na niebieskim tle
|
|
458
|
+
symbol barw Rzeczypospolitej Polskiej i litery «PL» barwy białej. Wymóg
|
|
459
|
+
ten nie dotyczy tablic (tablicy) dyplomatycznych." Its 1998 predecessor
|
|
460
|
+
put it more plainly still (Dz. U. 1998 nr 57 poz. 365 § 18): "Każda
|
|
461
|
+
tablica na niebieskim tle ma dodatkowo symbol flagi polskiej barwy
|
|
462
|
+
biało-czerwonej i litery «PL» barwy białej." So the band existed before
|
|
463
|
+
accession and carried the NATIONAL flag, not the EU stars, until 2 May
|
|
464
|
+
2006 — a design fact that is routinely lost.
|
|
465
|
+
emblem: { present: false, note: "the laser-etched eagle outline is a later addition; it is required by § 28 ust. 4 pkt 1 of the current instrument and was introduced by Dz. U. 2019 poz. 1272, whose § 9 gave the trade twelve further months for existing stock" }
|
|
466
|
+
region_encoding: "plates/_decode/pl-powiats.yml"
|
|
467
|
+
region_encoding_note: >-
|
|
468
|
+
Decodable through the same table, with a caution: plates/_decode/pl-powiats.yml holds the
|
|
469
|
+
codes in force in 2026, and the annex has been amended repeatedly since
|
|
470
|
+
2000. Codes added later (for example the second voivodeship letters, and
|
|
471
|
+
the extra powiat codes issued as pools ran out) cannot appear on a plate
|
|
472
|
+
from this period, and codes withdrawn since are absent from the table.
|
|
473
|
+
sources:
|
|
474
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1999/632/text/O/D19990632.pdf # Dz. U. 1999 nr 59 poz. 632: § 21 ust. 2 pkt 1 (the 2000 grammar), § 24 (the wyróżniki annex), § 39 (the pre-reform code tables and the stock rule), § 41 ('Do dnia 30 kwietnia 2000 r. organ rejestrujący wydaje tablice rejestracyjne spełniające warunki określone w § 39'), § 49 (commencement of §§ 21-24 on 1 May 2000). Accessed 2026-08-02"
|
|
475
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2002/1123/text/O/D20021123.pdf # Dz. U. 2002 nr 133 poz. 1123: § 18 ust. 3 (black on white), § 19 ust. 1 (the Polish-flag band), § 21 ust. 2 pkt 1 (the widened grammar), § 22 ust. 1 (the first appearance of the B/D/I/O/Z exclusion). In force 21 September 2002. Accessed 2026-08-02"
|
|
476
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2006/489/text/O/D20060489.pdf # Dz. U. 2006 nr 70 poz. 489 § 6: the EU field from 2 May 2006 — this series' period.end. Accessed 2026-08-02"
|
|
477
|
+
notes: >-
|
|
478
|
+
THE FLAG-BAND PLATE, 1 May 2000 to 2 May 2006 — a design change at the end
|
|
479
|
+
and a system change at the beginning, both instrument-dated. period.start
|
|
480
|
+
is the commencement carved out of Dz. U. 1999 nr 59 poz. 632 § 49 for the
|
|
481
|
+
plate provisions ("§ 22-24, § 29 i 30, które wchodzą w życie z dniem
|
|
482
|
+
1 maja 2000 r."), NOT the 1 July 1999 on which the rest of that instrument
|
|
483
|
+
commenced and NOT the 2001 that secondary descriptions repeat. period.end
|
|
484
|
+
is Dz. U. 2006 nr 70 poz. 489 § 6. Distinct from pl-standard by the band
|
|
485
|
+
alone, and from pl-standard-pre2000 by the entire coding system.
|
|
486
|
+
|
|
487
|
+
# =========================================================================
|
|
488
|
+
# TWO SERIES BACK — the pre-reform system, 49 voivodeships, ends 2000-04-30.
|
|
489
|
+
# =========================================================================
|
|
490
|
+
- id: pl-standard-pre2000
|
|
491
|
+
class: standard
|
|
492
|
+
categories: [car, van, truck, bus, trailer]
|
|
493
|
+
period: { start: 1993, end: 2000 }
|
|
494
|
+
period_evidence: instrument-dated-both-ends
|
|
495
|
+
matching: strict
|
|
496
|
+
format:
|
|
497
|
+
pattern: "LLL 9999"
|
|
498
|
+
regex: '\A[A-Z]{3} ?(?:\d{4}|\d{3}[A-Z])\z'
|
|
499
|
+
regex_strict: '\A[A-PR-Z]{3} ?(?:\d{4}|\d{3}[A-PR-Z])\z'
|
|
500
|
+
charset:
|
|
501
|
+
letters_excluded: ["Q"]
|
|
502
|
+
notes: "Dz. U. 1993 nr 37 poz. 164 § 19 and Dz. U. 1998 nr 57 poz. 365 § 20 ust. 1 both give the same 25-letter set (A-Z without Q); neither carries the B/D/I/O/Z rule, which is a 2002 invention."
|
|
503
|
+
progression: >-
|
|
504
|
+
Dz. U. 1998 nr 57 poz. 365 § 20 ust. 2 pkt 1, verbatim: "na tablicach
|
|
505
|
+
zwyczajnych dwie pierwsze litery stanowią wyróżnik województwa, trzecia
|
|
506
|
+
litera i cztery cyfry w przedziale od 0001 do 9999 lub trzecia litera
|
|
507
|
+
i trzy cyfry w przedziale od 001 do 999 oraz litera stanowią wyróżnik
|
|
508
|
+
pojazdu." The 1993 instrument says the same in § 18 ust. 1. So the
|
|
509
|
+
pre-reform plate is TWO letters of voivodeship and a THREE-character
|
|
510
|
+
prefix in total — structurally the inverse of the post-2000 plate, where
|
|
511
|
+
one letter is the voivodeship and the prefix is two or three characters.
|
|
512
|
+
design:
|
|
513
|
+
plate: { w: null, h: null, unit: mm }
|
|
514
|
+
dimensions_note: "no dimensions were secured for this series: Dz. U. 1993 nr 37 poz. 164 § 16 ust. 1 delegates them entirely — 'Tablice rejestracyjne powinny odpowiadać wymaganiom określonym w obowiązującej normie' — and Dz. U. 1999 nr 59 poz. 632 § 39 ust. 5 names that norm as PN 5-73200, which was not fetched in this pass. Recorded gap."
|
|
515
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
516
|
+
foreground: "#000000"
|
|
517
|
+
colour_evidence: >-
|
|
518
|
+
WHITE IS SOURCED ONLY FROM 1998 ONWARD. Dz. U. 1998 nr 57 poz. 365 § 17
|
|
519
|
+
ust. 3 is the earliest instrument read here that states a colour: "Na
|
|
520
|
+
tablicy zwyczajnej wytłoczony jest numer rejestracyjny składający się
|
|
521
|
+
z wyróżnika województwa i wyróżnika pojazdu barwy czarnej na białym
|
|
522
|
+
tle." The 1993 instrument states none at all, delegating to the norm, so
|
|
523
|
+
the transition from the black plate that preceded it IS NOT DATED HERE.
|
|
524
|
+
The widely repeated claim that Poland went from black to white in a
|
|
525
|
+
particular year is not asserted; it is a recorded gap whose answer lives
|
|
526
|
+
in PN 5-73200 and its predecessors.
|
|
527
|
+
band: { side: left, color: "#003399", content: "polish-flag+PL", hex_basis: observed, note: "sourced for 1998 onward only, from § 18 of Dz. U. 1998 nr 57 poz. 365; whether the 1993-1998 plate carried the band was not established" }
|
|
528
|
+
emblem: { present: false }
|
|
529
|
+
region_encoding: none
|
|
530
|
+
region_encoding_note: >-
|
|
531
|
+
NOT decodable through plates/_decode/pl-powiats.yml, and a parse API must
|
|
532
|
+
not route a pre-2000 string through it. This series encodes the OLD
|
|
533
|
+
49-voivodeship system in the first TWO letters, a scheme with no
|
|
534
|
+
relationship to the one-letter voivodeship codes of załącznik nr 13. The
|
|
535
|
+
code lists exist and are pinned in `sources` — Dz. U. 1993 nr 37 poz. 164
|
|
536
|
+
§ 20, and the two transitional tables in Dz. U. 1999 nr 59 poz. 632 § 39
|
|
537
|
+
ust. 1 and ust. 2 — but they are NOT shipped as a decode table here,
|
|
538
|
+
deliberately: both are scanned typescript whose OCR is visibly unreliable
|
|
539
|
+
(the 1999 tables render "WS" as "W5" and "KA" as "K~"), and a code table
|
|
540
|
+
transcribed from a bad scan is worse than an honest gap. A dedicated pass
|
|
541
|
+
with page images is the fix, and this is a recorded L4 target.
|
|
542
|
+
sources:
|
|
543
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1993/164/text/O/D19930164.pdf # Dz. U. 1993 nr 37 poz. 164 (rozporządzenie MTiGM z 14 kwietnia 1993 r. w sprawie rejestracji, ewidencji i oznaczania pojazdów): § 13 (the four plate types), § 16 ust. 1 (dimensions delegated to the norm), § 18 ust. 1 (the two-letter voivodeship grammar), § 19 (the 25-letter alphabet), § 20 (the voivodeship code table). Accessed 2026-08-02"
|
|
544
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1998/365/text/O/D19980365.pdf # Dz. U. 1998 nr 57 poz. 365: § 17 (colours for all five plate types), § 18 (the Polish-flag band), § 20 ust. 2 (the grammar), § 21 (the 49-voivodeship code table). Accessed 2026-08-02"
|
|
545
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1999/632/text/O/D19990632.pdf # Dz. U. 1999 nr 59 poz. 632 § 39 ust. 2, the transitional stock rule that ENDS this series: plates bearing the pre-reform voivodeship codes could be issued from stock 'aż do wyczerpania się tych zapasów, jednak nie dłużej niż do dnia 30 kwietnia 2000 r.'; § 41 says the same from the other side; § 42 keeps them valid on the road indefinitely. Accessed 2026-08-02"
|
|
546
|
+
notes: >-
|
|
547
|
+
THE PRE-REFORM PLATE. period.end 2000 is SOURCED AT THE DAY, from the
|
|
548
|
+
complement of the reform: Dz. U. 1999 nr 59 poz. 632 § 41 and § 39 ust. 2
|
|
549
|
+
allow issue of the old codes only "do dnia 30 kwietnia 2000 r.", so
|
|
550
|
+
30 April 2000 is the last lawful ASSIGNMENT. HOW LONG THEY REMAIN VALID ON
|
|
551
|
+
THE ROAD IS NOT A GAP — § 42 answers it in terms ("Tablice (tablica)
|
|
552
|
+
rejestracyjne wydane na podstawie dotychczasowych przepisów ... zachowują
|
|
553
|
+
swoją ważność") and art. 73 ust. 1a of the current ustawa still lets a
|
|
554
|
+
buyer keep a conforming plate, so pre-2000 plates are lawful indefinitely
|
|
555
|
+
and are re-issued to new keepers to this day. period.start 1993 is
|
|
556
|
+
INSTRUMENT-IN-FORCE and says so: the format is certainly older than the
|
|
557
|
+
1993 rozporządzenie, whose own § 29 preserves plates issued under earlier
|
|
558
|
+
rules, but the earlier instrument was not fetched in this pass.
|
|
559
|
+
|
|
560
|
+
# =========================================================================
|
|
561
|
+
# MOTORCYCLES — and, unusually, agricultural tractors and L6e/L7e quads.
|
|
562
|
+
# =========================================================================
|
|
563
|
+
- id: pl-motorcycle
|
|
564
|
+
class: motorcycle
|
|
565
|
+
categories: [motorcycle, tractor, quadricycle]
|
|
566
|
+
period: { start: 2006 }
|
|
567
|
+
period_evidence: enacted-commencement
|
|
568
|
+
matching: strict
|
|
569
|
+
format:
|
|
570
|
+
pattern: "LL 9999"
|
|
571
|
+
regex: '\A(?:[A-Z]{2} ?(?:\d{4}|\d{3}[A-Z]|\d{2}[A-Z]\d|\d[A-Z]\d{2}|[A-Z]\d{3}|\d{2}[A-Z]{2}|\d[A-Z]{2}\d|[A-Z]{2}\d{2})|[A-Z]{3} ?(?:[A-Z]\d{3}|\d{2}[A-Z]{2}|\d[A-Z]\d{2}|\d{2}[A-Z]\d|\d[A-Z]{2}\d|[A-Z]{2}\d{2}|[A-Z]\d{2}[A-Z]|[A-Z]\d[A-Z]{2}))\z'
|
|
572
|
+
regex_strict: '\A(?:[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z] ?(?:\d{4}|\d{3}[ACEFGHJKLMNPRSTUVWXY]|\d{2}[ACEFGHJKLMNPRSTUVWXY]\d|\d[ACEFGHJKLMNPRSTUVWXY]\d{2}|[ACEFGHJKLMNPRSTUVWXY]\d{3}|\d{2}[ACEFGHJKLMNPRSTUVWXY]{2}|\d[ACEFGHJKLMNPRSTUVWXY]{2}\d|[ACEFGHJKLMNPRSTUVWXY]{2}\d{2})|[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z]{2} ?(?:[ACEFGHJKLMNPRSTUVWXY]\d{3}|\d{2}[ACEFGHJKLMNPRSTUVWXY]{2}|\d[ACEFGHJKLMNPRSTUVWXY]\d{2}|\d{2}[ACEFGHJKLMNPRSTUVWXY]\d|\d[ACEFGHJKLMNPRSTUVWXY]{2}\d|[ACEFGHJKLMNPRSTUVWXY]{2}\d{2}|[ACEFGHJKLMNPRSTUVWXY]\d{2}[ACEFGHJKLMNPRSTUVWXY]|[ACEFGHJKLMNPRSTUVWXY]\d[ACEFGHJKLMNPRSTUVWXY]{2}))\z'
|
|
573
|
+
charset: { letters_excluded: ["Q"], letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"], notes: "§ 30 ust. 1 and § 31 ust. 1, as pl-standard" }
|
|
574
|
+
progression: >-
|
|
575
|
+
§ 30 ust. 2 pkt 3. The vehicle wyróżnik is ALWAYS four characters
|
|
576
|
+
whatever the prefix length, which is the structural difference from the
|
|
577
|
+
car series and the reason the prefix boundary here is resolved by total
|
|
578
|
+
length rather than by the third character.
|
|
579
|
+
prefix_split_caveat: >-
|
|
580
|
+
THE CAR RULE DOES NOT APPLY. § 30 ust. 2 pkt 3 lit. a gives one-letter
|
|
581
|
+
powiats the layouts "litera i trzy cyfry" and "dwie litery i dwie
|
|
582
|
+
cyfry", which BEGIN WITH A LETTER, so a letter in the third position no
|
|
583
|
+
longer proves a three-character prefix. Six of those eight layouts —
|
|
584
|
+
the third to eighth tirets — were added by Dz. U. 2017 poz. 2355 and
|
|
585
|
+
commenced on 1 July 2018 by its § 57 pkt 2, so the ambiguity is itself
|
|
586
|
+
younger than the series.
|
|
587
|
+
grammar_widening_note: >-
|
|
588
|
+
As pl-standard: the regex is the CURRENT union applied across the whole
|
|
589
|
+
period, and is wider than what was issued before 1 July 2018. Recorded
|
|
590
|
+
gap rather than a per-year claim.
|
|
591
|
+
design:
|
|
592
|
+
plate: { w: 190, h: 150, unit: mm, note: "always two-row (§ 26 ust. 1 pkt 2)" }
|
|
593
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
594
|
+
foreground: "#000000"
|
|
595
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed, note: "the EU field on a motorcycle plate is 26 x 35 mm per Rysunek 8, against 30 x 40 mm on a car plate" }
|
|
596
|
+
emblem: { present: true, rendered: placeholder, content: "eagle outline, 15 mm from the top edge on this size" }
|
|
597
|
+
rear_differs: false
|
|
598
|
+
display: "rear only for motorcycles, mopeds, trailers and agricultural tractors (§ 33 ust. 1); L2e, L5e, L6e and L7e vehicles also carry one at the front where they have the recess (ust. 2); a tractor may carry it at the front where its construction requires (ust. 3)"
|
|
599
|
+
manufacture: "single plate, not a set (załącznik nr 12 pkt 2.4) — except that three-wheelers of class L5e and L2e and quadricycles of L7e/L6e may be given a pair"
|
|
600
|
+
region_encoding: "plates/_decode/pl-powiats.yml"
|
|
601
|
+
variants:
|
|
602
|
+
- class: motorcycle
|
|
603
|
+
format: { pattern: "LL 9999" }
|
|
604
|
+
note: >-
|
|
605
|
+
THE MOTORCYCLE-TRAILER RULE, which has no analogue in the neighbouring
|
|
606
|
+
jurisdictions and which a vehicle-keyed consumer will misread. § 33
|
|
607
|
+
ust. 6: "Z tyłu przyczepy motocyklowej umieszcza się tablicę
|
|
608
|
+
rejestracyjną motocyklową przeniesioną z motocykla, który ciągnie
|
|
609
|
+
przyczepę." The motorcycle's own plate is PHYSICALLY MOVED to the
|
|
610
|
+
trailer while towing — so one number lawfully appears on two different
|
|
611
|
+
vehicles at different moments, and never on both at once.
|
|
612
|
+
sources:
|
|
613
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 33 ust. 6. Accessed 2026-08-02"
|
|
614
|
+
sources:
|
|
615
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 26 ust. 1 pkt 2 (motorcycle plates also carry agricultural tractors and L6e/L7e), § 27 ust. 2, § 30 ust. 2 pkt 3, § 33; załącznik nr 12 Rysunek 1 (190 x 150 mm) and Rysunek 8. Accessed 2026-08-02"
|
|
616
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2017/2355/text/O/D20172355.pdf # Dz. U. 2017 poz. 2355 § 57 pkt 2: § 31 ust. 2 pkt 3 lit. a tiret trzecie-ósme — the six added motorcycle layouts — enter into force 1 July 2018. Accessed 2026-08-02"
|
|
617
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2006/489/text/O/D20060489.pdf # § 6: the EU field from 2 May 2006, which is this series' period.start for the same reason as pl-standard. Accessed 2026-08-02"
|
|
618
|
+
notes: >-
|
|
619
|
+
MOTORCYCLE PLATES, and the class carries more than motorcycles: § 26
|
|
620
|
+
ust. 1 pkt 2 puts agricultural tractors and the "samochodowy inny" L6e and
|
|
621
|
+
L7e quadricycles on the same 190 x 150 mm two-row plate, so a Polish
|
|
622
|
+
tractor wears a motorcycle plate unless it happens to have a car-plate
|
|
623
|
+
recess (ust. 2). period.start 2006 is the EU-field commencement, as for
|
|
624
|
+
pl-standard; the format frame is again older.
|
|
625
|
+
|
|
626
|
+
# =========================================================================
|
|
627
|
+
# MOPEDS — the smallest plate, and the one with no eagle.
|
|
628
|
+
# =========================================================================
|
|
629
|
+
- id: pl-moped
|
|
630
|
+
class: moped
|
|
631
|
+
categories: [moped]
|
|
632
|
+
period: { start: 2006 }
|
|
633
|
+
period_evidence: enacted-commencement
|
|
634
|
+
matching: strict
|
|
635
|
+
format:
|
|
636
|
+
pattern: "LL 9999"
|
|
637
|
+
regex: '\A(?:[A-Z]{2} ?(?:\d{4}|\d{3}[A-Z]|\d{2}[A-Z]\d|\d[A-Z]\d{2}|[A-Z]\d{3}|\d{2}[A-Z]{2}|\d[A-Z]{2}\d|[A-Z]{2}\d{2})|[A-Z]{3} ?(?:[A-Z]\d{3}|\d{2}[A-Z]{2}|\d[A-Z]\d{2}|\d{2}[A-Z]\d|\d[A-Z]{2}\d|[A-Z]{2}\d{2}|[A-Z]\d{2}[A-Z]|[A-Z]\d[A-Z]{2}))\z'
|
|
638
|
+
regex_strict: '\A(?:[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z] ?(?:\d{4}|\d{3}[ACEFGHJKLMNPRSTUVWXY]|\d{2}[ACEFGHJKLMNPRSTUVWXY]\d|\d[ACEFGHJKLMNPRSTUVWXY]\d{2}|[ACEFGHJKLMNPRSTUVWXY]\d{3}|\d{2}[ACEFGHJKLMNPRSTUVWXY]{2}|\d[ACEFGHJKLMNPRSTUVWXY]{2}\d|[ACEFGHJKLMNPRSTUVWXY]{2}\d{2})|[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z]{2} ?(?:[ACEFGHJKLMNPRSTUVWXY]\d{3}|\d{2}[ACEFGHJKLMNPRSTUVWXY]{2}|\d[ACEFGHJKLMNPRSTUVWXY]\d{2}|\d{2}[ACEFGHJKLMNPRSTUVWXY]\d|\d[ACEFGHJKLMNPRSTUVWXY]{2}\d|[ACEFGHJKLMNPRSTUVWXY]{2}\d{2}|[ACEFGHJKLMNPRSTUVWXY]\d{2}[ACEFGHJKLMNPRSTUVWXY]|[ACEFGHJKLMNPRSTUVWXY]\d[ACEFGHJKLMNPRSTUVWXY]{2}))\z'
|
|
639
|
+
charset: { letters_excluded: ["Q"], letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"] }
|
|
640
|
+
note: "§ 30 ust. 2 pkt 3 governs 'tablice rejestracyjne zwyczajne motocyklowe i motorowerowe' together, so the grammar is identical to pl-motorcycle and the series exists because the PLATE differs."
|
|
641
|
+
design:
|
|
642
|
+
plate: { w: 140, h: 114, unit: mm, note: "always two-row; the smallest Polish plate, and almost square" }
|
|
643
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
644
|
+
foreground: "#000000"
|
|
645
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed, note: "22.5 x 30 mm on this size (Rysunek 8) — the EU field shrinks with the plate but is never dropped" }
|
|
646
|
+
emblem: { present: false, note: "§ 28 ust. 6 expressly disapplies the eagle to moped plates and to temporary plates — the only two civil plates without it" }
|
|
647
|
+
display: "rear only (§ 33 ust. 1)"
|
|
648
|
+
manufacture: "single plate (załącznik nr 12 pkt 2.4)"
|
|
649
|
+
region_encoding: "plates/_decode/pl-powiats.yml"
|
|
650
|
+
sources:
|
|
651
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 26 ust. 1 pkt 3, § 27 ust. 5, § 28 ust. 6, § 30 ust. 2 pkt 3; załącznik nr 12 Rysunek 1 (140 x 114 mm) and Rysunek 8. Accessed 2026-08-02"
|
|
652
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2006/489/text/O/D20060489.pdf # § 6, the EU field from 2 May 2006. Accessed 2026-08-02"
|
|
653
|
+
notes: >-
|
|
654
|
+
MOPED PLATES. Poland REGISTERS mopeds — there is no German-style
|
|
655
|
+
Versicherungskennzeichen and no annual colour cycle; a moped gets an
|
|
656
|
+
ordinary registration number from the same powiat pool as a car. The plate
|
|
657
|
+
is the jurisdiction's smallest at 140 x 114 mm and, with the temporary
|
|
658
|
+
plate, one of only two civil Polish plates that carry no eagle.
|
|
659
|
+
|
|
660
|
+
# =========================================================================
|
|
661
|
+
# THE REDUCED CAR PLATE — 305 x 114 mm, voivodeship letter ONLY.
|
|
662
|
+
# =========================================================================
|
|
663
|
+
- id: pl-standard-reduced
|
|
664
|
+
class: standard
|
|
665
|
+
categories: [car, van]
|
|
666
|
+
period: { start: 2018 }
|
|
667
|
+
period_evidence: enacted-commencement
|
|
668
|
+
matching: strict
|
|
669
|
+
format:
|
|
670
|
+
pattern: "L 999"
|
|
671
|
+
regex: '\A[A-Z] ?(?:\d{3}|\d{2}[A-Z]|\d[A-Z]\d|[A-Z]\d{2}|\d[A-Z]{2}|[A-Z]{2}\d|[A-Z]\d[A-Z])\z'
|
|
672
|
+
regex_strict: '\A[ABCDEFGIJKLMNOPRSTVWXYZ] ?(?:\d{3}|\d{2}[ACEFGHJKLMNPRSTUVWXY]|\d[ACEFGHJKLMNPRSTUVWXY]\d|[ACEFGHJKLMNPRSTUVWXY]\d{2}|\d[ACEFGHJKLMNPRSTUVWXY]{2}|[ACEFGHJKLMNPRSTUVWXY]{2}\d|[ACEFGHJKLMNPRSTUVWXY]\d[ACEFGHJKLMNPRSTUVWXY])\z'
|
|
673
|
+
charset: { letters_excluded: ["Q"], letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"] }
|
|
674
|
+
progression: >-
|
|
675
|
+
§ 30 ust. 2 pkt 2, and it is the ONE Polish civil plate with NO POWIAT
|
|
676
|
+
CODE AT ALL: "dla powiatów z wyróżnikiem jednoliterowym i dwuliterowym
|
|
677
|
+
pierwsza litera stanowi wyróżnik województwa, następne cyfry lub cyfry
|
|
678
|
+
i litera, lub litery stanowią wyróżnik pojazdu" — one voivodeship letter
|
|
679
|
+
and three characters, in the exhaustion order 999, 99L, 9L9, L99, 9LL,
|
|
680
|
+
LL9, L9L. The powiat is unrecoverable from the string, by design, because
|
|
681
|
+
there is no room for it.
|
|
682
|
+
design:
|
|
683
|
+
plate: { w: 305, h: 114, unit: mm }
|
|
684
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
685
|
+
foreground: "#000000"
|
|
686
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed }
|
|
687
|
+
emblem: { present: true, rendered: placeholder }
|
|
688
|
+
region_encoding: none
|
|
689
|
+
region_encoding_note: >-
|
|
690
|
+
DELIBERATELY none, and this is the fact that makes the series worth
|
|
691
|
+
separating: the reduced plate carries only the VOIVODESHIP letter, so a
|
|
692
|
+
parse API can resolve it to one of sixteen voivodeships (or, where the
|
|
693
|
+
voivodeship has two letters, to one voivodeship exactly) and can never
|
|
694
|
+
resolve it to a powiat. Routing it through plates/_decode/pl-powiats.yml would invent a
|
|
695
|
+
district. The voivodeship letters themselves are in that file's
|
|
696
|
+
`voivodeships` block.
|
|
697
|
+
sources:
|
|
698
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 26 ust. 1 pkt 1 lit. b, § 27 ust. 3, § 30 ust. 2 pkt 2 and ust. 3; załącznik nr 12 Rysunek 1 (305 x 114 mm). Accessed 2026-08-02"
|
|
699
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2017/2355/text/O/D20172355.pdf # Dz. U. 2017 poz. 2355 introduced the type (§ 27 ust. 1 pkt 1 lit. b, § 31 ust. 2 pkt 2) and § 57 pkt 2 commenced exactly those provisions 'z dniem 1 lipca 2018 r.' — the period.start here, and NOT the instrument's own 1 January 2018 general commencement. Accessed 2026-08-02"
|
|
700
|
+
notes: >-
|
|
701
|
+
THE REDUCED SINGLE-ROW PLATE, for vehicles whose mounting recess is too
|
|
702
|
+
small for a 520 mm plate — the American-import case above all. period.start
|
|
703
|
+
2018 is a genuine commencement carved out of Dz. U. 2017 poz. 2355 § 57
|
|
704
|
+
pkt 2, four provisions of which were held back to 1 July 2018 while the
|
|
705
|
+
rest of the instrument began on 1 January. Excluded from the type by
|
|
706
|
+
§ 26 ust. 1 pkt 1 lit. b: motorcycles, agricultural tractors, slow vehicles
|
|
707
|
+
in tourist road-trains, and "samochodowy inny". § 30 ust. 3 pairs it with
|
|
708
|
+
the reduced TEMPORARY plate: an authority may issue both bearing the same
|
|
709
|
+
number.
|
|
710
|
+
|
|
711
|
+
# =========================================================================
|
|
712
|
+
# THE GREEN PLATE — electric and hydrogen, from 1 January 2020.
|
|
713
|
+
# =========================================================================
|
|
714
|
+
- id: pl-electric
|
|
715
|
+
class: electric
|
|
716
|
+
categories: [car, van, truck, bus, motorcycle, moped]
|
|
717
|
+
period: { start: 2020 }
|
|
718
|
+
period_evidence: enacted-commencement
|
|
719
|
+
matching: strict
|
|
720
|
+
format:
|
|
721
|
+
pattern: "LL 99999"
|
|
722
|
+
regex: '\A(?:[A-Z]{2} ?(?:\d{5}|\d{4}[A-Z]|\d{3}[A-Z]{2}|\d[A-Z]\d{3}|\d[A-Z]{2}\d{2})|[A-Z]{3} ?(?:[A-Z]\d{3}|\d{2}[A-Z]{2}|\d[A-Z]\d{2}|\d{2}[A-Z]\d|\d[A-Z]{2}\d|[A-Z]{2}\d{2}|\d{5}|\d{4}[A-Z]|\d{3}[A-Z]{2}))\z'
|
|
723
|
+
regex_strict: '\A(?:[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z] ?(?:\d{5}|\d{4}[ACEFGHJKLMNPRSTUVWXY]|\d{3}[ACEFGHJKLMNPRSTUVWXY]{2}|\d[ACEFGHJKLMNPRSTUVWXY]\d{3}|\d[ACEFGHJKLMNPRSTUVWXY]{2}\d{2})|[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z]{2} ?(?:[ACEFGHJKLMNPRSTUVWXY]\d{3}|\d{2}[ACEFGHJKLMNPRSTUVWXY]{2}|\d[ACEFGHJKLMNPRSTUVWXY]\d{2}|\d{2}[ACEFGHJKLMNPRSTUVWXY]\d|\d[ACEFGHJKLMNPRSTUVWXY]{2}\d|[ACEFGHJKLMNPRSTUVWXY]{2}\d{2}|\d{5}|\d{4}[ACEFGHJKLMNPRSTUVWXY]|\d{3}[ACEFGHJKLMNPRSTUVWXY]{2}))\z'
|
|
724
|
+
charset: { letters_excluded: ["Q"], letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"] }
|
|
725
|
+
grammar_note: >-
|
|
726
|
+
THE GREEN PLATE HAS NO GRAMMAR OF ITS OWN. § 27 ust. 2-5 make green a
|
|
727
|
+
COLOUR CONDITION on the ordinary car, reduced, individual and moped
|
|
728
|
+
plates, not a separate numbering system, so the regex above is
|
|
729
|
+
pl-standard's. A green plate on a moped follows pl-moped's grammar and a
|
|
730
|
+
green individual plate follows pl-individual's; this series exists
|
|
731
|
+
because the design and the period differ, not the format.
|
|
732
|
+
design:
|
|
733
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
734
|
+
plate_variants:
|
|
735
|
+
- { w: 305, h: 214, unit: mm, note: "samochodowa dwurzędowa" }
|
|
736
|
+
- { w: 305, h: 114, unit: mm, note: "jednorzędowa zmniejszona" }
|
|
737
|
+
- { w: 140, h: 114, unit: mm, note: "motorowerowa — for a moped with an electric motor (§ 27 ust. 5 pkt 2)" }
|
|
738
|
+
background: { color: "#B5D99C", finish: retroreflective, hex_basis: observed, spec_note: "§ 27 ust. 2 pkt 2 names the colour only as 'zielonym tle'; załącznik nr 12 Tablica 2 bounds it to the CIE quadrangle in common.colorimetry.zielona, which is the WIDEST gamut in the Polish table — its luminance factor is a RANGE (0.20 to 0.40) where every other colour has a single bound, so the statutory green is deliberately a band of pale yellow-greens rather than one colour. The hex is one plausible point inside it and is marked observed." }
|
|
739
|
+
foreground: "#000000"
|
|
740
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed }
|
|
741
|
+
emblem: { present: true, rendered: placeholder, note: "absent on the moped variant, per § 28 ust. 6" }
|
|
742
|
+
region_encoding: "plates/_decode/pl-powiats.yml"
|
|
743
|
+
sources:
|
|
744
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2019/1272/text/O/D20191272.pdf # Dz. U. 2019 poz. 1272 (rozporządzenie MI z 8 lipca 2019 r.): inserts 'barwy czarnej na zielonym tle, w przypadku tablicy rejestracyjnej wydawanej dla pojazdu elektrycznego albo pojazdu napędzanego wodorem' into § 28 of the 2017 instrument and adds § 28 ust. 5a for electric mopeds; § 9, verbatim: 'Rozporządzenie wchodzi w życie z dniem 1 stycznia 2020 r.'; § 6 lets registering authorities ORDER green plates 'począwszy od dnia 15 grudnia 2019 r.'; §§ 4-5 give existing EV keepers a right to swap. Accessed 2026-08-02"
|
|
745
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 27 ust. 2 pkt 2, ust. 3 pkt 2, ust. 4 pkt 2, ust. 5 pkt 2 — the current re-enactment across all four plate types; załącznik nr 12 pkt 2.1 and 2.14 (green added to the permitted retroreflective colours), Tablica 1 and Tablica 2. Accessed 2026-08-02"
|
|
746
|
+
notes: >-
|
|
747
|
+
THE GREEN PLATE, and its date is 1 JANUARY 2020 — not 2022, which is what
|
|
748
|
+
a reader gets by taking the current instrument's date for the rule's date.
|
|
749
|
+
The enabling amendment is Dz. U. 2019 poz. 1272, whose § 9 commences it on
|
|
750
|
+
1 January 2020; the 2022 and 2024 instruments merely re-enact it. Scope is
|
|
751
|
+
defined by cross-reference rather than in terms: a "pojazd elektryczny" is
|
|
752
|
+
one within art. 2 pkt 12 and a "pojazd napędzany wodorem" one within art. 2
|
|
753
|
+
pkt 15 of the ustawa o elektromobilności i paliwach alternatywnych, so a
|
|
754
|
+
plug-in hybrid does NOT qualify. The plate is optional in practice for
|
|
755
|
+
vehicles registered before 2020: §§ 4-5 of the 2019 instrument give the
|
|
756
|
+
keeper a right to swap, never a duty, so green and white plates on
|
|
757
|
+
identical electric cars are both correct.
|
|
758
|
+
|
|
759
|
+
# =========================================================================
|
|
760
|
+
# HISTORIC VEHICLES — black on yellow, with a car pictogram.
|
|
761
|
+
# =========================================================================
|
|
762
|
+
- id: pl-historic
|
|
763
|
+
class: historic
|
|
764
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
765
|
+
period: { start: 2000 }
|
|
766
|
+
period_evidence: enacted-commencement
|
|
767
|
+
matching: strict
|
|
768
|
+
format:
|
|
769
|
+
pattern: "LL 99L"
|
|
770
|
+
regex: '\A(?:[A-Z]{2} ?(?:\d{2}[A-Z]|\d{3})|[A-Z]{3} ?(?:\d[A-Z]|\d{2}|[A-Z]\d))\z'
|
|
771
|
+
regex_strict: '\A(?:[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z] ?(?:\d{2}[ACEFGHJKLMNPRSTUVWXY]|\d{3})|[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z]{2} ?(?:\d[ACEFGHJKLMNPRSTUVWXY]|\d{2}|[ACEFGHJKLMNPRSTUVWXY]\d))\z'
|
|
772
|
+
charset: { letters_excluded: ["Q"], letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"] }
|
|
773
|
+
progression: >-
|
|
774
|
+
§ 30 ust. 2 pkt 5 — the SHORTEST civil serials in the system. A one-letter
|
|
775
|
+
powiat gets two digits and a letter, then three digits; a two-letter
|
|
776
|
+
powiat gets a digit and a letter, then two digits, then a letter and a
|
|
777
|
+
digit. A historic plate is therefore five characters in total where an
|
|
778
|
+
ordinary one is seven or eight, which is the quickest way to recognise
|
|
779
|
+
one after the colour.
|
|
780
|
+
design:
|
|
781
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
782
|
+
plate_variants:
|
|
783
|
+
- { w: 305, h: 214, unit: mm, note: "zabytkowa dwurzędowa" }
|
|
784
|
+
- { w: 190, h: 150, unit: mm, note: "motocyklowa zabytkowa" }
|
|
785
|
+
- { w: 305, h: 114, unit: mm, note: "zabytkowa jednorzędowa zmniejszona — takes the pl-standard-reduced grammar of § 30 ust. 2 pkt 2, not the grammar above, and carries the car pictogram as a LASER GRAPHIC rather than an embossed symbol" }
|
|
786
|
+
background: { color: "#F5D800", finish: retroreflective, hex_basis: observed, spec_note: "§ 27 ust. 6 names 'żółtym tle'; the CIE quadrangle is common.colorimetry.zolta with a luminance factor of 0.27" }
|
|
787
|
+
foreground: "#000000"
|
|
788
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed }
|
|
789
|
+
symbol: { present: true, rendered: placeholder, content: "the pojazd zabytkowy pictogram — a stylised veteran car, embossed in black on the full-size plate (§ 27 ust. 6, 'oraz symbol pojazdu zabytkowego barwy czarnej'), and laser-etched to a 25 mm width on the reduced plate (załącznik nr 12 pkt 2.7, Rysunek 3)" }
|
|
790
|
+
emblem: { present: true, rendered: placeholder }
|
|
791
|
+
region_encoding: "plates/_decode/pl-powiats.yml"
|
|
792
|
+
sources:
|
|
793
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 25 pkt 3, § 27 ust. 6-7, § 30 ust. 2 pkt 5; załącznik nr 12 pkt 2.7 and Rysunki 3, 17-19. Accessed 2026-08-02"
|
|
794
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1999/632/text/O/D19990632.pdf # Dz. U. 1999 nr 59 poz. 632 § 18 ust. 5 (black on yellow with the pictogram) and § 21 ust. 2 pkt 5 (the short grammar), commenced with the rest of the plate provisions on 1 May 2000 by § 49. Accessed 2026-08-02"
|
|
795
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1998/365/text/O/D19980365.pdf # Dz. U. 1998 nr 57 poz. 365 § 17 ust. 5 and § 20 ust. 2 pkt 3 — the yellow historic plate ALREADY existed before the 2000 reform, under the old two-letter voivodeship coding. Accessed 2026-08-02"
|
|
796
|
+
notes: >-
|
|
797
|
+
THE YELLOW CLASSIC PLATE. period.start 2000 is the commencement of the
|
|
798
|
+
voivodeship+powiat coding this series' grammar depends on, not the birth
|
|
799
|
+
of the class: Dz. U. 1998 nr 57 poz. 365 § 17 ust. 5 already prescribed
|
|
800
|
+
"barwy czarnej na żółtym tle" with the pictogram in 1998, under the
|
|
801
|
+
pre-reform two-letter codes, and that earlier form is NOT modelled as a
|
|
802
|
+
separate series here — a recorded gap, and a small one, because the
|
|
803
|
+
eligible population was tiny. Eligibility is not in this instrument: it
|
|
804
|
+
runs through the entry of the vehicle in the wojewódzka ewidencja zabytków
|
|
805
|
+
or the acquisition of a rzeczoznawca's certificate, which is a heritage
|
|
806
|
+
question rather than a plate question and is out of scope for this file.
|
|
807
|
+
|
|
808
|
+
- id: pl-historic-moped
|
|
809
|
+
class: historic
|
|
810
|
+
categories: [moped]
|
|
811
|
+
period: { start: 2023 }
|
|
812
|
+
period_evidence: enacted-commencement
|
|
813
|
+
matching: strict
|
|
814
|
+
format:
|
|
815
|
+
pattern: "LL 99L"
|
|
816
|
+
regex: '\A(?:[A-Z]{2} ?(?:\d{2}[A-Z]|\d{3})|[A-Z]{3} ?(?:\d[A-Z]|\d{2}|[A-Z]\d))\z'
|
|
817
|
+
regex_strict: '\A(?:[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z] ?(?:\d{2}[ACEFGHJKLMNPRSTUVWXY]|\d{3})|[ABCDEFGIJKLMNOPRSTVWXYZ][A-PR-Z]{2} ?(?:\d[ACEFGHJKLMNPRSTUVWXY]|\d{2}|[ACEFGHJKLMNPRSTUVWXY]\d))\z'
|
|
818
|
+
charset: { letters_excluded: ["Q"], letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"] }
|
|
819
|
+
design:
|
|
820
|
+
plate: { w: 140, h: 114, unit: mm }
|
|
821
|
+
background: { color: "#F5D800", finish: retroreflective, hex_basis: observed }
|
|
822
|
+
foreground: "#000000"
|
|
823
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed }
|
|
824
|
+
symbol: { present: true, rendered: placeholder, content: "a laser-etched veteran-vehicle graphic scaled to 30 mm wide (załącznik nr 12 pkt 2.7, Rysunek 4), positioned 93 mm from the left edge and 17.5 mm from the bottom" }
|
|
825
|
+
emblem: { present: false }
|
|
826
|
+
layout_note: >-
|
|
827
|
+
A LAYOUT STRESSOR worth recording. Załącznik nr 12 pkt 2.6 lit. a places
|
|
828
|
+
the legalisation slot on this plate DIFFERENTLY depending on the serial:
|
|
829
|
+
with a three-letter prefix it sits 14 mm from the left edge and 17.5 mm
|
|
830
|
+
from the bottom, with a two-letter prefix 105 mm from the left and
|
|
831
|
+
66.5 mm from the bottom. The sticker moves to a different ROW of the
|
|
832
|
+
two-row plate according to how long the prefix is — the same pressure
|
|
833
|
+
PRD-PLATES §2.2 records for Japan, and a `format.fields` case if the
|
|
834
|
+
render bundle ever needs it.
|
|
835
|
+
region_encoding: "plates/_decode/pl-powiats.yml"
|
|
836
|
+
sources:
|
|
837
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 27 ust. 8, § 28 ust. 4 pkt 5, § 30 ust. 2 pkt 5; załącznik nr 12 pkt 2.6 lit. a and pkt 2.7, Rysunek 4, Rysunek 20. Accessed 2026-08-02"
|
|
838
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2022/1847/text/O/D20221847.pdf # Dz. U. 2022 poz. 1847 § 53 pkt 1: '§ 27 ust. 8, § 28 ust. 4 pkt 5 oraz § 30 ust. 2 pkt 5 w zakresie tablic rejestracyjnych motorowerowych zabytkowych, które wchodzą w życie z dniem 1 maja 2023 r.'; § 49 ust. 1 opens the swap right from the same date and ust. 2 governs the 4 September 2022 - 30 April 2023 interregnum. Accessed 2026-08-02"
|
|
839
|
+
notes: >-
|
|
840
|
+
THE HISTORIC MOPED PLATE — a class Poland did not have until 1 MAY 2023,
|
|
841
|
+
and a clean example of the instrument-date rule: the provisions live in the
|
|
842
|
+
2022 instrument (which itself commenced on 4 September 2022) but § 53 pkt 1
|
|
843
|
+
held these three back to 1 May 2023, and § 49 ust. 2 says what happened in
|
|
844
|
+
between — a historic moped could take either an ordinary moped plate or a
|
|
845
|
+
historic MOTORCYCLE plate. From 1 May 2023 § 49 ust. 1 lets the keeper
|
|
846
|
+
swap: a historic motorcycle plate is exchanged keeping the number, an
|
|
847
|
+
ordinary moped plate is exchanged for a NEW number. Modelled as its own
|
|
848
|
+
series rather than a variant of pl-historic because the period and the
|
|
849
|
+
plate both differ.
|
|
850
|
+
|
|
851
|
+
# =========================================================================
|
|
852
|
+
# INDIVIDUAL (PERSONALISED) PLATES — and the one place the exclusions lift.
|
|
853
|
+
# =========================================================================
|
|
854
|
+
- id: pl-individual
|
|
855
|
+
class: personalized
|
|
856
|
+
categories: [car, van, truck, bus]
|
|
857
|
+
period: { start: 2000 }
|
|
858
|
+
period_evidence: enacted-commencement
|
|
859
|
+
matching: strict
|
|
860
|
+
format:
|
|
861
|
+
pattern: "L9 LLLLL"
|
|
862
|
+
regex: '\A[A-Z]\d ?(?:[A-Z]{3,5}|[A-Z]{2,4}\d|[A-Z]{1,3}\d{2})\z'
|
|
863
|
+
regex_strict: '\A[ABCDEFGIJKLMNOPRSTVWXYZ]\d ?(?:[A-PR-Z]{3,5}|[A-PR-Z]{2,4}\d|[A-PR-Z]{1,3}\d{2})\z'
|
|
864
|
+
charset:
|
|
865
|
+
letters_excluded: ["Q"]
|
|
866
|
+
notes: >-
|
|
867
|
+
THE EXCLUSION LIFTS HERE, and only here. § 31 ust. 1 subjects the
|
|
868
|
+
vehicle wyróżnik to the B/D/I/O/Z rule "z zastrzeżeniem § 32 ust. 2",
|
|
869
|
+
and § 32 ust. 2 hands the individual wyróżnik to the owner. So B, D, I,
|
|
870
|
+
O and Z are all available on an individual plate and regex_strict
|
|
871
|
+
carries only the dataset-wide Q exclusion. A validator that applies the
|
|
872
|
+
five-letter rule here rejects lawful plates.
|
|
873
|
+
progression: >-
|
|
874
|
+
§ 30 ust. 2 pkt 4, verbatim: "litera i cyfra stanowią wyróżnik
|
|
875
|
+
województwa, zaś kolejne litery w liczbie od 3 do 5 stanowią wyróżnik
|
|
876
|
+
indywidualny pojazdu, w którym nie więcej niż dwie ostatnie litery można
|
|
877
|
+
zastąpić cyframi." The digits may only replace the LAST one or two
|
|
878
|
+
characters, so the regex is a three-way alternation rather than a mixed
|
|
879
|
+
class: letters only, letters then one digit, letters then two digits. A
|
|
880
|
+
digit followed by a letter inside the personal part is not lawful.
|
|
881
|
+
prefix_note: >-
|
|
882
|
+
The prefix here is LETTER + DIGIT, not letter + letters: individual
|
|
883
|
+
plates use column 6 of załącznik nr 13 (W0-W9, A0-A9 for mazowieckie,
|
|
884
|
+
and so on), the same pool as temporary plates, NOT the column-4 letters
|
|
885
|
+
used by ordinary plates. There is no powiat component at all — § 32
|
|
886
|
+
ust. 1 makes uniqueness a VOIVODESHIP-level test, checked against the
|
|
887
|
+
art. 73a ust. 1 pkt 1 register.
|
|
888
|
+
design:
|
|
889
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
890
|
+
plate_variants:
|
|
891
|
+
- { w: 305, h: 214, unit: mm, note: "dwurzędowa" }
|
|
892
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
893
|
+
foreground: "#000000"
|
|
894
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed }
|
|
895
|
+
emblem: { present: true, rendered: placeholder }
|
|
896
|
+
green_variant: "§ 27 ust. 4 pkt 2 gives an electric or hydrogen vehicle a GREEN individual plate — the two optional regimes compose"
|
|
897
|
+
region_encoding: none
|
|
898
|
+
region_encoding_note: >-
|
|
899
|
+
Voivodeship only, and only through the letter+digit codes in
|
|
900
|
+
plates/_decode/pl-powiats.yml's `voivodeships` block. There is no powiat information on an
|
|
901
|
+
individual plate and a parse API must not invent any.
|
|
902
|
+
sources:
|
|
903
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 25 pkt 2, § 27 ust. 4, § 30 ust. 2 pkt 4, § 31 ust. 1 (the carve-out), § 32 (uniqueness, owner's choice, the decency clause). Accessed 2026-08-02"
|
|
904
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2025/939/text/O/D20250939.pdf # Dz. U. 2025 poz. 939 § 1 pkt 2 and pkt 3: the second-letter overflow rule of § 31 ust. 3 is disapplied to individual plates, and § 32 ust. 2 is rewritten so that the owner 'może wskazać literę wyróżnika województwa, z którą będzie tworzony numer rejestracyjny pojazdu' — in force 2025-07-30. Accessed 2026-08-02"
|
|
905
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1999/632/text/O/D19990632.pdf # Dz. U. 1999 nr 59 poz. 632 § 21 ust. 2 pkt 4 and § 22-23, commenced 1 May 2000 by § 49. Accessed 2026-08-02"
|
|
906
|
+
notes: >-
|
|
907
|
+
INDIVIDUAL PLATES — "tablice indywidualne", the Polish personalised regime,
|
|
908
|
+
restricted by § 25 pkt 2 to POJAZDY SAMOCHODOWE, so no motorcycle, moped or
|
|
909
|
+
trailer may carry one. Two facts a consumer will otherwise get wrong: the
|
|
910
|
+
five look-alike letters are LAWFUL here and nowhere else, and since
|
|
911
|
+
30 July 2025 the buyer in a two-letter voivodeship may CHOOSE which letter
|
|
912
|
+
their plate is built from (Dz. U. 2025 poz. 939 § 1 pkt 3) — the only
|
|
913
|
+
exception to the § 31 ust. 3 rule that the second letter is an overflow
|
|
914
|
+
pool. period.start 2000 is the plate provisions' commencement under
|
|
915
|
+
Dz. U. 1999 nr 59 poz. 632 § 49; individual plates existed before that
|
|
916
|
+
(Dz. U. 1998 nr 57 poz. 365 § 20 ust. 2 pkt 2 gives the same letter+digit
|
|
917
|
+
frame with 3 to 5 letters) and the pre-reform form is a recorded gap.
|
|
918
|
+
|
|
919
|
+
# =========================================================================
|
|
920
|
+
# TEMPORARY PLATES — red on white, and the plate Poland uses for export.
|
|
921
|
+
# =========================================================================
|
|
922
|
+
- id: pl-temporary
|
|
923
|
+
class: temporary
|
|
924
|
+
categories: [car, van, truck, bus, motorcycle, moped, trailer]
|
|
925
|
+
period: { start: 2000 }
|
|
926
|
+
period_evidence: enacted-commencement
|
|
927
|
+
matching: strict
|
|
928
|
+
format:
|
|
929
|
+
pattern: "L9 9999"
|
|
930
|
+
regex: '\A[A-Z]\d ?(?:\d{4}|\d{3}[A-Z])\z'
|
|
931
|
+
regex_strict: '\A[ABCDEFGIJKLMNOPRSTVWXYZ]\d ?(?:\d{4}|\d{3}[ACEFGHJKLMNPRSTUVWXY])\z'
|
|
932
|
+
charset: { letters_excluded: ["Q"], letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"] }
|
|
933
|
+
progression: >-
|
|
934
|
+
§ 30 ust. 2 pkt 6, verbatim: "litera i cyfra stanowią wyróżnik
|
|
935
|
+
województwa, zaś cztery cyfry w przedziale od 0001 do 9999 stanowią
|
|
936
|
+
wyróżnik pojazdu, który po wyczerpaniu wskazanej pojemności tworzy się
|
|
937
|
+
w układzie trzy cyfry w przedziale od 001 do 999 i litera." Six
|
|
938
|
+
characters, letter+digit prefix from column 6 of załącznik nr 13, no
|
|
939
|
+
powiat component.
|
|
940
|
+
design:
|
|
941
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
942
|
+
plate_variants:
|
|
943
|
+
- { w: 305, h: 214, unit: mm, note: "dwurzędowa" }
|
|
944
|
+
- { w: 190, h: 150, unit: mm, note: "motocyklowa tymczasowa" }
|
|
945
|
+
- { w: 140, h: 114, unit: mm, note: "motorowerowa tymczasowa" }
|
|
946
|
+
- { w: 305, h: 114, unit: mm, note: "tymczasowa jednorzędowa zmniejszona — added by the 2024 instrument (§ 30 ust. 2 pkt 2 and ust. 3 pkt 1); the 2022 text had no reduced temporary plate" }
|
|
947
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
948
|
+
foreground: "#CC0000"
|
|
949
|
+
foreground_spec: "§ 27 ust. 9 pkt 1: 'barwy czerwonej na białym tle'. The CIE quadrangle for czerwona is in common.colorimetry.czerwona, luminance factor 0.05 — a dark, saturated red, not a signal red."
|
|
950
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed }
|
|
951
|
+
emblem: { present: false, note: "§ 28 ust. 6 disapplies the eagle to temporary plates; ust. 5 also disapplies the laser-marked legalisation-slot outline, so a temporary plate is the plainest Polish plate" }
|
|
952
|
+
region_encoding: none
|
|
953
|
+
region_encoding_note: "voivodeship only, via the letter+digit codes in plates/_decode/plates/_decode/pl-powiats.yml's `voivodeships` block; no powiat component exists on a temporary plate."
|
|
954
|
+
sources:
|
|
955
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 25 pkt 4, § 27 ust. 9 pkt 1, § 28 ust. 5-6, § 30 ust. 2 pkt 6 and ust. 3; załącznik nr 12 Rysunki 21-24. Accessed 2026-08-02"
|
|
956
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1999/632/text/O/D19990632.pdf # Dz. U. 1999 nr 59 poz. 632 § 18 ust. 6 and § 21 ust. 2 pkt 6, commenced 1 May 2000 by § 49. Accessed 2026-08-02"
|
|
957
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1993/164/text/O/D19930164.pdf # Dz. U. 1993 nr 37 poz. 164 § 13 ust. 3: the temporary plate's statutory purposes already included 'umożliwienia wyjazdu lub wywozu tych pojazdów za granicę' — which is why Poland has no export series. Accessed 2026-08-02"
|
|
958
|
+
notes: >-
|
|
959
|
+
THE TEMPORARY PLATE, and THE REASON POLAND HAS NO EXPORT PLATE: taking a
|
|
960
|
+
vehicle permanently out of the country is one of the temporary plate's own
|
|
961
|
+
statutory purposes and has been since 1993. The 2024 instrument added a
|
|
962
|
+
REDUCED temporary plate (305 x 114 mm) that the 2022 text lacked, pairable
|
|
963
|
+
under § 30 ust. 3 with a reduced ordinary plate bearing the same number.
|
|
964
|
+
Validity is not in this instrument: it runs from art. 74 of the ustawa, and
|
|
965
|
+
the old fourteen-day cap of the 1993 rules no longer applies.
|
|
966
|
+
|
|
967
|
+
- id: pl-temporary-sport
|
|
968
|
+
class: temporary
|
|
969
|
+
categories: [car]
|
|
970
|
+
period: { start: 2024 }
|
|
971
|
+
period_evidence: enacted-commencement
|
|
972
|
+
matching: strict
|
|
973
|
+
format:
|
|
974
|
+
pattern: "L9 9999"
|
|
975
|
+
regex: '\A[A-Z]\d ?(?:\d{4}|\d{3}[A-Z])\z'
|
|
976
|
+
regex_strict: '\A[ABCDEFGIJKLMNOPRSTVWXYZ]\d ?(?:\d{4}|\d{3}[ACEFGHJKLMNPRSTUVWXY])\z'
|
|
977
|
+
charset: { letters_excluded: ["Q"], letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"] }
|
|
978
|
+
note: "§ 30 ust. 2 pkt 6 governs all temporary plates alike; only the background colour distinguishes this one."
|
|
979
|
+
design:
|
|
980
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
981
|
+
background: { color: "#F5D800", finish: retroreflective, hex_basis: observed, spec_note: "common.colorimetry.zolta — the same statutory yellow as the historic plate" }
|
|
982
|
+
foreground: "#CC0000"
|
|
983
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed }
|
|
984
|
+
emblem: { present: false }
|
|
985
|
+
region_encoding: none
|
|
986
|
+
sources:
|
|
987
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 27 ust. 9, verbatim: 'Na tablicy rejestracyjnej tymczasowej jest wytłoczony numer rejestracyjny składający się z wyróżnika województwa oraz wyróżnika pojazdu: 1) barwy czerwonej na białym tle albo 2) barwy czerwonej na żółtym tle w przypadku tablicy rejestracyjnej wydawanej dla samochodu osobowego przeznaczonego do zawodów sportowych.' § 51 commences the instrument on 2024-11-30. Accessed 2026-08-02"
|
|
988
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2022/1847/text/O/D20221847.pdf # Dz. U. 2022 poz. 1847 § 27 ust. 9, which knows only 'barwy czerwonej na białym tle' — the pair of texts either side of 2024-11-30 IS the period evidence. Accessed 2026-08-02"
|
|
989
|
+
notes: >-
|
|
990
|
+
RED ON YELLOW, FOR COMPETITION CARS — a plate that did not exist before
|
|
991
|
+
30 November 2024 and that no secondary description of Polish plates yet
|
|
992
|
+
records, because they are all still written against the 2022 instrument.
|
|
993
|
+
The evidence is a diff: § 27 ust. 9 of Dz. U. 2022 poz. 1847 gives one
|
|
994
|
+
colour, § 27 ust. 9 of Dz. U. 2024 poz. 1709 gives two, and the second is
|
|
995
|
+
"w przypadku tablicy rejestracyjnej wydawanej dla samochodu osobowego
|
|
996
|
+
przeznaczonego do zawodów sportowych". Distinct from pl-temporary by the
|
|
997
|
+
background alone; the number grammar is identical, so a string cannot be
|
|
998
|
+
assigned between the two without knowing the colour.
|
|
999
|
+
|
|
1000
|
+
# =========================================================================
|
|
1001
|
+
# DIPLOMATIC — white on blue, six digits, and NO EU field.
|
|
1002
|
+
# =========================================================================
|
|
1003
|
+
- id: pl-diplomatic
|
|
1004
|
+
class: diplomatic
|
|
1005
|
+
categories: [car, van, motorcycle]
|
|
1006
|
+
period: { start: 2000 }
|
|
1007
|
+
period_evidence: enacted-commencement
|
|
1008
|
+
matching: strict
|
|
1009
|
+
format:
|
|
1010
|
+
pattern: "L 999999"
|
|
1011
|
+
regex: '\A[A-Z] ?\d{6}\z'
|
|
1012
|
+
regex_strict: '\A[ABCDEFGIJKLMNOPRSTVWXYZ] ?\d{6}\z'
|
|
1013
|
+
progression: >-
|
|
1014
|
+
§ 30 ust. 2 pkt 7, verbatim and complete: "na tablicach rejestracyjnych
|
|
1015
|
+
dyplomatycznych – pierwsza litera stanowi wyróżnik województwa, zaś sześć
|
|
1016
|
+
cyfr w przedziale od 000001 do 999999 stanowi wyróżnik pojazdu." One
|
|
1017
|
+
letter and six digits, and NOTHING ELSE — the instrument publishes no
|
|
1018
|
+
country-code or entitlement-class structure inside those six digits.
|
|
1019
|
+
decode_gap: >-
|
|
1020
|
+
A RECORDED GAP, and an important one for the Geoguessr audience: Polish
|
|
1021
|
+
diplomatic serials are widely described as encoding the sending state in
|
|
1022
|
+
their leading digits, and that structure is NOT in this regulation. It
|
|
1023
|
+
would have to come from a Ministry of Foreign Affairs allocation list
|
|
1024
|
+
that this pass did not locate. The dataset therefore claims one letter
|
|
1025
|
+
and six digits and no more; a decode table for the digit blocks is an L4
|
|
1026
|
+
target, and until one lands with a primary behind it a parse API must
|
|
1027
|
+
return "diplomatic, voivodeship known, mission unknown".
|
|
1028
|
+
voivodeship_note: >-
|
|
1029
|
+
The letter is the ordinary column-4 wyróżnik województwa, not the
|
|
1030
|
+
column-6 letter+digit code — so a diplomatic plate begins with the same
|
|
1031
|
+
letter as an ordinary one from the same voivodeship, and in practice
|
|
1032
|
+
almost always with W.
|
|
1033
|
+
design:
|
|
1034
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
1035
|
+
plate_variants:
|
|
1036
|
+
- { w: 305, h: 214, unit: mm, note: "dyplomatyczna dwurzędowa" }
|
|
1037
|
+
- { w: 190, h: 150, unit: mm, note: "dyplomatyczna motocyklowa" }
|
|
1038
|
+
- { w: 140, h: 114, unit: mm, note: "dyplomatyczna motorowerowa" }
|
|
1039
|
+
background: { color: "#003399", finish: retroreflective, hex_basis: observed, spec_note: "§ 27 ust. 10: 'barwy białej na niebieskim tle'. The quadrangle is common.colorimetry.niebieska — the WIDE blue, deliberately not the narrow EU-field blue" }
|
|
1040
|
+
foreground: "#FFFFFF"
|
|
1041
|
+
band: { side: none }
|
|
1042
|
+
band_note: >-
|
|
1043
|
+
THE ONLY POLISH PLATE WITH NO EU FIELD, and the instrument says so twice:
|
|
1044
|
+
§ 28 ust. 1 ("Wymóg ten nie dotyczy tablic (tablicy) rejestracyjnych
|
|
1045
|
+
dyplomatycznych") and załącznik nr 12 pkt 2.5 and pkt 2.14 lit. e. On a
|
|
1046
|
+
blue plate the blue band would be invisible, which is presumably the
|
|
1047
|
+
reason, but the instrument gives none.
|
|
1048
|
+
emblem: { present: true, rendered: placeholder }
|
|
1049
|
+
geometry: "załącznik nr 12 Rysunek 26 tabulates the diplomatic plate's own layout dimensions per size (a/b/c/d/e in mm): dwurzędowa 48/55/20/36/17, motocyklowa 24/42/14/18/20, motorowerowa 19/40/10/23/17.5"
|
|
1050
|
+
region_encoding: "plates/_decode/pl-powiats.yml"
|
|
1051
|
+
region_encoding_note: "voivodeship letter only — column 4 of the annex, the same letters ordinary plates use; there is no powiat component."
|
|
1052
|
+
sources:
|
|
1053
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1709/text/O/D20241709.pdf # § 25 pkt 5, § 27 ust. 10, § 28 ust. 1, § 30 ust. 2 pkt 7; załącznik nr 12 pkt 2.5, pkt 2.14 lit. e, Rysunki 25-26. Accessed 2026-08-02"
|
|
1054
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/1999/632/text/O/D19990632.pdf # Dz. U. 1999 nr 59 poz. 632 § 21 ust. 2 pkt 8 — the same one-letter + six-digit frame, commenced 1 May 2000 by § 49. Its predecessor Dz. U. 1998 nr 57 poz. 365 § 20 ust. 2 pkt 5 used TWO letters and five digits, so the frame did change at the reform. Accessed 2026-08-02"
|
|
1055
|
+
notes: >-
|
|
1056
|
+
THE DIPLOMATIC PLATE, for missions, consular posts, special missions,
|
|
1057
|
+
international organisations and their staff (§ 25 pkt 5). period.start 2000
|
|
1058
|
+
is a real format change and not merely the reform date: the pre-reform
|
|
1059
|
+
diplomatic plate under Dz. U. 1998 nr 57 poz. 365 § 20 ust. 2 pkt 5 was TWO
|
|
1060
|
+
letters and five digits (four on motorcycles) and used the Warsaw
|
|
1061
|
+
voivodeship code, so 1 May 2000 changed the diplomatic grammar as well as
|
|
1062
|
+
the ordinary one.
|
|
1063
|
+
|
|
1064
|
+
# =========================================================================
|
|
1065
|
+
# PROFESSIONAL REGISTRATION — the Polish dealer/trade plate, since 2019.
|
|
1066
|
+
# =========================================================================
|
|
1067
|
+
- id: pl-professional
|
|
1068
|
+
class: dealer
|
|
1069
|
+
categories: [car, van, truck, bus, motorcycle, moped, trailer]
|
|
1070
|
+
period: { start: 2019 }
|
|
1071
|
+
period_evidence: enacted-commencement
|
|
1072
|
+
matching: strict
|
|
1073
|
+
format:
|
|
1074
|
+
pattern: "L99 99P99"
|
|
1075
|
+
regex: '\A[A-Z]\d{2} ?\d{2}P(?:\d{2}|\d[A-Z])\z'
|
|
1076
|
+
regex_strict: '\A[ABCDEFGIJKLMNOPRSTVWXYZ]\d{2} ?\d{2}P(?:\d{2}|\d[ACEFGHJKLMNPRSTUVWXY])\z'
|
|
1077
|
+
charset:
|
|
1078
|
+
letters_excluded: ["Q"]
|
|
1079
|
+
letters_excluded_vehicle_wyroznik: ["B", "D", "I", "O", "Z"]
|
|
1080
|
+
notes: "§ 14 ust. 1 of the professional-registration rozporządzenie repeats the 25-letter alphabet; § 14 ust. 2 pkt 2 excludes B, D, I, O and Z from the single trailing letter of the second layout."
|
|
1081
|
+
progression: >-
|
|
1082
|
+
§ 14 ust. 2, verbatim: "pierwsza litera stanowi wyróżnik województwa,
|
|
1083
|
+
dwie cyfry w przedziale od 01 do 99 stanowią wyróżnik powiatu,
|
|
1084
|
+
następnych pięć znaków stanowi wyróżnik przydzielony dla pojazdów
|
|
1085
|
+
w decyzji o profesjonalnej rejestracji pojazdów, tworzony kolejno:
|
|
1086
|
+
1) z dwóch cyfr w przedziale od 00 do 99, litery P i dwóch cyfr
|
|
1087
|
+
w przedziale od 01 do 99; 2) po wyczerpaniu kombinacji tych cyfr –
|
|
1088
|
+
z dwóch cyfr w przedziale od 00 do 99, litery P, cyfry w przedziale od 0
|
|
1089
|
+
do 9 i litery, z wyłączeniem liter B, D, I, O i Z."
|
|
1090
|
+
fixed_letter_note: >-
|
|
1091
|
+
The letter P in the SIXTH position is fixed and is the class marker:
|
|
1092
|
+
§ 12 ust. 2 calls it "stałą literę P, będącą literowym wyróżnikiem
|
|
1093
|
+
tablicy przeznaczonej do profesjonalnej rejestracji pojazdów". It is the
|
|
1094
|
+
only positional literal in the whole Polish system.
|
|
1095
|
+
design:
|
|
1096
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
1097
|
+
plate_variants:
|
|
1098
|
+
- { w: 190, h: 150, unit: mm, note: "profesjonalna motocyklowa" }
|
|
1099
|
+
- { w: 140, h: 114, unit: mm, note: "profesjonalna motorowerowa" }
|
|
1100
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
1101
|
+
foreground: "#00A64F"
|
|
1102
|
+
foreground_spec: "§ 12 ust. 2: 'profesjonalny numer rejestracyjny barwy zielonej na białym tle'. GREEN CHARACTERS ON WHITE — the inverse of the electric plate's black on green, and a distinction a colour-only classifier will get backwards. The green is measured for daylight only, on 100 cm2 samples."
|
|
1103
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed, note: "§ 13 ust. 1 imports the EU field by reference to the registration rozporządzenie" }
|
|
1104
|
+
emblem: { present: false, note: "not established in this pass; § 13 ust. 3 forbids markings other than those in ust. 1-2 and § 14, and no eagle requirement was found. Recorded gap." }
|
|
1105
|
+
region_encoding: none
|
|
1106
|
+
region_encoding_note: >-
|
|
1107
|
+
DO NOT ROUTE THROUGH plates/_decode/pl-powiats.yml. The professional plate's powiat
|
|
1108
|
+
wyróżnik is TWO DIGITS, not letters, and its table is załącznik nr 8 to the
|
|
1109
|
+
professional-registration rozporządzenie — a different annex under a
|
|
1110
|
+
different delegation. That numeric table was NOT extracted in this pass and
|
|
1111
|
+
is a recorded gap; the voivodeship LETTER is the same column-4 letter as on
|
|
1112
|
+
an ordinary plate and can be decoded from plates/_decode/pl-powiats.yml's `voivodeships`.
|
|
1113
|
+
sources:
|
|
1114
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2023/2616/text/O/D20232616.pdf # the consolidated text (obwieszczenie MI z 15 listopada 2023 r.) of rozporządzenie MI z 12 marca 2019 r. w sprawie profesjonalnej rejestracji pojazdów, stosowanych oznaczeń oraz opłat: § 12 ust. 2 (green on white, the fixed P), § 13 (EU field, legalisation mark, closed list of markings), § 14 (alphabet, the two layouts, the annex-8 delegation). Accessed 2026-08-02"
|
|
1115
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2019/546 # the Sejm ELI entry for Dz. U. 2019 poz. 546, the original instrument: entryIntoForce 2019-07-11 — this series' period.start. Accessed 2026-08-02"
|
|
1116
|
+
notes: >-
|
|
1117
|
+
PROFESSIONAL REGISTRATION — Poland's dealer/trade plate, and a genuinely
|
|
1118
|
+
young class: it did not exist before 11 July 2019. It is issued to a
|
|
1119
|
+
BUSINESS by decision of the starosta (so `binding` differs from the
|
|
1120
|
+
jurisdiction default) and covers manufacturers, distributors and research
|
|
1121
|
+
units moving or testing unregistered vehicles. It replaced the "tablica
|
|
1122
|
+
tymczasowa badawcza" of the 2002 regime, which is recorded in
|
|
1123
|
+
common.absent_classes.research_badawcza.
|
|
1124
|
+
|
|
1125
|
+
# =========================================================================
|
|
1126
|
+
# THE ARMED FORCES — U, under art. 76 ust. 2, a different minister.
|
|
1127
|
+
# =========================================================================
|
|
1128
|
+
- id: pl-military
|
|
1129
|
+
class: military
|
|
1130
|
+
categories: [car, van, truck, bus, motorcycle, trailer]
|
|
1131
|
+
period: { start: 2023 }
|
|
1132
|
+
period_evidence: instrument-in-force
|
|
1133
|
+
matching: strict
|
|
1134
|
+
format:
|
|
1135
|
+
pattern: "UL 99999"
|
|
1136
|
+
regex: '\AU[A-Z] ?(?:\d{5}|\d{4}T?)\z'
|
|
1137
|
+
regex_strict: '\AU[A-NPR-TV-Z] ?(?:\d{5}|\d{4}T?)\z'
|
|
1138
|
+
charset:
|
|
1139
|
+
letters_excluded: ["O", "Q", "U"]
|
|
1140
|
+
notes: >-
|
|
1141
|
+
A DIFFERENT exclusion set from the civil one, and it is enumerated
|
|
1142
|
+
rather than described. § 6 ust. 3 pkt 2 lit. a lists the permitted
|
|
1143
|
+
second letters in full: "A, B, C, D, E, F, G, H, I, J, K, L, M, N, P,
|
|
1144
|
+
R, S, T, V, W, X, Y, Z" — twenty-three letters, dropping O and U as
|
|
1145
|
+
well as the dataset-wide Q. B, D, I and Z ARE permitted here, unlike on
|
|
1146
|
+
a civil vehicle wyróżnik.
|
|
1147
|
+
progression: >-
|
|
1148
|
+
§ 6 ust. 3: "wyróżnika Sił Zbrojnych, którym jest wielka litera U
|
|
1149
|
+
umieszczana jako pierwsza" plus a vehicle wyróżnik of one letter and
|
|
1150
|
+
then, by plate type, a five-digit number 00001-99999 for car plates and
|
|
1151
|
+
for numbers painted directly on the vehicle, a four-digit number
|
|
1152
|
+
0001-9999 for motorcycle plates, or a four-digit number followed by the
|
|
1153
|
+
FIXED LETTER T for a tracked vehicle.
|
|
1154
|
+
tracked_note: "the trailing T is the only class marker in the Polish system besides the professional plate's P, and it means gąsienicowy — tracked."
|
|
1155
|
+
design:
|
|
1156
|
+
plate: { w: null, h: null, unit: mm }
|
|
1157
|
+
dimensions_note: >-
|
|
1158
|
+
RECORDED GAP. art. 76 ust. 2 of the ustawa delegates the military plate's
|
|
1159
|
+
wzór to the Minister of National Defence, but the current MON
|
|
1160
|
+
rozporządzenie carries only three annexes — a registration application, a
|
|
1161
|
+
military dowód rejestracyjny, and the pattern for numbers PAINTED
|
|
1162
|
+
DIRECTLY on a vehicle — and none of them is a plate drawing. No
|
|
1163
|
+
dimensions were secured.
|
|
1164
|
+
background: { color: "#FFFFFF", finish: null, hex_basis: observed }
|
|
1165
|
+
foreground: "#000000"
|
|
1166
|
+
colour_evidence: >-
|
|
1167
|
+
Sourced only obliquely. § 17 ust. 4 prescribes, for tracked and armoured
|
|
1168
|
+
vehicles that carry no plate, "numer rejestracyjny barwy czarnej na
|
|
1169
|
+
białym tle oraz symbol przynależności narodowej" applied by stencil or
|
|
1170
|
+
decal; § 17 ust. 2 allows white or black for mobilisation numbers,
|
|
1171
|
+
whichever contrasts with the vehicle. Black on white for the PLATE itself
|
|
1172
|
+
is an inference from those provisions and is flagged as one.
|
|
1173
|
+
band: { side: none, note: "not established; no EU-field requirement was found in the MON instrument. Recorded gap." }
|
|
1174
|
+
emblem: { present: false }
|
|
1175
|
+
region_encoding: none
|
|
1176
|
+
region_encoding_note: >-
|
|
1177
|
+
U is not a voivodeship letter — it is one of the two letters (with H) that
|
|
1178
|
+
never appear in column 4 of załącznik nr 13, which is exactly what makes
|
|
1179
|
+
the prefix unambiguous. Note § 6 ust. 1-2 however: unmarked vehicles of the
|
|
1180
|
+
Żandarmeria Wojskowa, the special forces, the cyberspace-defence troops and
|
|
1181
|
+
certain protected-installation units may be registered under an ORDINARY
|
|
1182
|
+
voivodeship+powiat number instead, deliberately indistinguishable from a
|
|
1183
|
+
civil plate. A parse API cannot detect those and its confidence model
|
|
1184
|
+
should know they exist.
|
|
1185
|
+
sources:
|
|
1186
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2023/1776/text/O/D20231776.pdf # rozporządzenie MON z 30 sierpnia 2023 r. w sprawie rejestracji pojazdów Sił Zbrojnych RP oraz pojazdów należących do obcych sił zbrojnych: § 6 (the U frame and the three vehicle-wyróżnik shapes), § 6 ust. 1-2 (the ordinary-number exception), § 17 (numbers applied directly), § 20 ('Rozporządzenie wchodzi w życie z dniem 4 września 2023 r.'). Accessed 2026-08-02"
|
|
1187
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2024/1251/text/O/D20241251.pdf # Prawo o ruchu drogowym art. 76 ust. 2, the delegation to the Minister of National Defence. Accessed 2026-08-02"
|
|
1188
|
+
notes: >-
|
|
1189
|
+
MILITARY PLATES. period.start 2023 is INSTRUMENT-IN-FORCE and means what it
|
|
1190
|
+
means elsewhere in this dataset — the date of the instrument that STATES
|
|
1191
|
+
the rule (§ 20 of Dz. U. 2023 poz. 1776, 4 September 2023), not the date
|
|
1192
|
+
the U system began, which is certainly older: the chain of MON instruments
|
|
1193
|
+
runs back through Dz. U. 2012 poz. 623, Dz. U. 2005 nr 84 poz. 723 and
|
|
1194
|
+
Dz. U. 1999 nr 84 poz. 937 and was not read in this pass. A recorded gap,
|
|
1195
|
+
and one worth closing because the U frame is very likely materially older
|
|
1196
|
+
than 2023.
|
|
1197
|
+
|
|
1198
|
+
# =========================================================================
|
|
1199
|
+
# THE SERVICES — H, under art. 76 ust. 4, a third minister.
|
|
1200
|
+
# =========================================================================
|
|
1201
|
+
- id: pl-police
|
|
1202
|
+
class: police
|
|
1203
|
+
categories: [car, van, truck, bus, motorcycle]
|
|
1204
|
+
period: { start: 2025 }
|
|
1205
|
+
period_evidence: instrument-in-force
|
|
1206
|
+
matching: strict
|
|
1207
|
+
format:
|
|
1208
|
+
pattern: "HPL L999"
|
|
1209
|
+
regex: '\AHP[A-Z] ?(?:[A-Z]\d{3}|\d{2}[A-Z]{2})\z'
|
|
1210
|
+
regex_strict: '\AHP[A-PR-Z] ?(?:[A-PR-Z]\d{3}|\d{2}[A-PR-Z]{2})\z'
|
|
1211
|
+
charset:
|
|
1212
|
+
letters_excluded: ["Q"]
|
|
1213
|
+
notes: >-
|
|
1214
|
+
Only Q. § 5 ust. 2 pkt 1 and ust. 4 both draw on "zbiór następujących
|
|
1215
|
+
25 liter" without the civil B/D/I/O/Z exclusion, which § 31 ust. 1 of
|
|
1216
|
+
the transport rozporządzenie confines to plates issued under THAT
|
|
1217
|
+
instrument. Applying the civil exclusion here would reject lawful
|
|
1218
|
+
service plates.
|
|
1219
|
+
progression: >-
|
|
1220
|
+
§ 5 ust. 2 pkt 1: the service wyróżnik, then ONE letter from the
|
|
1221
|
+
25-letter set, then the vehicle wyróżnik, which by ust. 4 is either a
|
|
1222
|
+
letter and three digits 001-999 or two digits 01-99 and two letters.
|
|
1223
|
+
Seven characters in total.
|
|
1224
|
+
design:
|
|
1225
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
1226
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
1227
|
+
foreground: "#000000"
|
|
1228
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed }
|
|
1229
|
+
emblem: { present: true, rendered: placeholder }
|
|
1230
|
+
design_basis: >-
|
|
1231
|
+
Taken from the transport rozporządzenie by cross-reference, not stated in
|
|
1232
|
+
the MSWiA one: § 5 ust. 1 says "Wzory tablic rejestracyjnych, które
|
|
1233
|
+
zawierają wyróżniki służb, oraz wzory umieszczanych na nich symboli są
|
|
1234
|
+
określone w przepisach wydanych na podstawie art. 76 ust. 1 pkt 1 lit. a
|
|
1235
|
+
ustawy" — that is Dz. U. 2024 poz. 1709. This pass did not locate a
|
|
1236
|
+
service-plate wzór inside that instrument's załącznik nr 12, whose
|
|
1237
|
+
drawings cover the five § 25 types only, so the colours and dimensions
|
|
1238
|
+
above are an INFERENCE from the ordinary plate. Recorded gap.
|
|
1239
|
+
region_encoding: none
|
|
1240
|
+
region_encoding_note: >-
|
|
1241
|
+
H is not a voivodeship letter — see plates/_decode/plates/_decode/pl-powiats.yml,
|
|
1242
|
+
prefix_split.letters_never_a_voivodeship. But note § 5 ust. 2 pkt 2 and
|
|
1243
|
+
§ 6: a service may equally register a vehicle under an ORDINARY
|
|
1244
|
+
voivodeship+powiat number, and must do so for vehicles that are NOT
|
|
1245
|
+
liveried ("Tablic rejestracyjnych, które zawierają wyróżnik województwa
|
|
1246
|
+
i powiatu, nie stosuje się do oznakowanych pojazdów służb"). So an H plate
|
|
1247
|
+
implies a marked service vehicle, while an unmarked one wears a civil plate
|
|
1248
|
+
that no parse can distinguish.
|
|
1249
|
+
sources:
|
|
1250
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2025/1326/text/O/D20251326.pdf # rozporządzenie MSWiA z 30 września 2025 r. w sprawie rejestracji pojazdów Służby Ochrony Państwa, Policji, ABW, AW, CBA, Straży Granicznej i KAS wykorzystywanych przez Służbę Celno-Skarbową: § 5 ust. 2-4 (the number structure and the six service wyróżniki), § 6 (marked vehicles only), § 14 (in force the day after publication). Accessed 2026-08-02"
|
|
1251
|
+
notes: >-
|
|
1252
|
+
POLICE PLATES — the HP prefix. period.start 2025 is INSTRUMENT-IN-FORCE:
|
|
1253
|
+
Dz. U. 2025 poz. 1326 is merely the latest in a chain running back through
|
|
1254
|
+
Dz. U. 2023 poz. 1778, Dz. U. 2019 poz. 560, Dz. U. 2017 poz. 447,
|
|
1255
|
+
Dz. U. 2011 nr 195 poz. 1160 and further, none of which was read here, so
|
|
1256
|
+
2025 is the date of the instrument that STATES the rule and NOT the date
|
|
1257
|
+
the HP prefix began. A recorded gap.
|
|
1258
|
+
|
|
1259
|
+
- id: pl-government-services
|
|
1260
|
+
class: government
|
|
1261
|
+
categories: [car, van, truck, bus, motorcycle]
|
|
1262
|
+
period: { start: 2025 }
|
|
1263
|
+
period_evidence: instrument-in-force
|
|
1264
|
+
matching: strict
|
|
1265
|
+
format:
|
|
1266
|
+
pattern: "HBL L999"
|
|
1267
|
+
regex: '\AH[ABCKW][A-Z] ?(?:[A-Z]\d{3}|\d{2}[A-Z]{2})\z'
|
|
1268
|
+
regex_strict: '\AH[ABCKW][A-PR-Z] ?(?:[A-PR-Z]\d{3}|\d{2}[A-PR-Z]{2})\z'
|
|
1269
|
+
charset: { letters_excluded: ["Q"] }
|
|
1270
|
+
service_prefixes:
|
|
1271
|
+
HB: "Służba Ochrony Państwa (state protection service)"
|
|
1272
|
+
HK: "Agencja Bezpieczeństwa Wewnętrznego i Agencja Wywiadu (internal security and foreign intelligence — ONE prefix for two agencies)"
|
|
1273
|
+
HA: "Centralne Biuro Antykorupcyjne (anti-corruption bureau)"
|
|
1274
|
+
HW: "Straż Graniczna (border guard)"
|
|
1275
|
+
HC: "Służba Celno-Skarbowa (customs and fiscal service)"
|
|
1276
|
+
progression: "§ 5 ust. 2 pkt 1 and ust. 4, identical to pl-police; only the two-letter service wyróżnik differs."
|
|
1277
|
+
design:
|
|
1278
|
+
plate: { w: 520, h: 114, unit: mm }
|
|
1279
|
+
background: { color: "#FFFFFF", finish: retroreflective, hex_basis: observed }
|
|
1280
|
+
foreground: "#000000"
|
|
1281
|
+
band: { side: left, color: "#003399", content: eu-stars+PL, hex_basis: observed }
|
|
1282
|
+
emblem: { present: true, rendered: placeholder }
|
|
1283
|
+
design_basis: "as pl-police — inferred from the ordinary plate by the § 5 ust. 1 cross-reference; recorded gap."
|
|
1284
|
+
region_encoding: none
|
|
1285
|
+
sources:
|
|
1286
|
+
- "https://api.sejm.gov.pl/eli/acts/DU/2025/1326/text/O/D20251326.pdf # § 5 ust. 3, verbatim: 'Jako wyróżniki służb określa się litery: 1) HB – dla Służby Ochrony Państwa; 2) HP – dla Policji; 3) HK – dla Agencji Bezpieczeństwa Wewnętrznego i Agencji Wywiadu; 4) HA – dla Centralnego Biura Antykorupcyjnego; 5) HW – dla Straży Granicznej; 6) HC – dla Służby Celno-Skarbowej.' Accessed 2026-08-02"
|
|
1287
|
+
notes: >-
|
|
1288
|
+
THE FIVE NON-POLICE SERVICE PREFIXES, held as one series because they share
|
|
1289
|
+
a format, a design and a period and differ only in which agency the second
|
|
1290
|
+
letter names — the § 2.3 test for a class flag rather than a series. `pattern`
|
|
1291
|
+
prints HB because a pattern is one canonical string; the regex carries all
|
|
1292
|
+
five. The one substantive oddity is HK, which the instrument assigns to TWO
|
|
1293
|
+
agencies at once (ABW and AW), so that prefix does not resolve to a single
|
|
1294
|
+
body. period.start 2025 is INSTRUMENT-IN-FORCE, with the same caveat as
|
|
1295
|
+
pl-police: the H system is older than this instrument and its origin is a
|
|
1296
|
+
recorded gap.
|