What's New - Policy Update May 15, 2026 version 2

Highlights:

  • New section: Health & Traffic Pages. We added clear privacy notes for /health, /traffic, and /_pokeresource/stats.
  • New traffic transparency wording. The /traffic page shows anonymous route popularity and total request counts. It stores route totals, not people.
  • Updated anti-DDoS wording. The old PokeStopSkids wording has been replaced with the newer PokeResourceGuard behavior, including event loop, CPU, memory, route pressure, and temporary client cooldowns.
  • Clarified persistent data. PokeResourceGuard can save popularpaths.json, which contains anonymous route counts, tracking start time, and total request count only.

Preamble

Welcome to Poke's Privacy Policy. We don't collect personal data and we don't use third-party trackers. Poke is free software you can read, remix, and run yourself.

Some parts of Poke keep anonymous operational counts so we can keep the instance fast, reliable, and less fragile. These counts are designed to answer boring maintenance questions like "which routes are busy?" and "is the server under pressure?" not "who is this person?"

Not legal advice lol

TL;DR

  • No personal data collected.
  • Anonymous local-only video stats are enabled by default. No IPs, no cookies, no fingerprinting, no third parties.
  • Anonymous server health and traffic stats exist. /health and /traffic show aggregate server and route totals.
  • The /traffic page stores route counts, not people. The persistent traffic file contains total request count, tracking start time, and normalized route totals.
  • No third-party trackers. Yippe!!
  • YouTube can't see what you watch here. It's all done on the backend.
  • Anti-DDoS protection does not store raw IP addresses in persistent stats. It uses temporary in-memory client counters and anonymous salted logging when needed.

  • Poke Account: no email required, no personal info needed.
  • Poke Maps: uses OpenStreetMap data; map tiles and attribution may have separate privacy rules depending on the tile server you use.
  • No required analytics cookies. Preferences and the anonymous video stats ID live in local storage on your device.

Ownership

The Poke service and this default instance (poketube.fun) are owned and operated by the Poke Project. Learn more at initiative.poketube.fun.

Initiative Site Privacy

The informational website at initiative.poketube.fun does not collect personal information. Since the website is hosted on Codeberg Pages, the Codeberg privacy policy applies: View it here.

What We Do/Don't Collect

We collect no personal data about you

We don't store personal profiles, emails, names, advertising IDs, cross-site identifiers, or fingerprinting data. There's no third-party analytics and no ads.

What exists briefly so the internet works

Every time you open a page, your browser and Poke's server exchange a small amount of technical data. This is simply how the web works. Without this back-and-forth, pages couldn't load, images wouldn't display, and requests wouldn't reach the right place.

When your browser requests a page, the server, which uses Nginx, momentarily processes information such as the requested URL, the response code, and the time it took to deliver the page. These details may appear in access logs briefly for operational health and security. On Poke's primary instance, these logs are kept for the shortest technically feasible duration and are not linked to any personal data.

Poke Account

If you make a Poke account, we don't require an email or personal details.

How we improve Poke /api/stats

Poke has a small anonymous statistics system built into the server. It helps us understand broad software usage without third-party analytics, ad networks, or anything that needs to know who you are.

When someone watches a video through Poke, we may record one anonymous event. The event stays on this server. It is used for aggregate maintenance questions, not personal tracking.

Simple version: Poke records anonymous video stats so we can improve the software. It does not store IP addresses, account data, cookies, full user-agent strings, or personal information for this system.

At a glance

  • Enabled by default. Instance operators can disable it entirely in the server config.
  • Local-only. The counts are stored on the Poke server and are not sent to a third-party analytics service.
  • Aggregate-focused. The public API shows totals, not individual viewer IDs.
  • Optional for visitors. You can opt out from this browser at /api/stats/optout.

What one anonymous video stats event may include

  • The video ID that was watched, for example ?v=...
  • A random anonymous viewer ID stored in your browser's localStorage, not a cookie
  • The browser family, for example Firefox, Chromium, or Safari
  • The operating system family, for example GNU/Linux, Android, Windows, macOS, or iOS

What we use those counts for

  • Finding which browsers need more testing
  • Finding which operating systems need more testing
  • Seeing which video IDs are popular on this instance
  • Keeping a short rolling list of recently viewed video IDs
  • Estimating broad usage so we can prioritize bugs and maintenance work

What we do not collect for /api/stats

  • No IP addresses
  • No cookies for analytics
  • No login or account data
  • No personal information of any kind
  • No full user-agent strings
  • No cross-site tracking
  • No advertising identifiers
  • No third-party analytics services

What the public stats API shows

  • /api/stats returns aggregate numbers only, such as browser totals, OS totals, and popular video IDs.
  • /api/stats?view=gui displays those anonymous aggregate numbers in a friendlier visual page.
  • Individual anonymous viewer IDs are never exposed.
Why this is not user tracking

Tracking systems are designed to follow people around, build profiles, correlate behavior across sites, and remember individual activity over time. This system is not designed for that.

Poke's stats system asks broad maintenance questions like "what browser families are common here?" and "which operating systems should we test more?" It does not ask "who is this person?" or "what is this individual's full viewing history?"

The anonymous viewer ID is used to avoid badly overcounting the same browser. It is not a login, not an email, not an account, not an advertising ID, and not exposed through the public API.

Why we record the video ID

We record the video ID so we can understand aggregate demand on this instance. This helps us know which parts of the code need to be the most reliable.

The goal is not to create a personal watch history. The goal is to answer "what content does this instance serve most often overall?"

Why we store an anonymous random viewer ID in localStorage

We store a random anonymous viewer ID so the same browser does not look like a brand new person every time it sends a stats event.

We use localStorage instead of cookies. It is a local browser value used by Poke itself, not part of any third-party tracking network.

Why we record the browser and operating system family

Browser and operating system compatibility matters for a video frontend. Broad labels help us decide what to test and fix first.

We keep this broad on purpose. We do not record the full user-agent string, and we do not use this to fingerprint your device.

If you'd rather not contribute even these anonymous counts, you can opt out any time at /api/stats/optout. That stores a simple opt-out flag in your browser's localStorage, and Poke will stop sending video stats from that browser entirely.

Poke is free software and fully transparent. The telemetry implementation is in the source:
src/libpoketube/init/telemetry.js

Anyone can audit this code, verify what data is collected, fork the project, or disable the stats system when running their own instance.

Server Health & Traffic Pages /health and /traffic

Poke includes public status pages so people can see how the instance is doing. These pages show aggregate server health and route popularity, not personal activity.

/health

The /health page shows the current state of PokeResourceGuard and aggregate server health information, such as current server pressure, request rate, active visitor counters, and cooldown counts.

This page is for operational transparency. It does not show personal profiles, raw IP addresses, cookies, account identifiers, or browser fingerprints.

/traffic

The /traffic page shows anonymous traffic totals. It includes the total global request count, the date that counting started, and the most popular normalized routes on the instance.

These route counts are aggregate counts, not per-person browsing histories. Dynamic paths are normalized where possible so route totals stay broad and readable.

What gets saved for traffic stats

PokeResourceGuard may save a local file called popularpaths.json. This file is stored on the server and contains:

  • trackingStartTime: when route counting began
  • totalRequests: total counted requests
  • routes: anonymous route names and their total counts

This file does not contain IP addresses, cookies, user accounts, full user-agent strings, headers, browser fingerprints, or personal information. It is just aggregate route popularity.

How this differs from /api/stats

/api/stats is the anonymous video stats system. /health and /traffic are server health and route popularity views. They are separate systems with separate goals.

/api/stats?view=gui shows anonymous video stats in a GUI. /traffic shows anonymous route traffic totals. Both are aggregate-only and both are designed to avoid personal data.

Anti-DDoS Protection PokeResourceGuard

Poke has a built-in resource protection system called PokeResourceGuard. It protects the server from request floods, overloaded routes, noisy clients, and sudden spikes that could make the instance slow for everyone.

Older public endpoint names may still mention PokeStopSkids for compatibility, but the newer system is PokeResourceGuard. It watches server pressure and decides when to gently shed expensive requests so normal browsing and video watching can keep working.

What PokeResourceGuard watches

PokeResourceGuard samples server health about once per second. It checks:

  • Node.js event loop delay
  • CPU usage
  • memory usage
  • requests per second
  • active request counts
  • request kinds, such as status, static, page, background, heavy, or other
  • temporary per-client request pressure

The guard uses those signals to classify the server as healthy, warm, stressed, or critical. When the server is healthy, requests pass normally. When it is under pressure, the guard may slow down or reject expensive requests before the whole instance becomes unusable.

Temporary in-memory client counters

To stop abuse, PokeResourceGuard keeps temporary client counters in memory. These counters are used for sliding-window request totals, request cost totals, heavy request totals, soft page passes, rejects, and cooldowns.

This means the server can temporarily tell whether a connection is making too many expensive requests. That is necessary for abuse prevention. The important privacy part is that these client counters are in memory, expire, and are not part of the persistent traffic file.

Client state is cleaned up after inactivity, and cooldown levels decay over time. When the server restarts, the in-memory client counters disappear.

What PokeResourceGuard does not save persistently

  • No raw IP addresses are stored in popularpaths.json
  • No cookies are stored by the guard for route traffic stats
  • No browser fingerprints are created
  • No account identifiers are used
  • No full user-agent strings are saved in the traffic file
  • No per-person browsing profile is created
  • No cross-site tracking happens

Logging during abuse or rejection

If the guard rejects a request or applies a cooldown, it may print a server-side operational log entry. These logs are meant for debugging abuse and overload. They use a random boot-time salt to anonymize the client address into a short value like anon-xxxxxxxx. The salt is generated when the server starts, so the anonymized value is not a stable long-term identity.

Rejection logs may include aggregate counters such as recent request totals, heavy request totals, reject counts, cost score, pressure score, current guard state, CPU state, memory state, and event loop state. They are not meant to identify a person.

Known bots and infrastructure

PokeResourceGuard recognizes some well-known bot and infrastructure user agents. This can reduce request cost or avoid punishing useful automated traffic such as search engines, feed readers, fediverse previews, link preview bots, uptime monitors, and CDN infrastructure.

This is not used to build a personal fingerprint. It is a broad operational rule so that a search crawler and a normal browser do not always get treated exactly the same during server pressure.

Cloudflare and proxy awareness

Poke includes trust-proxy auto-configuration so it can work correctly behind common deployment platforms and proxies. It may look at proxy-related headers such as x-forwarded-for, x-forwarded-proto, x-real-ip, cf-ray, and similar headers when deciding whether the instance is behind a trusted proxy.

This is used for correct routing, HTTPS handling, and safe request handling. It is not a third-party analytics system and it is not used to create personal profiles.

Live stats and source code

You can see the current state of the resource guard at /health. The traffic view is at /traffic. Raw JSON is available at /_pokeresource/stats.

Compatibility endpoints may also exist: /_poketraffic/stats, /_pokestopskids/stats, and /_pokeoverload/stats.

The full implementation is in the source code:
codeberg.org/ashleyirispuppy/poke

Anyone can read exactly how it works, verify what data is stored, and run their own instance with their own settings.

Cookies & Local Storage

  • Cookies: we use cookies where needed for security and anti-abuse protections. This includes Anubis, our anti-bot system, which may set cookies to verify legitimate traffic and reduce automated abuse.
  • Local storage: used to save preferences such as theme and layout, to store a single anonymous random viewer ID used by /api/stats, and to store simple page preferences such as whether you've dismissed this policy update notice.
  • /health and /traffic: these pages do not need cookies or localStorage for their live stats. They fetch public aggregate JSON when JavaScript is enabled.

To remove data stored in your browser, use your browser's cookie/site-data controls:
· Chrome
· Firefox
· Safari iOS
· Safari macOS
· Edge
· Brave

OpenStreetMap

Poke Maps uses data from OpenStreetMap, a community-driven, free-licensed world map built by thousands of volunteer contributors.

When you visit /map, Poke displays OpenStreetMap through a simple <iframe> element embedded directly into the site. This means the map interface and tiles are loaded from OpenStreetMap's tile servers rather than from Poke's infrastructure.

Poke does not proxy or modify these map requests. Your browser connects directly to openstreetmap.org and its associated tile servers. While Poke itself does not collect or log identifying information about your visit to the map, OpenStreetMap servers may process standard connection details for delivery. See the OpenStreetMap Foundation Privacy Policy.

Weather Pages & Services

Poke's weather pages use privacy-respecting services to resolve places and fetch forecasts.

Geocoding / Place Lookup

Uses nominatim.openstreetmap.org OpenStreetMap Nominatim. Privacy: OSMF Privacy Policy.

How it works:

  • The request is proxied through Poke's backend, never directly from your browser.
Forecast Data

Uses open-meteo.com for weather forecasts. Privacy: Open-Meteo Terms & Privacy.

How it works:

  • All forecast queries are proxied through Poke's backend. Your browser never connects to Open-Meteo directly.
  • Only essential parameters latitude, longitude, units, etc. are forwarded.

Translate Page SimplyTranslate

Our translate page does not send your data directly to Google or SimplyTranslate.org from your browser. Instead, all requests are proxied through our own backend servers. When you use the page, only the necessary parameters are passed securely on the server side: from source language, to target language, and text the content you entered.

We rely on the community-run SimplyTranslate service, a privacy-friendly translation front-end. SimplyTranslate is a free software project: you can see the source code and its legal notice.

API Logs Policy

When you request any resource from the Poke API, for example thumbnails or API endpoints, information about the request may be logged for operational health.

Information logged per request

The information recorded for each API or resource request is strictly limited to the following items, and nothing else:

  • the time the request was made
  • the status code of the response
  • the method of the request
  • the requested URL
  • how long it took to complete the request

No identifying information is logged in API logs, such as the visitor's cookie or IP address. The /api/stats feature is separate and only stores anonymous aggregates listed above. The /health and /traffic pages are also separate and only expose aggregate server and route counts.

Example log lines
2019-01-19 16:37:47 +00:00 200 GET /api/v1/comments/xrlETJYzH-c?format=html&hl=en-US 1345.88ms
2019-01-19 16:37:53 +00:00 200 GET /vi/r5P-f5arPXE/maxres.jpg 1085.41ms
2019-01-19 16:37:54 +00:00 200 GET /watch 7.04ms

This website does not use fingerprinting, advertisements, or tracking of any form.

Your Privacy Rights

Because Poke doesn't collect or store personal info, there's really nothing about you that we can give, sell, or lose. You won't need to ask for "export my data" or "delete my profile" because we just don't have any of it.

Poke accounts don't require your name, email, or any identifying detail. You literally can't add them even if you tried.

But outside Poke, you do have rights and tools to protect your privacy. Here are a few ideas:

  • Use a privacy-respecting search engine instead of one built around tracking. Good options include DuckDuckGo and Kagi.
  • For private AI chat, try Duck.ai. It can be useful when you want access to LLMs without directly exposing your IP address to the model providers. Still, don't paste passwords, private keys, personal documents, or anything deeply sensitive into any AI tool.
  • Use private messengers like Signal for end-to-end encrypted messages, voice calls, video calls, group chats, and file sharing.
  • Use email providers that take privacy and encryption seriously, such as Tuta Mail or Proton Mail.
  • Use a content blocker like uBlock Origin to block ads, trackers, malicious domains, annoying popups, and other unwanted web junk.
  • Try Privacy Badger by the EFF to help stop hidden third-party trackers from following you across websites.
  • Use browsers built around user control and privacy, such as Firefox and privacy-focused Firefox forks, Tor Browser for stronger anti-tracking and anti-surveillance browsing, or Firefox Focus for mobile.
  • If you want a privacy-focused Chromium-based browser without the usual bloat, try Helium Browser. It blocks ads, trackers, phishing websites, third-party cookies, and other unwanted browser behavior by default.
  • Use encrypted DNS and network-level filtering to reduce tracking before it reaches your browser. Hosted options like NextDNS can block trackers and malicious domains across devices.
  • If you run your own home network, consider Pi-hole for network-wide blocking on phones, laptops, smart TVs, apps, and other devices connected to your network.
  • Use HTTPS whenever possible, avoid sketchy public Wi-Fi, and keep your operating system, browser, and apps updated.
  • Check device permissions for camera, microphone, location, contacts, files, and notifications. Revoke anything you don't actively use.
  • Use a VPN on public or untrusted networks. We recommend Mullvad VPN because it focuses on minimal data retention and anonymous account numbers.

Data Retention

  • Server logs: minimal operational logs no personal data kept for the shortest technically feasible duration.
  • Anonymous video usage stats: counts are stored locally on this server; admins may reset or disable at any time.
  • Health stats: live server health data is generated from current process state and temporary in-memory counters.
  • Traffic route stats: anonymous aggregate route totals may be stored in popularpaths.json. This file contains route counts, total request count, and tracking start time only.
  • PokeResourceGuard client counters: temporary request counters exist in server memory (RAM), are cleaned up after inactivity, and disappear on server restart.
  • PokeResourceGuard rejection logs: may contain short salted anonymous labels and aggregate pressure information for operational debugging, not raw personal profiles.

JavaScript & No-JS

JavaScript is optional on Poke's websites. Core features, including search, work without JavaScript.

The /health and /traffic pages are also usable without JavaScript. Without JavaScript, they show a static server-rendered snapshot. With JavaScript, they fetch /_pokeresource/stats every second to update public aggregate numbers.

Self-Hosting

Poke is free software under the GNU GPL v3.0 or later. You can self-host it yourself! See here.

Instance operators can inspect the telemetry and resource guard code, change settings, reset route totals, disable anonymous video stats, or run their own instance with different retention choices.

Changes to this Policy

If we ever change how privacy works here, we'll update the date at the top and announce major changes. Spoiler: changes would not include adding two bananas. this isn't minions LOL :3

Document History

You can view the full edit history for this policy at: codeberg.org.

Warranty Disclaimer

IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER,OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM E.G., LOSS OF DATA, DATA BEING RENDERED INACCURATE, OR FAILURES OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS,EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Contact

Questions or concerns? Open an issue on our project tracker :D

Policy License

© 2021-2026 Poke Poke Project. This policy is licensed under the Creative Commons Attribution-ShareAlike 4.0 International CC BY-SA 4.0.