The author suspects that CSS methods ”reserves”
the space (maximal height) for any character sup-
ported by a font, also if they are not printed.
• In some browsers discrepancies of 1 pixel were
observed. Therefore, the tests were improved to
meet this margin of error.
• Usage of a test string containing full alphabet
or the one chosen for fonts entropy assessment
(adfgjlmrsuvwwwwz7901) increased the detec-
tion rate in comparison to the string proposed in
other studies (based on m and w letters).
• Test string size of 70 pixels produced almost iden-
tical results as 180 or 200 pixels.
• monospace font was slightly more effective than
sans-serif, both for CSS and canvas tests.
• The only drawback of CSS method remains the
fact that it requires to be executed in users DOM
which brings a danger of influencing website ap-
pearance (canvas works in the background).
There were two additional observations which remain
unsolved. Firstly, for unknown reasons, drawing with
monospace as fallback font was on average 10 times
faster than drawing using sans-serif. The author did
not find any confirmed explanation for this fact. It
is suspected that monospace tests could have been
optimized after sans-serif checks were run, although
no particular execution order was assured. Secondly,
drawing strings of size 200 pixels were twice faster
than 70 pixels in CSS-based tests. The same possible
explanation applies.
Another important aspect of fonts evaluation is de-
termining a subset to be used for probing. A font
that is not supported for each user nor is present in
all the samples, will not allow to distinguish devices.
Maximum entropy (1 bit) is reached when a font is
present in exactly half of the data. Yet, choosing only
such fonts will not maximize the output since many
sets are strongly dependent. Therefore, an excessive
list of 821 fonts was prepared and for all of them, a
sample was collected. An iterative entropy maximiza-
tion algorithm was executed in order to find optimal
collection. To achieve 6 bits result, in the best sce-
nario the following 9 fonts were used (ordered from
the most valuable): Open Sans, Brush Script MT, Es-
trangelo Edessa, Gadugi, Roman, Papyrus, MT Ex-
tra, Wingdings, Segoe UI Semibold. Above 8 bits,
the number of fonts required to improve the entropy
increases drastically. After reaching 9 bits the re-
maining 746 elements almost did not improved the
result. It shows how important choosing the right col-
lection is. It is essential not only for the diversity
but also for the code execution time (3.5s) and stabil-
ity (187 changes, 6 days), as this fingerprint achieved
the worst results in both categories. Reducing the set
of fonts from 821 to 100 would decrease the aver-
age time necessary for probing to around 0.4s which
may be acceptable in certain usages. Stability metrics
should improve as well, although fontJs-sans-70px-
65 test probing for only 65 fonts still presents alarm-
ingly high instability (132 changes each 7 days). A
short investigation revealed three main categories of
changes that have occurred: (1) single font installa-
tion, (2) a large set of fonts changing the status from
absent to present, (3) single font fluctuations. The
first two categories may denote that the user has in-
stalled an additional font or a new software. Unfor-
tunately, there is nothing that can be done to prevent
them. Yet, often status changes of a particular font
are quite unlikely to be caused by a user action. Thus,
the latter category suggests either a field for detection
algorithm improvement or necessity to investigate the
cause in a deeper manner.
Language Setting. Exposed by navigator ob-
ject language property, is supposed to return user pre-
ferred language, in a format described by RFC speci-
fication, e.g. en-US, pl-PL or de-Latin- CH 1992 [29].
4 methods of obtaining language were implemented.
Broadly supported (99.9%) navigator.language prop-
erty presented 2.1 bits of information. Remaining
tests returned a result in only 5% of cases and as their
values were mostly equal, they barely achieved any
entropy. Yet, thanks to a decent stability and low cost
execution all of the features are worth taking them
into consideration.
Platform Fingerprint.navigator.platform repre-
sents the platform on which the execution takes place.
The set of possible values is not closed and the repre-
sentation may differ from browser to browser. Ex-
ample values are: Linux aarch64, MacIntel, iPhone,
Nokia Series 40 or PlayStation 4. This fingerprint has
changed its value only once, so it is one of the most
stable. 16 distinct values with 3 uniques were found
in the dataset (1.57 entropy).
Screen Properties. window.screen object may be
used to yield properties such as device screen color
depth, resolution and available resolution. The latter
is representing the space that may be consumed by
system applications (without menu bars). In terms of
fingerprinting resolutions, depending on which value
is greater (width or height), the screen orientation is
additionally determined. Again, by using it, some fin-
gerprinting solutions are incorrectly creating another
artificial fingerprint. On the other hand, orientation
may be dangerous considering stability, as the users
may change it quite often. Among both screenCol-
orDepth and screenPixelRatio tests, stable but rather
similar values were collected, providing 0.74 and 0.82
IoTBDS 2017 - 2nd International Conference on Internet of Things, Big Data and Security
174