Skip to main content

Smart Lists, Smart Filters, and Search

A Smart Filter is anything you can describe in 2Do's search bar — a keyword, a tag query, a date range, a combination of all of those. A Smart List is a Smart Filter that's been saved as a permanent entry in the Lists Panel, so the perspective is always one click away and stays up to date as your tasks change.

The same search engine powers the Global Search Bar and Smart Lists — so anything you can describe with the syntax on this page can be applied as a one-off search or saved as a permanent Smart List. The Focus Filter is related, but intentionally simpler: it uses a small built-in condition menu for quick narrowing.

Smart List rule builder

The Global Search Bar lives in the toolbar — a magnifying-glass button that auto-collapses when not in use. Click it (or press ⌘F) to expand the field and start typing. Click the small magnifying-glass dropdown inside the search field to insert presets, or type the syntax described here directly.

The dropdown to the right of the search field offers date filters that apply on top of whatever else is in the bar (see Date Filters).

Two Search Modes — Full Text and Soundex

2Do supports two distinct ways of matching text:

  • Full Text Search — precise word matching with wildcards and capital OR. Use this when you want exact control over the results.
  • Soundex Search — sound-alike matching. It tolerates common spelling mistakes, missing letters, and pronunciation variants.
If you typed thisSoundex can still find
plumverplumber
StevenStephen
alexnderAlexander
CatherineKathryn
JonJohn

Soundex broadens text searches so similar-sounding words can still match. To use Full Text wildcards and capital OR precisely, toggle Soundex off under the search options dropdown — otherwise Soundex intentionally widens the results.

2Do has two find surfaces. Don't confuse them:

  • Search (⌘F, magnifying-glass button) — filters the current list or all lists to matching tasks, with full Smart Filter syntax. The list collapses to just the results, and you can save what you've built as a Smart List.
  • Quick Find (F while focused on the Task List, or View > Task Find Bar) — jumps the selection to the first task whose title matches, without filtering anything out. Auto-expands projects and checklists when the match is in a sub-task. Best when you know the task is there and just want to navigate to it.

Full Text Search Operators

With Soundex off, 2Do supports these operators in the search field:

PatternBehaviourExample
word1 word2Implicit AND — matches both words anywhere in the tasknew job
word1 OR word2OR (capital OR) — matches either wordCall OR new
word -word2Excludes a wordnew job -find
word*Wildcard — matches words starting with the prefixnew* matches new, newer, newest
*Matches tasks with searchable textUse alongside keywords when you want a broad text match plus structured filters
!wordExcludes a word (alternate syntax)!work

Worked examples (using sample tasks: Get a haircut one day, Buy a new car some day, Find a new job, Call: Mum, tell about my new job, Call: Tim):

  • new jobFind a new job, Call: Mum, tell about my new job
  • new job -findCall: Mum, tell about my new job
  • a dayGet a haircut one day, Buy a new car some day
  • Call OR newBuy a new car some day, Find a new job, Call: Mum, tell about my new job, Call: Tim

The Six Built-In Keywords

2Do recognises six reserved keywords. Each turns the search bar into a structured filter against a specific dimension of your tasks. They can be combined freely, and each supports its own AND / OR / ! / brackets.

type: — Filter by Task Property

The most expressive keyword. type: accepts a list of presets that filter by a specific task property. For example:

type: hiprio

…shows every high-priority task. Use AND, OR, brackets, and ! to combine presets:

type: (proj OR chck) AND hiprio AND !repeat
type: ((starred OR hiprio) AND due) OR today

type: Presets — Task Structure

PresetMatches
alltasksAny task (Project, Checklist, Sub-task, or Task) — flat view
taskPlain Tasks only (no projects, no checklists)
subtasksSub-tasks only
projProjects
chckChecklists
emptyprojProjects with no active sub-tasks
emptychckChecklists with no active sub-tasks

type: Presets — Actions

PresetMatches
actionTasks with any Action attached
callCall action
smsMessage action
emailMail action
browseBrowse (URL) action
visitVisit (Address / Maps) action
googleGoogle (web search) action

type: Presets — Attachments and Notes

PresetMatches
audioTasks with audio attachments
pictTasks with picture attachments
noteTasks with notes

type: Presets — Priority

PresetMatches
prioWith any priority
noprioWithout priority
hiprioHigh priority
medprioMedium priority
lowprioLow priority

type: Presets — Status and Tracking

PresetMatches
starredStarred tasks
alarmsWith alarms set
repeatRecurring tasks
durationWith a duration assigned
inprogressTasks with a start date or duration whose window is currently active
pausedTasks belonging to a paused tag

type: Presets — Tags and Locations

PresetMatches
anytagTasks with at least one tag
notagTasks without any tag
anylocationTasks with at least one location
nolocationTasks without a location

type: Presets — Dates

PresetMatches
dueHas a due date
nodueNo due date
startHas a start date
nostartNo start date
todayStart or due date is today
duetodayDue today
starttodayStarts today
tomorrowStart or due date is tomorrow
duetomorrowDue tomorrow
starttomorrowStarts tomorrow
thisweekStart or due date this week
duethisweekDue this week
startthisweekStarts this week
overduePast-due
tasksoverdueOverdue, excluding lists you've excluded from All
donetodayCompleted today
doneyesterdayCompleted yesterday
donethisweekCompleted this week

tags: — Filter by Tag

Filter the list to tasks that carry specific tags. Comma-separated lists are treated as OR by default; use AND, OR, brackets, and ! for finer control.

tags: home, work # implicit OR — same as: tags: home OR work
tags: (home OR work) AND !play
tags: (call OR mail) AND work
tags: ? # any tag set
tags: ~ # no tag set

locations: — Filter by Location

Same model as tags:. Comma-separated = OR; supports AND / OR / ! / brackets.

locations: home, drycleaners # = locations: home OR drycleaners
locations: (home OR work) AND !playground
locations: ? # any location set
locations: ~ # no location set

groups: — Filter by List Group

Restrict the search to tasks inside (or outside) one or more List Groups.

groups: projects # all tasks in the "Projects" list group
groups: home, work # tasks in either group
groups: !home # exclude the Home group

modified: and created: — Filter by Recency

Filter by when a task was last modified or first created. Time units: mins, h (hours), d (days), w (weeks), m (months), y (years). Prefix with < for "less than" and > for "more than".

modified: 2d # modified in the last 2 days
modified: > 2d # modified more than 2 days ago
created: 2h # created in the last 2 hours
created: < 1w # created less than a week ago

Combining Keywords

Real power comes from combining keywords. They can appear in any order, but if you also include a free-text search keyword, the free-text term must appear first:

plumber type: starred tags: builders groups: home

Here plumber is the text search and the rest narrow it down by property.

When you combine multiple keyword sections, 2Do inserts an implicit AND between them:

type: overdue tags: home OR school
tags: someday type: anyprio OR starred groups: shopping
tags: !work type: (hiprio AND thisweek) OR starred groups: !work
note

You cannot OR across different keyword types in a single rule. For example, this is not supported:

[NOT POSSIBLE] type: starred OR tags: home

To express that, create two separate Smart Lists or use the rule builder's any of the following mode.

Date Filters Beyond type:

The search bar's date dropdown adds an explicit date filter on top of whatever else is in the bar. Three options:

  • Without Due Date — only tasks with no due date (perfect for a Someday Smart List).
  • Date Range — pick a fixed From date and To date.
  • Dynamic RangeNext N days / weeks / months / years — moves with the calendar.

The date filter is appended at the end of the search internally and cannot be wrapped in brackets — it always applies as the last condition.

The Rule Builder

For complex multi-condition filters, prefer the visual rule builder over the keyword syntax. Click the magnifying-glass dropdown inside the search bar → Search Presets → click [+] to add a clause. Each clause matches against one task property:

PropertyMatches
Title / Notestext contains, doesn't contain, equals
Listis / is not a specific list
Taghas tag, doesn't have tag, has any tag in group
Priorityis / is not None / Low / Medium / High
Due Datetoday, tomorrow, this week, overdue, range
Start Datetoday, future, range
Locationhas location, near current location
Actionhas action of type ...
Has alarmyes / no
Repeatingyes / no
Staryes / no
Completedyes / no
Pausedyes / no
Scheduledyes / no (future start date)

Combine as many clauses as you need. Joined with all (AND) or any (OR) at the top. Nested rule groups (a group with any inside a parent with all) are supported for finer expressions.

Saving a Filter as a Smart List

Once your search returns the perspective you want, click the [+] button to the left of the search field. Give the new Smart List a name and it joins the Lists Panel — its rule keeps applying as your tasks change, so the list is always up to date.

A Smart List filters tasks within whichever list was active when you created it. To filter across everything, select the All Focus List first, then build the search.

You can also start from scratch:

  • File > New Smart List, or
  • Right-click in the Lists Panel → New Smart List.

A Smart List has a name, a color, an icon (Smart Lists show a different glyph than regular lists), and a rule built from one or more clauses.

Updating or Editing a Smart List

To change a Smart List's rule:

  • Right-click the Smart List in the sidebar → Edit Smart List...
  • Or select the Smart List and choose File > Edit Smart List...

Adjust the rule, save, and the perspective updates immediately.

Hiding Completed Tasks from a Smart List

By default a Smart List shows everything that matches — including completed tasks, which often clutter the view. Right-click the Smart List in the sidebar → Hide Completed Tasks to suppress them. Toggle it back on the same way.

Reusable Smart List Recipes

Smart ListRule
Somedaysearch → Without Due Date → save (filter on All)
Tomorrowtype: duetomorrow (filter on All)
Next 3 Dayssearch → Dynamic Range → 3 days → save (filter on All)
Tasks With Any Tagtype: anytag
Untagged Taskstype: notag
Stalledinprogress AND !repeat AND created: > 14d
High-priority Todaytype: hiprio AND today
Errands Nearbytype: anylocation AND visit
Quick Winstype: duration plus a duration-based rule in the rule builder
Waiting Ontags: waiting (with a paused-tag toggle if you want them hidden by default)
Recently Capturedcreated: 2d
Review InboxList is Inbox AND Completed is no

Tips

tip

For complex multi-condition rules, build the rule visually using Search Presets in the search options dropdown — then click [+] to save. The keyword syntax is most useful for refining a saved rule, or for typing a one-off that's faster than navigating dialogs.

tip

Soundex is brilliant for everyday "I remember the name vaguely" searches. Toggle it off only when you specifically need exact OR, exclusion, or wildcard searches.

tip

A Smart List is just a perspective. Deleting one never deletes its tasks. Experiment freely.