Glasovi.app is an independent hobby project, not an official source. It can contain errors
and misreadings of the data: for official results, go to the Republic Electoral Commission
(RIK) and the Statistical Office of the Republic of Serbia (RZS).
Open the linkable Help, Method and Sources guide
Measures
Vote share uses all ballots in ballot boxes, including invalid ballots. Turnout uses
attendees / registered voters. Winning margin is the percentage-point lead of the first
list over the second. A percentage point (pts) is the gap between two percentages: 40%
to 45% is a rise of 5 pts, not of 5%, which is why margins, divergence and every change
in a share are measured in them. Non-leading vote fragmentation is the effective number
of non-leading lists (1 / Σ of squared shares within the non-leading vote).
Change maps
Change maps show the percentage-point difference between the selected election and an
earlier one, for the leading list’s share (whichever list led in each year), winning
margin, turnout and invalid ballots. Relative change subtracts the national change.
Their color scale is centred on zero and covers 95% of areas (and at least a quarter of
the largest change); more extreme areas get the end colors. Tooltips flag areas where
the leading list changed, unless both lists belong to the same political group.
Political groups
Colour scales
Map color scales are fitted to the range of the areas shown, so colors are not
comparable between measures or levels. District values sum counts before calculating
rates.
Boundaries
All 161 map areas matched. Boundaries combine the 2017 geoBoundaries Serbia ADM2
OpenStreetMap extract outside Belgrade with 17 Belgrade municipality relations retrieved
in 2026. The two snapshots can differ at seams. © OpenStreetMap contributors, ODbL; area
names come from the coded place register.
Polling stations on the map
Polling stations are placed on the map by settlement, never at a building: a point
stands for every station in its settlement and never for an area. A station is placed by
its own address where its source prints one Glasovi.app reads — the parliamentary
elections of 2012, 2014, 2016 and 2020 and the presidential elections of 2012 and 2017 —
through the GeoNames gazetteer (geonames.org, CC BY 4.0). The stations of 3 April 2022,
parliamentary and presidential, are placed by the address in the municipal decision for
the referendum of 16 January 2022, where a station is linked to one. Each point is kept
inside its own municipality as drawn, because the supplied boundaries are coarse; a seat
the gazetteer places outside its municipality is shown at a point inside it and marked
as approximate. A station none of this places — every station of 2000, 2003, 2007, 2008
and 2023 and of the presidential elections of 2002, 2003 and 2008, whose sources print
no address Glasovi.app reads, the rest of 2022’s, and the few elsewhere in settlements
the gazetteer lacks — takes the settlement of the station with the same municipality and
number in the nearest election with addresses (2012 for the earlier elections, 2020 for
the later), when that station was placed by its address and their electoral rolls are
within 15% of each other, and is marked as placed that way. Tested where the answer is
known, predicting 2020 from 2016, the build requires this to find the right settlement
for at least 97% of the stations it places. A station that cannot be placed is left off
the map rather than guessed. The match rates and every unplaced station are in the
station-points report.
Credits
- Election results
-
The Statistical Office of the Republic of Serbia (RZS) for 2000–2022 results and
2023 published totals; the Republic Electoral Commission (RIK) for 2023
polling-station records. The source of the selected election is named above.
- Population
-
The Statistical Office of the Republic of Serbia (RZS): the 2002, 2011 and 2022
censuses and the 2023 population estimates. Glasovi.app extracted the tables, joined
them to its places and calculated the shares, changes and interpolations shown.
- Boundaries
-
geoBoundaries (William & Mary geoLab), from an OpenStreetMap extract, and
OpenStreetMap for the Belgrade municipalities, retrieved through Nominatim. ©
OpenStreetMap contributors, Open Database License. Glasovi.app fitted the two
together and simplified them. The map of voters abroad: Natural Earth (public
domain), through the world-atlas package.
- Settlements
-
The GeoNames gazetteer (geonames.org), CC BY 4.0, which Glasovi.app matched to the
polling stations’ addresses.
- Parties
-
Party Facts (Holger Döring and Sven Regel, 2019), whose party identifiers the
political groups are linked to, one party at a time.
- Methods
-
Electoral volatility: the Pedersen index (Mogens N. Pedersen, 1979). Effective
number of lists: Markku Laakso and Rein Taagepera (1979). Divergence: the index of
dissimilarity (Otis Dudley Duncan and Beverly Duncan, 1955). Cartogram: circles
after Danny Dorling (1996). Color scales: ColorBrewer, by Cynthia Brewer.
- Software and type
-
D3 and TopoJSON by Mike Bostock (ISC licence); the Manrope (Mikhail Sharanda) and DM
Sans (Colophon Foundry) typefaces, SIL Open Font License. The type is served by
Glasovi.app itself, so reading it tells no one else that you were here.
Licences
Glasovi.app’s own code is under the MIT licence. Its own writing, political-group
classification and design are in the public domain (CC0 1.0): anyone may use them for
any purpose, without asking or giving credit.
About CC0 1.0 (creativecommons.org)
MIT licence text
The sources credited above keep their own terms.
Glasovi.app sets no cookies. It remembers four things in your own browser, and only once
you have chosen them: the language, the light or dark theme, full list names, and that
you have read the notice of an election still being counted. None leaves your device,
and clearing your browser’s storage forgets all four.
Everything the page shows comes from Glasovi.app itself — the maps, the results, the
type. The one other request it makes on its own is the visit counter below, to the same
company that serves Glasovi.app, so reading it tells no one who was not already handing
you the page.
The contact form asks one more host, and only once you open it: Cloudflare Turnstile,
from the same company, checks that a person is writing. A message you send goes by email
through Postmark, and Glasovi.app keeps no copy.
Visits are counted, so that Glasovi.app knows whether it is read. The counter is
Cloudflare Web Analytics, which sets no cookie and stores nothing in your browser, does
not follow anyone between visits, and reports only totals. There is nothing to opt out
of, and nothing to ask you to accept.