TurtleLab privacy
Effective date: November 3, 2026
The short version: TurtleLab does not collect, keep, or send anything about you. There are no accounts, no cookies, no analytics, no advertising, and no server of its own. Everything you do happens inside your browser tab, on your own device.
Facts for IT staff
| Question | Answer |
|---|---|
| Does it have a backend or server of its own? | No. It is a folder of ordinary files (web pages, scripts, styles, fonts and pictures) that GitHub Pages hands to the browser. Your browser runs them. Nothing runs on a server. |
| Are accounts or sign-in needed? | No. There is nowhere to type a name, an email address or a password. |
| Does it set cookies? | No. |
| Does it use analytics, trackers or ads? | No. |
| Does it load anything from another website? | No. The scripts, fonts, icons and styles all come from the same address as the page. There are no content delivery networks and no outside fonts. |
| Does the page send anything anywhere while it runs? | No. The code contains no network requests, no forms, and no way to upload data. The browser would also refuse them (see the policy below). |
| Does it keep anything on the device? | Yes, one thing. So that refreshing the page does not lose your work, TurtleLab keeps a copy of your current blocks, and the words on any sticky notes or write blocks you typed, in your browser's local storage, as one item named turtlelab-project. It is plain text, it stays on this device, and it is never sent anywhere. It is removed when you press New or clear the site's data in the browser's settings. Anyone using the same browser profile on the device can see it, so on a shared computer a student should press New when finished. Nothing else is stored: no cookies, no databases, no cache. |
| What does the Save button do? | It turns the drawing into a PNG picture and offers it as an ordinary download to the device. Your blocks, and the words on any notes or write blocks you typed, are tucked inside the picture as text, and nothing else is (no name, no date, nothing about the computer). Notes are whatever a student types, so they are worth a look before a picture is shared. The file is made inside the page and goes only to the folder you pick. Opening a saved picture reads it inside the page too. |
| What does the PDF button do? | It builds a PDF on the device, with a picture of your blocks and a picture of your drawing (with a grid of x and y numbers on it), and offers it as an ordinary download. A small program has the blocks above the drawing on one page. A bigger one puts the blocks down the left of the page, or on page 1 with the drawing on page 2, so the writing can be read. The badge's numbers (blocks, complexity, elegance and efficiency) are printed along the top of page 1, and the reasons for them are on a last page, so the work is easier to mark. If the program has not been run since it last changed, the button runs it first (inside the page, like the Run button) so that the numbers and the drawing match the blocks. The same picture the Save button makes, with your blocks tucked inside it, is attached to the PDF, so a teacher can drag the PDF onto TurtleLab to open the blocks. Nothing is sent anywhere, and nothing is fetched to make it: the font it needs is part of the page's own code. The only dates in it are the ones in the file name. As with Save, the words on any notes you wrote are in it. |
| What are the other ways to save? | Right-clicking (or pressing and holding) the Save button lists them: a JPEG or a plain PNG of the drawing, two kinds of SVG (lines that stay sharp at any size), a .pes or .dst file for an embroidery machine, the blocks as Python, and the blocks as a text file. Each one is built inside the page and offered as an ordinary download, as Save does. Nothing is sent anywhere, nothing is fetched to make them, and the picture files and embroidery files have no name, date or computer details in them. The Python and project files, like Save, hold the words on any notes you wrote. |
| What do the Fit and grid buttons do? | Fit zooms the drawing and the blocks on the screen so all of them can be seen, and the grid button shows the x and y numbers over the paper, and each press after that goes on to the next paper until the blank screen comes back. Right-clicking the grid button opens a list of other grids (squares, dots, circles and angles) and of papers (white, whiteboard, graph paper, chalkboard, blueprint). The whiteboard and the chalkboard draw your picture wobbly, as if by hand, on the screen only, and the wobble and the dirt on the board are picked by chance each time you choose one (kept nowhere, only while the page is open). They only change what is shown. None of them saves, stores or sends anything, your choice of grid or paper is forgotten when the page is closed, and neither the grid nor the paper is ever in a saved picture. The one exception is the PDF, which always has a grid on its drawing so the x and y can be read, on plain white paper. |
| Does the color picker send anything? | No. It changes the three numbers on a set color or fill screen block, and shows them as hex and binary, all inside the page. Its color chooser is the browser's own. Nothing about it is saved except the numbers in your blocks, like any other number you type. |
| Is the shark's score saved? | No. It is a number on the trash can while the page is open, and it starts again when the page is opened. Nothing about it is stored or sent. |
| Does the shark remember what it eats? | Only while the page is open, and only in the page's memory. If you drop blocks in the can, or click a fish or a boat for it to eat, the shark keeps a small picture of each so that, now and then, it can be sick and bring them all back up for a few seconds on the screen, where they fade away. The pictures are never saved, put in a file or sent anywhere, and they are gone when the page is closed. |
| What about TurtleLab inside a lesson page? | The lessons on this site show TurtleLab in a frame in the page, from this same site. It is the same app, and it does not read or save anything in a frame: your saved blocks are never loaded into it, and nothing you do in it can change them. Nothing is sent anywhere. The lessons also have a small Box lab, a box with buttons that holds one number while the page is open, which stores nothing at all. |
| What are the numbers in the corner? | The badge counts the blocks on the page and gives complexity, elegance and efficiency from 0.0 to 1.0. Complexity and elegance are worked out from the blocks, and efficiency from what the last run did (how far the turtle walked, which lines it drew and how many steps ran). All of that is worked out inside the page. None of it is saved, sent anywhere, or put in a saved picture. The one place it goes is a PDF the student saves: the numbers are written along the top of page 1 and the reasons on a last page of the file, made on the device like the rest of the PDF. |
| What does the Python box do? | It shows your blocks as Python code in a small box on the page. That is only text on the screen. Nothing about it is saved or sent. The Copy button puts the text on the clipboard, and only when it is pressed. |
| What does the Logo box do? | It shows your blocks written as Logo, and lets you type a Logo program of your own and run it. What you type stays in that box on the page: it is not saved, not kept in local storage and not sent anywhere, and refreshing the page clears it. Running it uses the same turtle and the same program runner as the blocks, on the device, and fetches nothing. The Open in real Logo button opens the program in a new tab at /logo/, a copy of the JSLogo interpreter kept on this same site: the program goes in the part of the address after the #, which the browser never sends anywhere, and that copy makes no outside requests and keeps nothing in the browser. |
| Can it be checked? | Yes, easily. See below. |
The browser enforces it
Every TurtleLab page carries a Content Security Policy. This is an instruction the browser itself follows, and it means the page is not allowed to load or contact anything outside its own address, even if a mistake were made in the code:
default-src 'self'; img-src 'self' data: blob:; font-src 'self'; style-src 'self'; script-src 'self'; connect-src 'self'; object-src 'none'; base-uri 'none'; form-action 'none'
In plain words: scripts, styles, fonts and requests may only come from this site; forms may not send anywhere; and nothing can be embedded from outside.
How to check for yourself
- Open the browser's developer tools (F12) and look at the Network tab while using TurtleLab. You will only see the page's own files loading, once, and then nothing more.
- Look at the Application tab: there are no cookies, and local storage holds just the one item,
turtlelab-project, which is your blocks, notes and written words as plain text. - Use View Source. There is no hidden code. The whole program is public.
Hosting
The site is hosted by GitHub through GitHub Pages. Like any web host, GitHub's own systems handle basic connection details (such as an IP address and which page was asked for) to deliver the files. That is part of how GitHub runs its service, and it is not something TurtleLab collects or can see. It is described in GitHub's own Privacy Statement.
Student records
Because TurtleLab collects nothing, it creates no student records that the school, the teacher or anyone running the site could ever see. A student's blocks stay on the student's own device. The wider statement for the whole learning site, including a section on FERPA, is at learn.porttack.com/privacy.