To-Do List

A list that survives a refresh, kept on your device and nowhere else.

Runs entirely in your browser

Loading the tool…

    Type a task, press Add, and it stays there. Close the tab, reopen it tomorrow, and the list is still what you left. There is no account to make and no server holding it: the list lives in this browser's localStorage, which is a small store the page is allowed to write on your own device.

    That has a real limit and it is worth reading once. The list is tied to this browser on this machine. It will not appear on your phone, it will not appear in a different browser on the same machine, and anything that clears site data deletes it without asking. A private window forgets it when the window closes. That is a property of storing things locally rather than a shortcoming of this page, and it is the same trade that keeps the list off anybody else's server.

    So there is a Download button. It writes the list to a JSON file you keep, and Restore reads one back. If a list matters, download it: a page that remembers things has a duty to tell you exactly how it forgets.

    How to use it

    1. Type a task and press Add. It is saved the moment it appears.
    2. Use the pencil to edit, the checkbox to finish, and the handle to drag it into place.
    3. Download the list as a file if it matters, because clearing site data deletes it.

    Questions

    Where is my list actually stored?

    In this browser's localStorage, under a key belonging to this site, on this device. Nothing is sent anywhere: the page is served with a Content-Security-Policy whose connect-src is none, so it is not permitted to open a connection even if it wanted to. Open the network tab and add a task; nothing happens.

    Will it still be there after I refresh or close the tab?

    Yes. localStorage survives refreshes, closing the tab, and restarting the browser or the machine. It is written the instant a task changes rather than on a save button, so there is no unsaved state to lose.

    Why can I not see my list on my phone?

    Because nothing was uploaded. localStorage is per-browser and per-device by design, so there is no copy anywhere else to fetch. Download the file on one device and restore it on the other if you need the list in two places; that is the only sync there is, and it is deliberate.

    What deletes my list?

    Clearing browsing data or site data for this site, using a private window and closing it, browser settings that clear storage on exit, and some "cleaner" utilities. Uninstalling the browser takes it too. None of these warn you first, which is the argument for downloading a copy of anything you would mind losing.

    How many tasks can it hold?

    Far more than a to-do list needs. Browsers allow a few megabytes per site, and a task is a few dozen bytes, so tens of thousands would fit. If storage does ever fill, the page says so instead of silently dropping what you typed.

    Can other sites read my tasks?

    No. localStorage is walled off per origin, so only pages on this domain can read this key, and the only page that writes it is this one. Anyone with access to your unlocked device can read it through the browser's developer tools, so it is private from the network but not a secret store: do not keep passwords in it.

    How do I reorder tasks?

    Drag the handle on the left of a row, which works with a mouse, a finger or a pen. If you would rather not drag, put keyboard focus on that handle and use the up and down arrow keys: it moves one place per press and keeps focus on the task, so you can walk something to the top without reaching for the mouse. Reordering while a filter is on moves the task among the ones you can see and leaves the hidden ones where they were.

    Does it work offline?

    Completely. Load the page once and it keeps working with the network off, on a plane or anywhere else, because everything it needs is already in the page. There is nothing to reconnect to.

    Is there any tracking on this page?

    None. No analytics, no cookies, no fonts fetched from anywhere, and no requests at all. The only thing stored is the list you typed, and only on your device.

    What "saved locally" is and is not

    The list uses localStorage, which is worth being precise about, because "saved" means something different here from what it means in an app with an account.

    QuestionAnswer
    Survives a refresh?Yes
    Survives closing the browser?Yes
    Survives restarting the machine?Yes
    Appears in another browser?No
    Appears on another device?No
    Survives clearing site data?No
    Survives a private window closing?No
    Readable by another website?No
    Readable by us?No: it never leaves your device

    The last two rows are why the first six are worth accepting. Everything that makes this list fragile is the same thing that keeps it yours.

    Your data stays on your device

    Everything above runs inside your browser as WebAssembly compiled from Rust. Nothing you type is uploaded, logged or stored on a server. You can load this page once, go offline, and it still works.

    This page makes no requests at all, to anywhere. That is not a promise in the copy: it is a Content-Security-Policy header your browser enforces, and connect-src on it is none. Open the network tab and watch nothing happen.