Organize tasks with priorities (low/medium/high), due dates, tags, smart filtering, search, sorting, stats dashboard, import/export, and local storage persistence
A minimal to-do list that saves to your browser's local storage. Add tasks, check them off, reorder them, nothing fancy, just works.
Initializing in your browser…
Generate SEO meta tags, Open Graph, and Twitter Card tags for your website. Preview how your page appears in search results and social media.
Focus timer using Pomodoro technique with work/break sessions, circular progress, presets (Classic 25/5, Deep Work, 52/17), stats tracking, and auto-start options
Create reusable checklists with nested items, 4 templates (Project Launch, Travel Packing, Weekly Review, Event Planning), progress tracking, and Markdown export
You want a quick task list for today that survives a page refresh but never touches an account or a server.
Entered tasks
Ship hotfix · Review PR #214 · Reply to Dana · Book standup room
Current board
✔ Ship hotfix ✔ Review PR #214 ☐ Reply to Dana ☐ Book standup room 2 of 4 done, open items kept after reload
Tasks persist in your browser's localStorage, so closing the tab and reopening it keeps the list intact, while nothing is ever uploaded. It is deliberately minimal, add, check off, reorder, clear, for the cases where opening a full project tracker is overkill.
A minimal to-do list that saves to your browser's local storage. Add tasks, check them off, reorder them, nothing fancy, just works.
Each task you add carries four attributes beyond its text: a priority of low, medium, or high (rendered green, yellow, or red), an optional due date, an optional comma-separated list of tags, and timestamps. The due date is stored as a plain YYYY-MM-DD string and parsed component-by-component into a local Date (splitting year/month/day) rather than through Date.parse, which deliberately avoids the common UTC off-by-one error where a date entered today shows as yesterday in negative-offset timezones. Tags are split on commas, trimmed, and empty entries dropped, then displayed as #tag chips. When you check a task off it records a completedAt timestamp; both createdAt and completedAt are shown as relative time (just now, 5m ago, 3h ago, 2d ago, then an absolute date past a week).
A live stats bar across the top computes five figures from your task array: total, active, done, high priority (counted only among incomplete tasks), and due today (matched by parsing each due date to a local Date and comparing against midnight today). You can filter the list by all/active/completed, type into a search box that matches both task text and tag names, and sort by created date, priority (high before medium before low), due date (tasks with no due date sort to the bottom), or alphabetically via localeCompare, with an ascending/descending toggle. Editing a task is inline and lets you change the text, priority, due date, and tags at once; a Clear button next to the date field removes a due date entirely. New tasks are prepended so the newest sits at the top.
Everything persists only in this browser under the localStorage key toolbox-todos as a JSON array, written on every change and reloaded on open, so your list survives refreshes but lives on a single device, is never sent to a server, and is wiped if you clear site data. Because of that, the Export button is your real backup path: it serializes the full task list (with all timestamps and metadata) to a downloadable todos.json file, and Import reads a JSON file and prepends its tasks to your current list, rejecting malformed files with an Invalid file format alert. A Print button opens a new window that renders the currently filtered and sorted tasks with checkbox glyphs, a priority-color legend, the same five summary stats, and creation/completion times, then auto-triggers the browser print dialog so you can produce a paper copy or PDF.
Jot down today's priorities without signing up for a project management app.
Capture follow-up tasks during a call and check them off as you go.
Yes, tasks are saved in local storage and persist until you clear them or clear your browser data.
This runs as client-side JavaScript. Keys, tokens, payloads, and other inputs never leave your device.