Todo — butter docs Skip to content
Widgets / Focus

Todo

A fast task list with optional structure. Type freely, or sneak dates, priority, and tags into the input — they parse out of the title automatically.

Tasks first, structure when you want it. A plain list of titles looks exactly like that — no chrome, no toolbar. The moment any task gains a due date, priority, or tag, the widget grows a compact toolbar so you can sort, filter, and act on the metadata you put in. Sync to TickTick, or keep it on the device.

Free 4×4 default TickTick sync Quick-add NL
Todo
  • Send the proposal to Sarah
  • Review the staging deploy
  • Draft Q3 OKRs
  • Reply to design review thread
  • Pick up groceries
  • Sketch a feedback loop for the inbox
  • Wrap up the launch checklist
  • Book the offsite venue

Add it to your dashboard

Press E then A and pick Todo. It drops in at four-wide, four-tall — comfortable for ten or so items before scrolling kicks in. Type into the input at the top, press Enter to add. Click the checkbox to mark done. Drag a row by its background to reorder.

The footer shows a running count — 3 remaining · 7 total — plus a Clear done button that wipes completed items in one click. The button only appears when there's something done to clear.

Quick-add: dates, priority, tags

Type a task and slip metadata in alongside the title. The parser extracts the metadata into the right slots and the task stores a clean title. Mix and match — order doesn't matter.

Sets Syntax Aliases
Due date tomorrow

e.g. reply to Sam tomorrow

today · fri · next mon · in 3 days · in 2 weeks
Priority !high

e.g. ship feature !high

!med · !low · !! · !!!
Tags #work

e.g. pick up groceries #errand #home

#errand · #anything (alphanum + dashes)

Don't want to type it? Click the calendar icon on any row to pick a date from a small menu (Today / Tomorrow / Next week / native picker / Clear). Click the flag to cycle priority none → low → med → high. Click any tag chip to filter the list to that tag; click #tag ✕ in the chip row at the top to clear.

Sort + Filter toolbar

A small toolbar appears only when at least one task has metadata. It has two controls:

  • Sort: Manual respects the drag order; Due date puts overdue and today at the top, no-date at the bottom; Priority orders high → med → low → none. Dragging a row while sorted by date or priority auto-flips back to manual so the move sticks.
  • Filter: All / Today / Overdue pills with a count badge on each. Today shows tasks due today plus overdue (so an overdue task isn't hidden when you focus on today). Overdue shows only past-due items, badge in red.

The toolbar collapses when every task is plain text. A list of three titles reads as a list of three titles — no controls in the way.

TickTick two-way sync (free)

Bind any Todo widget to a project in your TickTick account and the two lists stay in lock-step. Adding a task in butter creates it in TickTick; completing a task on your phone shows up here within a couple of minutes (or on the next new tab open).

To set it up:

  1. Connect TickTick once from Settings → Connections.
  2. Open the widget's settings (gear icon in edit mode). Set Sync with to TickTick, then pick a project from the dropdown.
  3. Tasks load. Edits, drags, completes, dates, priority, tags — all flow both ways.

Different Todo widgets on the same dashboard can be bound to different projects: one for Work, one for Home, one staying local for ephemeral things. Switching back to Local only restores your previously stored local list — TickTick mode never deletes the local copy.

Settings

Setting Type Default
Sync with

Local stores tasks on the device. TickTick (free, OAuth) syncs every task to a project in your TickTick account two-ways — completion, due date, priority, sort order, even drag-to-reorder. Switching between sources never deletes the other side; switching back restores what was there.

local · TickTick local
Sort done to bottom

Completed tasks move below open ones. Toggle off to leave them where they were checked.

toggle on
Hide done tasks

Hides completed tasks entirely. Still stored — toggle this off to see them again, or hit Clear done in the widget footer to delete them.

toggle off
Show created time

Adds a small relative timestamp next to each task — just now, 2m ago, 3d ago. Useful nudge when something's been sitting on the list too long.

toggle off
Confetti on complete

Small confetti burst from the checkbox when you mark a task done. Honors prefers-reduced-motion.

toggle on

How storage works

Local-mode todos live in Chrome's storage.local, keyed by the widget's instance ID — todos:<id>. TickTick-mode todos live in your TickTick account; the widget keeps a local mirror that refreshes on alarm and on the new-tab event.

  • Each widget keeps its own list. Two Todo widgets on one dashboard means two independent lists (whether they're each local, each pointed at a different TickTick project, or one of each).
  • Free: local lists stay on the device. Pro cloud sync (opt-in): local lists sync too. TickTick sync is free for everyone — it goes directly from your browser to TickTick's API, never through our servers.

Small things you might miss

  • Drag from anywhere on the row. No dedicated handle — pointer-down anywhere on a task row starts a reorder once you've moved past a small threshold. Click the checkbox or any icon without dragging and it does what you'd expect.
  • Overdue reads as red. The date pill on an overdue task is red instead of subtle. The duplicate left-border treatment we used to have was visual noise.
  • Filter counts use the open total. The "2" next to Today is the number of open tasks due today + overdue, regardless of which filter is active. Switching filters never surprises you with a different count.
  • Two empty states. A fresh widget says No tasks yet; one where you've cleared everything says Nothing left to do. Today-filter says Nothing's due today. Nice.

Heads up

  • TickTick mode is online-first. Local mutations need a successful round-trip to TickTick. If a mutation fails — token expired, offline, server hiccup — the widget surfaces a red banner above the list with a Retry button and pulls fresh state to keep things consistent.
  • Removing the widget removes the local list. If the widget was bound to TickTick, deletion only severs the link — your tasks live on in TickTick.
  • Drag reorder pushes one update to TickTick. When bound to TickTick, dragging a row updates that task's sortOrder to a midpoint between its new neighbours. A single API call, not N.