Re: Toolcounter – a privacy-friendly hit co unter for Toolforge tools

Travis Briggs via Wikitech-l <[email protected]> Thu, 21 May 2026 21:24:10 -0700
Newsgroups gmane.science.linguistics.wikipedia.technical
Message-ID <CAMPYpA4=U6VgBepZuoShE0uDAG5FP-b74fZN6gJO3HFY+ACvcQ@mail.gmail.com>
--===============1582785855655529567==
Content-Type: multipart/alternative; boundary="0000000000003279e50652606782"

--0000000000003279e50652606782
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

viewstoolforgeorgtools

from the people who brought you expertsexchange.com (view stool for georg
tools icymi)

=F0=9F=98=82

Having people use your stuff is amazing! That's probably why all those
weirdo non-technical editors contribute in the first place =F0=9F=A4=94

-Travis

On Thu, May 21, 2026 at 9:01=E2=80=AFPM rtnF via Wikitech-l <
[email protected]> wrote:

> Cool. Thank you for sharing this.
>
> It=E2=80=99s pretty motivating to know that somebody out there is actuall=
y using my
> tools <https://rtnf.substack.com/p/viewstoolforgeorgtools> :)
>
> On Thu, May 21, 2026 at 11:46=E2=80=AFPM Jinoy Tom Jacob via Wikitech-l <
> [email protected]> wrote:
>
>> The toolviews API is cool. Have done a small attempt couple of months ag=
o
>> during a workshop for visulize the views based on this API at
>> https://views.toolforge.org/tools/
>>
>> Best Regards,
>>
>> *Jinoy *
>> Email: [email protected]
>>
>>
>> *Please don=E2=80=99t print this e-mail unless you really need to.Every =
3000
>> sheets consume a tree. Conserve Trees for a better tomorrow!*
>>
>>
>> On Thu, 21 May 2026 at 22:11, Sohom Datta via Wikitech-l <
>> [email protected]> wrote:
>>
>>> @Bd808: Ooh, this is nice, I did not know about the existence of this
>>> service!
>>>
>>> I wonder if there is an easy way for the tool view to tell if a view wa=
s
>>> from a bot?
>>>
>>> Regards,
>>> Sohom Datta
>>> ---
>>> Open-source contributor @Wikimedia
>>>
>>>
>>> On Thu, May 21, 2026 at 12:15=E2=80=AFPM Bryan Davis via Wikitech-l <
>>> [email protected]> wrote:
>>>
>>>> On Wed, May 20, 2026 at 11:45=E2=80=AFPM Suyash Dwivedi via Wikitech-l
>>>> <[email protected]> wrote:
>>>> >
>>>> > Hi everyone,
>>>> >
>>>> > I've always been curious about how many people actually visit my
>>>> Toolforge tools - and I suspect I'm not alone. So I built Toolcounter =
(
>>>> https://toolcounter.toolforge.org/), a lightweight, privacy-friendly
>>>> hit counter designed specifically for Toolforge-hosted tools.
>>>> >
>>>> > What it tracks
>>>> >
>>>> > =F0=9F=93=84 Page views - counted on every page load (including refr=
eshes).
>>>> Good for total traffic.
>>>> > =F0=9F=91=A4 Sessions (unique visit approximation) =E2=80=94 uses se=
ssionStorage in the
>>>> visitor's browser. First open in a tab =3D 1 session. Refresh =3D not =
counted
>>>> again. New tab =3D counted again. No cookies, no IP, no personal data =
stored.
>>>> >
>>>> > Both counts appear separately on the dashboard with a per-day bar
>>>> chart.
>>>> >
>>>> > Quick integration (replace YOUR_TOOL and PAGE)
>>>> >
>>>> > Option 1 - SVG badge (no JS, image only, shows page views):
>>>> > <img src=3D"
>>>> https://toolcounter.toolforge.org/badge.php?tool=3DYOUR_TOOL&page=3DPA=
GE"
>>>> alt=3D"Page views">
>>>> >
>>>> > Option 2 - JS embed (shows both views + unique sessions):
>>>> > =F0=9F=91=81 Views: <span id=3D"tc-views"></span>
>>>> > =F0=9F=91=A4 Unique: <span id=3D"tc-sessions"></span>
>>>> > <script src=3D"
>>>> https://toolcounter.toolforge.org/embed.js.php?tool=3DYOUR_TOOL&page=
=3DPAGE
>>>> "></script>
>>>> >
>>>> > An embed code generator is available on the homepage.
>>>> >
>>>> > Privacy
>>>> > The database stores zero personal data, only anonymous counters per
>>>> (tool, page) pair. No cookies are set. No IP addresses, User-Agent str=
ings,
>>>> or usernames are ever written to the database. Full privacy policy:
>>>> https://toolcounter.toolforge.org/privacy.php
>>>> >
>>>> > Source code is publicly available and open for audit.
>>>>
>>>> Seeing many flowers bloom is great. There is also a system you can use
>>>> at https://toolviews.toolforge.org/api/ which attempts to count 2xx
>>>> status responses ("hits") for all tools by parsing the access logs
>>>> generated at the Toolforge reverse proxy service. That system does not
>>>> currently have a nice UI, but it does have data going back to at least
>>>> 2019 and does not require inserting tracking tokens in your pages.
>>>>
>>>> Bryan
>>>> --
>>>> Bryan Davis                                        Wikimedia Foundatio=
n
>>>> Principal Software Engineer                               Boise, ID US=
A
>>>> [[m:User:BDavis (WMF)]]                                      irc: bd80=
8
>>>> _______________________________________________
>>>> Wikitech-l mailing list -- [email protected]
>>>> To unsubscribe send an email to [email protected]
>>>>
>>>> https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia=
.org/
>>>
>>> _______________________________________________
>>> Wikitech-l mailing list -- [email protected]
>>> To unsubscribe send an email to [email protected]
>>>
>>> https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia.=
org/
>>
>> _______________________________________________
>> Wikitech-l mailing list -- [email protected]
>> To unsubscribe send an email to [email protected]
>>
>> https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia.o=
rg/
>
> _______________________________________________
> Wikitech-l mailing list -- [email protected]
> To unsubscribe send an email to [email protected]
> https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia.or=
g/

--0000000000003279e50652606782
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">viewstoolforgeorgtools<div><br></div><div>from the people =
who brought you=C2=A0<a href=3D"http://expertsexchange.com">expertsexchange=
.com</a> (view stool for georg tools icymi)</div><div><br></div><div>=F0=9F=
=98=82</div><div><br></div><div>Having people use your stuff is amazing! Th=
at&#39;s probably why all those weirdo non-technical editors contribute in =
the first place=C2=A0=F0=9F=A4=94</div><div><br></div><div>-Travis</div></d=
iv><br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" cl=
ass=3D"gmail_attr">On Thu, May 21, 2026 at 9:01=E2=80=AFPM rtnF via Wikitec=
h-l &lt;<a href=3D"mailto:[email protected]">wikitech-l@lists.=
wikimedia.org</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi=
ng-left:1ex"><div dir=3D"ltr"><p>Cool. Thank you for sharing this.</p><p>It=
=E2=80=99s pretty motivating to know that somebody out there is actually us=
ing <a href=3D"https://rtnf.substack.com/p/viewstoolforgeorgtools" target=
=3D"_blank">my tools</a> :)</p></div><br><div class=3D"gmail_quote"><div di=
r=3D"ltr" class=3D"gmail_attr">On Thu, May 21, 2026 at 11:46=E2=80=AFPM Jin=
oy Tom Jacob via Wikitech-l &lt;<a href=3D"mailto:[email protected]=
a.org" target=3D"_blank">[email protected]</a>&gt; wrote:<br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><di=
v>The toolviews API is cool. Have done a small attempt=C2=A0couple of month=
s ago during a workshop for visulize the views based on this API at=C2=A0<a=
 href=3D"https://views.toolforge.org/tools/" target=3D"_blank">https://view=
s.toolforge.org/tools/</a></div><div><br></div><div>Best Regards,</div><div=
><div dir=3D"ltr" class=3D"gmail_signature"><div dir=3D"ltr"><div dir=3D"lt=
r"><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr" style=3D"font-size:sm=
all"><div style=3D"color:rgb(136,136,136)"><b style=3D"color:rgb(34,34,34)"=
>Jinoy=C2=A0<br></b><div style=3D"color:rgb(34,34,34)">Email:=C2=A0<a href=
=3D"mailto:[email protected]" style=3D"color:rgb(17,85,204)" target=
=3D"_blank">[email protected]</a><br></div></div><div style=3D"colo=
r:rgb(34,34,34)"><br></div><div><i><font color=3D"#38761d"><span style=3D"f=
ont-size:12.8px">Please don=E2=80=99t print this e-mail unless you really n=
eed to.</span><br style=3D"font-size:12.8px"><span style=3D"font-size:12.8p=
x">Every 3000 sheets consume a tree. Conserve Trees for a better=C2=A0</spa=
n><span style=3D"font-size:12.8px">tomorrow</span><span style=3D"font-size:=
12.8px">!</span></font></i></div></div></div></div></div></div></div></div>=
<br></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_at=
tr">On Thu, 21 May 2026 at 22:11, Sohom Datta via Wikitech-l &lt;<a href=3D=
"mailto:[email protected]" target=3D"_blank">wikitech-l@lists.=
wikimedia.org</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" sty=
le=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);paddi=
ng-left:1ex"><div dir=3D"ltr"><div><div class=3D"gmail_default" style=3D"fo=
nt-family:verdana,sans-serif">@Bd808: Ooh, this is nice, I did not know <sp=
an style=3D"border-style:none;background:none">about the existence of this =
service!</span></div><div class=3D"gmail_default" style=3D"font-family:verd=
ana,sans-serif"><br></div><div class=3D"gmail_default" style=3D"font-family=
:verdana,sans-serif">I wonder if there is an easy way for=C2=A0the tool vie=
w to tell if a view <span style=3D"border-style:none;background:none">was</=
span> from a bot?</div><br clear=3D"all"></div><div><div dir=3D"ltr" class=
=3D"gmail_signature"><div dir=3D"ltr"><div><div dir=3D"ltr"><div><div dir=
=3D"ltr"><div><div dir=3D"ltr"><div><div dir=3D"ltr"><div><div dir=3D"ltr">=
<div><font face=3D"verdana, sans-serif" color=3D"#666666">Regards,</font></=
div><div><font face=3D"verdana, sans-serif" color=3D"#666666">Sohom Datta</=
font><span></span></div><div><font face=3D"verdana, sans-serif" color=3D"#6=
66666">---</font></div><div><font face=3D"verdana, sans-serif" color=3D"#66=
6666">Open-source contributor @Wikimedia</font></div></div></div></div></di=
v></div></div></div></div></div></div></div></div></div><br></div><br><div =
class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_attr">On Thu, May 21,=
 2026 at 12:15=E2=80=AFPM Bryan Davis via Wikitech-l &lt;<a href=3D"mailto:=
[email protected]" target=3D"_blank">[email protected]=
a.org</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"ma=
rgin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:=
1ex">On Wed, May 20, 2026 at 11:45=E2=80=AFPM Suyash Dwivedi via Wikitech-l=
<br>
&lt;<a href=3D"mailto:[email protected]" target=3D"_blank">wik=
[email protected]</a>&gt; wrote:<br>
&gt;<br>
&gt; Hi everyone,<br>
&gt;<br>
&gt; I&#39;ve always been curious about how many people actually visit my T=
oolforge tools - and I suspect I&#39;m not alone. So I built Toolcounter (<=
a href=3D"https://toolcounter.toolforge.org/" rel=3D"noreferrer" target=3D"=
_blank">https://toolcounter.toolforge.org/</a>), a lightweight, privacy-fri=
endly hit counter designed specifically for Toolforge-hosted tools.<br>
&gt;<br>
&gt; What it tracks<br>
&gt;<br>
&gt; =F0=9F=93=84 Page views - counted on every page load (including refres=
hes). Good for total traffic.<br>
&gt; =F0=9F=91=A4 Sessions (unique visit approximation) =E2=80=94 uses sess=
ionStorage in the visitor&#39;s browser. First open in a tab =3D 1 session.=
 Refresh =3D not counted again. New tab =3D counted again. No cookies, no I=
P, no personal data stored.<br>
&gt;<br>
&gt; Both counts appear separately on the dashboard with a per-day bar char=
t.<br>
&gt;<br>
&gt; Quick integration (replace YOUR_TOOL and PAGE)<br>
&gt;<br>
&gt; Option 1 - SVG badge (no JS, image only, shows page views):<br>
&gt; &lt;img src=3D&quot;<a href=3D"https://toolcounter.toolforge.org/badge=
.php?tool=3DYOUR_TOOL&amp;page=3DPAGE" rel=3D"noreferrer" target=3D"_blank"=
>https://toolcounter.toolforge.org/badge.php?tool=3DYOUR_TOOL&amp;page=3DPA=
GE</a>&quot; alt=3D&quot;Page views&quot;&gt;<br>
&gt;<br>
&gt; Option 2 - JS embed (shows both views + unique sessions):<br>
&gt; =F0=9F=91=81 Views: &lt;span id=3D&quot;tc-views&quot;&gt;&lt;/span&gt=
;<br>
&gt; =F0=9F=91=A4 Unique: &lt;span id=3D&quot;tc-sessions&quot;&gt;&lt;/spa=
n&gt;<br>
&gt; &lt;script src=3D&quot;<a href=3D"https://toolcounter.toolforge.org/em=
bed.js.php?tool=3DYOUR_TOOL&amp;page=3DPAGE" rel=3D"noreferrer" target=3D"_=
blank">https://toolcounter.toolforge.org/embed.js.php?tool=3DYOUR_TOOL&amp;=
page=3DPAGE</a>&quot;&gt;&lt;/script&gt;<br>
&gt;<br>
&gt; An embed code generator is available on the homepage.<br>
&gt;<br>
&gt; Privacy<br>
&gt; The database stores zero personal data, only anonymous counters per (t=
ool, page) pair. No cookies are set. No IP addresses, User-Agent strings, o=
r usernames are ever written to the database. Full privacy policy: <a href=
=3D"https://toolcounter.toolforge.org/privacy.php" rel=3D"noreferrer" targe=
t=3D"_blank">https://toolcounter.toolforge.org/privacy.php</a><br>
&gt;<br>
&gt; Source code is publicly available and open for audit.<br>
<br>
Seeing many flowers bloom is great. There is also a system you can use<br>
at <a href=3D"https://toolviews.toolforge.org/api/" rel=3D"noreferrer" targ=
et=3D"_blank">https://toolviews.toolforge.org/api/</a> which attempts to co=
unt 2xx<br>
status responses (&quot;hits&quot;) for all tools by parsing the access log=
s<br>
generated at the Toolforge reverse proxy service. That system does not<br>
currently have a nice UI, but it does have data going back to at least<br>
2019 and does not require inserting tracking tokens in your pages.<br>
<br>
Bryan<br>
-- <br>
Bryan Davis=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 Wikimedia Foundation<br>
Principal Software Engineer=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Boise, ID US=
A<br>
[[m:User:BDavis (WMF)]]=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 irc: bd808<br>
_______________________________________________<br>
Wikitech-l mailing list -- <a href=3D"mailto:[email protected]=
" target=3D"_blank">[email protected]</a><br>
To unsubscribe send an email to <a href=3D"mailto:[email protected]=
kimedia.org" target=3D"_blank">[email protected]</a><br>
<a href=3D"https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wik=
imedia.org/" rel=3D"noreferrer" target=3D"_blank">https://lists.wikimedia.o=
rg/postorius/lists/wikitech-l.lists.wikimedia.org/</a></blockquote></div>
_______________________________________________<br>
Wikitech-l mailing list -- <a href=3D"mailto:[email protected]=
" target=3D"_blank">[email protected]</a><br>
To unsubscribe send an email to <a href=3D"mailto:[email protected]=
kimedia.org" target=3D"_blank">[email protected]</a><br>
<a href=3D"https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wik=
imedia.org/" rel=3D"noreferrer" target=3D"_blank">https://lists.wikimedia.o=
rg/postorius/lists/wikitech-l.lists.wikimedia.org/</a></blockquote></div>
_______________________________________________<br>
Wikitech-l mailing list -- <a href=3D"mailto:[email protected]=
" target=3D"_blank">[email protected]</a><br>
To unsubscribe send an email to <a href=3D"mailto:[email protected]=
kimedia.org" target=3D"_blank">[email protected]</a><br>
<a href=3D"https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wik=
imedia.org/" rel=3D"noreferrer" target=3D"_blank">https://lists.wikimedia.o=
rg/postorius/lists/wikitech-l.lists.wikimedia.org/</a></blockquote></div>
_______________________________________________<br>
Wikitech-l mailing list -- <a href=3D"mailto:[email protected]=
" target=3D"_blank">[email protected]</a><br>
To unsubscribe send an email to <a href=3D"mailto:[email protected]=
kimedia.org" target=3D"_blank">[email protected]</a><br>
<a href=3D"https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wik=
imedia.org/" rel=3D"noreferrer" target=3D"_blank">https://lists.wikimedia.o=
rg/postorius/lists/wikitech-l.lists.wikimedia.org/</a></blockquote></div>

--0000000000003279e50652606782--

--===============1582785855655529567==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Wikitech-l mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://lists.wikimedia.org/postorius/lists/wikitech-l.lists.wikimedia.org/
--===============1582785855655529567==--