Legal notice
Last updated: 6 October 2026
1. Publisher
SpeedQL (speedql.app) is published by a private individual acting in a non-professional capacity. In accordance with Article 6, III, 2 of French law no. 2004-575 of 21 June 2004 on confidence in the digital economy (LCEN), the publisher has chosen not to disclose their personal contact details publicly: their identification details have been provided to the hosting provider.
Contact: contact.1618bits@gmail.com
Publication director: the publisher of the site, reachable at the same address.
2. Hosting
The site is hosted by Cloudflare, Inc. (Cloudflare Pages service), 101 Townsend Street, San Francisco, CA 94107, United States — www.cloudflare.com.
3. Access to the site
SpeedQL is free and requires no sign-up. The publisher strives to keep it available at all times, but cannot guarantee it will never be interrupted, for example for maintenance or in case of failure.
4. Intellectual property
Unless stated otherwise, the texts, exercises, pixel-art illustrations and the SpeedQL logo belong to the publisher. Any full or partial reproduction or reuse without prior written permission is prohibited.
SpeedQL uses the following open-source components, each under its own licence:
- sql.js — MIT licence, © 2017 sql.js authors;
- SQLite — public domain;
- Press Start 2P (font) — SIL Open Font License 1.1, © 2012 The Press Start 2P Project Authors;
- Space Mono (font) — SIL Open Font License 1.1, © 2016 The Space Mono Project Authors.
The full text of these licences is included in the source code of the SpeedQL page.
5. Trademarks
Windows and Windows XP are trademarks of Microsoft Corporation. SpeedQL is an independent project with no connection to Microsoft: its interface is inspired by the Windows XP style as a tribute.
6. Personal data and cookies
- SpeedQL requires no sign-up.
- To run the game, the site uses your browser's local storage (localStorage, key "speedql.v2") to keep your best score, your best games, your learning path progress (unlocked levels, solved exercises, placement test result), the questions you have already been asked (to vary the next ones), your display settings (including the theme) and your language. It also keeps your weak points (for each topic: successes and mistakes), the topics you last chose in the custom exercises, a date that is used to show the "bookmark this site" reminder only once (key "speedql.act") and, your choice to take part or not in the world ranking and, if you publish a score, a random identifier, the nickname and the country you chose (see below). For players who used it, the history of the former daily exercise (day streak, solved exercises) stays there until it is cleared. This data stays on your device, is never sent anywhere (except for the world ranking and classroom mode, described below) and is used neither to identify you nor for advertising. You can clear it at any time from the Settings menu › "Clear all my data", or by clearing the site's data in your browser. Your cookie choice is kept the same way (key "speedql.consent") : 6 months for accepting or declining cookies, then it is asked again, and 13 months for an objection.
- Audience measurement (PostHog). The site uses PostHog, a tool published by PostHog Inc., with its European hosting (Frankfurt, Germany), to understand how the game is used and improve it. This data is not used for advertising and is not sold, and no visitor is identified (no account, no name or email; IP addresses are anonymised). It works on two levels:
- Without your consent: anonymous measurement, with no cookies. No identifier is stored in your browser: only a technical flag with no identifier ("__ph_opt_in_out_…", in local storage) records that measurement must stay anonymous. PostHog counts page views, games, questions shown, right or wrong answers (with the error type and the SQLite error message), settings, device and browser type and an approximate location worked out from the IP address. An anonymous identifier, recalculated every day, only groups the events of a single day. There is no session recording and no heatmap. This measurement, limited to the site's audience statistics, does not require consent; you can object to it with the "Opt out of all measurement" button in the banner, available through the "Cookie settings" link at the bottom of every page: no event is sent any more.
- With your consent ("Accept" button): full tracking. PostHog also stores a random identifier in a cookie and in local storage (names starting with "ph_"), valid for at most 1 year, to link your visits together (progress, loyalty), and may record your game sessions (clicks, scrolling, page display) and produce heatmaps. In these recordings, the SQL queries you type are visible; all other input fields are masked. Legal basis: your consent, which you can withdraw at any time with the "Cookie settings" link: the PostHog cookies are then deleted and measurement becomes anonymous again.
- The SQL queries you write run in your browser, using a SQLite engine built into the page. Their text is not sent with the statistics: only their length, the result (right, wrong or error) and, in case of error, the SQLite message (which may quote a word from the query) are measured. Only with your consent, they may appear in session recordings.
- The country suggested by default in the world ranking form is worked out on your device from your browser's time zone and language. It is only sent if you confirm it by publishing your score.
As the hosting provider, Cloudflare processes technical connection data (for example IP address, time and requested page) to deliver the site and protect it against abuse. This processing, its purposes and retention periods are described in Cloudflare's privacy policy. The publisher does not use these logs to identify visitors. The only audience-measurement tool is PostHog, described above. For any question about your data, or to exercise your rights (access, correction, erasure, objection), you can write to contact.1618bits@gmail.com. You can also lodge a complaint with your data protection authority (in France, the CNIL).
Classroom mode
When a teacher creates a game in classroom mode, the game data is processed by a Cloudflare server (Workers and Durable Objects) to show the live ranking: game code, settings, the nickname chosen by each student, score, and number of correct answers, mistakes and skipped questions. No account and no email address is sent. When a query is right on the student’s device, its text is sent to the server to be checked and timed (the server awards the points); it is neither stored nor logged. To limit abuse, the server counts game creations and code look-ups from the same connection using a truncated fingerprint of the IP address (never the address itself), kept for one hour at most. The order of the questions is drawn at random for each student, offensive nicknames are refused and the teacher can approve each newcomer. The teacher’s browser keeps the game key for 8 hours so that the game can be resumed (local storage of their device). This data is deleted automatically two hours after the game ends, or three hours after it was created if it never starts. This processing is necessary to provide the game requested by the teacher and the students. We recommend that students choose a first name or a nickname rather than their full name; the teacher can remove an inappropriate nickname from the game.
World ranking of the timed mode
The timed mode has a world ranking: the top 10 best games, for the keyboard and for the tiles. Every timed game takes part automatically, with no sign-up; you can opt out at any time in the Settings menu › World ranking (your games then stay entirely on your device). It uses the same Cloudflare server (Workers and Durable Objects) as classroom mode. This is what is processed:
- When a timed game starts: the browser asks the server for a random game number and a random seed, used to draw the questions. To limit abuse, the server counts the games started from the same connection using a truncated fingerprint of the IP address (never the address itself), kept for about one hour and then deleted automatically.
- When the game ends: the browser sends the game log (the time of each attempt, the text of the SQL queries typed and the skipped questions) and the list of questions already asked in your previous games (numbers, kept in your browser to vary the questions), so that the server can replay the game and verify the score. The queries are used for this verification only: they are not stored, not logged and not used in statistics. The server only keeps the verified result (score, level, duration, keyboard or tiles) for two hours at most.
- If your score enters the world top 10, and only then, the game offers you, once only, to choose a nickname and a country; otherwise nothing is offered. The first publication needs your action ("Join the ranking" button); after that, every score that enters the top 10 is published automatically with the same nickname and country, which you can change at any time in Settings › Ranking profile. If your score becomes the world #1, you can also leave a message of up to 140 characters (no links or addresses): it is shown to all players, at the end of their timed games, with your flag, your nickname and the number of days since it was written. It disappears when your record is beaten or when you remove your score, and the publisher can remove it if it is inappropriate. What is then kept: the nickname (2 to 16 characters; we recommend a first name or a nickname rather than your full name), the country you choose (optional, never worked out from the IP address), the score, the duration, the input mode, the date and a fingerprint of a random identifier created on your device, which lets you find and remove your score. The ranking shows the rank, the country flag, the nickname and the score.
- Retention: only the 10 best scores of each mode are kept. A score that drops out of the top 10 is deleted at once; a top 10 score stays as long as it is not beaten, or until you remove it.
- Your rights: you can remove your score at any time with the "Remove my score from the ranking" button on the ranking screen (on the device used to publish) or with "Clear all my data" in the Settings menu. You can also write to the contact address above, giving your nickname. You can object to your games being sent by opting out of the ranking (Settings › World ranking). The publisher can remove an inappropriate nickname.
Legal basis: sending timed games for verification rests on the publisher's legitimate interest in running a reliable ranking, to which you can object at any time as described above; publishing the nickname and the country rests on your consent, given by submitting the form (or by saving your profile in Settings) and withdrawn at any time: "Remove my score from the ranking" also deletes the nickname and country saved on your device. No account and no email address is requested. The score is verified by replaying the game, which does not prove that it was played by a human.
7. Liability
The exercises are provided for educational purposes. The publisher takes care over their accuracy, but cannot be held liable for any error, omission or use made of the information on the site.
8. Governing law
This legal notice is governed by French law.
Component licences (Press Start 2P and Space Mono fonts, sql.js engine): full licence texts.