Smart Lists, Smart Filters, and Search
A Smart Filter searches tasks using words, tags, dates, or other conditions. Save it as a Smart List to keep it in the lists panel. Matching tasks appear there automatically as your tasks change.
Use a filter once in Search or save it for later. The Focus Filter provides a quick way to switch a list between its full contents and your chosen conditions.
Reaching Search
Tap the search icon in the top toolbar. Type a query, or use the controls below the field to choose presets, dates, and the search scope. Pulling down on the task list starts a sync.
Full Text and Soundex
- Full Text Search searches the text you enter, with support for phrases, exclusions, wildcards, and
OR. - Soundex Search finds similar-sounding words, including some spelling mistakes and pronunciation variants.
| If you typed this | Soundex can still find |
|---|---|
plumver | plumber |
Steven | Stephen |
alexnder | Alexander |
Turn Soundex on or off with the sounds-like control below the search field. Turn it off when you want results based only on the text you entered. 2Do remembers your choice, and each Smart List saves its matching option.
Full Text Search Operators
| Pattern | Behaviour | Example |
|---|---|---|
word1 word2 | Both terms are required. | new job |
word1 OR word2 | Either term can match. | Call OR new |
word -word2 | Excludes a word | new job -find |
word* | Wildcard: matches words starting with the prefix | new* matches new, newer, newest |
* | Matches any task in the search scope. | Use alone or with structured filters. |
!word | Excludes a term, like -word. | !work |
"word1 word2" | Matches the phrase in that order. | "new job" |
*word | Matches a word ending with the text. | *ing |
Worked examples use these 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 job: Find a new job, Call: Mum, tell about my new jobnew job -find: Call: Mum, tell about my new joba day: Get a haircut one day, Buy a new car some dayCall OR new: Buy a new car some day, Find a new job, Call: Mum, tell about my new job, Call: Tim
The Built-In Keywords
Use these nine keywords to filter specific task details: type:, tags:, taggroups:, locations:, lists:, groups:, modified:, created:, and completed:.
type: Filter by Task Property
type: hiprio
type: (proj OR chck) AND hiprio AND !repeat
type: ((starred OR hiprio) AND due) OR today
Task Structure
| Preset | Matches |
|---|---|
alltasks | Tasks, projects, checklists, and sub-tasks in one result set. |
task | Plain Tasks only |
subtasks | Sub-tasks only |
proj | Projects |
chck | Checklists |
emptyproj | Projects with no active sub-tasks |
emptychck | Checklists with no active sub-tasks |
Actions
| Preset | Matches |
|---|---|
action | Any Action |
call | Call action |
sms | Message action |
email | Mail action |
browse | Browse (URL) action |
visit | Visit (Address) action |
google | Google (search) action |
Attachments / Notes
| Preset | Matches |
|---|---|
audio | Audio attachment |
pict | Picture attachment |
note | With notes |
Priority
prio, noprio, hiprio, medprio, lowprio.
Status
starred, alarms, repeat, duration, inprogress, scheduled, paused.
Tags / Locations
anytag, notag, anylocation, nolocation.
Dates
due, nodue, start, nostart, today, duetoday, starttoday, anytoday, tomorrow, duetomorrow, starttomorrow, anytomorrow, thisweek, duethisweek, startthisweek, anythisweek, overdue, tasksoverdue, donetoday, doneyesterday, donethisweek.
today and tomorrow match the due date. Use anytoday or anytomorrow to match either the start or due date. thisweek and anythisweek both match start or due dates in the current week.
tags: Filter by Tag
tags: home, work # = tags: home OR work
tags: (home OR work) AND !play
tags: (call OR mail) AND work
tags: ? # any tag set
tags: ~ # no tag set
taggroups: Filter by Tag Group
Match tags from a named tag group:
taggroups: People
taggroups: People, Places
taggroups: !Someday
The group expands to its tags. As with tags: !work, excluding a group with tags matches tasks that have tags, leaving untagged tasks out.
lists: Filter by List
Search tasks in one or more named lists:
lists: Work
lists: Work, Home
lists: !Home
A matching list name searches that list even when another list is selected. List and group searches use names. Use ! to exclude a list.
locations: Filter by Location
locations: home, drycleaners
locations: (home OR work) AND !playground
locations: ? # any location set
locations: ~ # no location set
groups: Filter by List Group
groups: projects
groups: home, work
groups: !home
modified:, created:, and completed: Filter by Recency
Use a number and a unit: mins, h, d, w, m, or y. A plain value or < means within that time; > means longer ago. Long forms such as 2 days and fractional values such as 1.5h also work.
modified: 2d # last 2 days
modified: > 2d # more than 2 days ago
created: 2h # last 2 hours
completed: 7d # completed within the last 7 days
Combining Keywords
plumber type: starred tags: builders groups: home
type: overdue tags: home OR school
tags: someday type: prio OR starred groups: shopping
tags: !work type: (hiprio AND thisweek) OR starred groups: !work
Keywords normally combine with AND. An OR inside a keyword applies only to that keyword’s values. To make a whole keyword an alternative, put OR before it:
type: overdue OR tags: urgent
This matches tasks that are overdue or tagged urgent. Search text goes before structured keywords, as in the plumber example above.
Date Filters
Tap the date-range button below the search field to open Search Dates:
- Under Date range, choose From and To dates, or turn on No Due Date.
- Under Dynamic, choose a range relative to today so the results change as time passes.
- Use Include scheduled tasks to choose whether the range includes tasks whose start dates are still in the future.
Tap Done to apply the choices. Clear removes the date range. These controls work alongside the search text.
Search Presets
Open Search Presets below the search field to choose built-in filters. Tap a filter to select it, and tap ! to exclude it. Turn Match ALL filters on to require every selected condition. Turn it off to accept any selected condition.
The preview shows the search text these choices produce. Tap Done to apply it.
If a typed filter is too complex for these controls, its expression remains visible and unchanged. Edit it in the search field instead.
Saving a Filter as a Smart List
When the results are right, tap the save/add button below the search field. 2Do creates a Smart List with the current query, dates, and search options, and gives it a name based on the query. You can rename it afterward.
Select All or set the search scope to all lists first if you want to search across lists. Otherwise, the saved search can be limited to the current list.
A Smart List shows the original matching tasks. Editing or completing one changes it in its own list. Its saved search does not copy or move tasks.
Updating or Editing a Smart List
Select the Smart List, open Search, and adjust its query or filters. Tap the save button below the search field to update the current Smart List. To save a separate Smart List, begin the search from another list, such as All.
To rename the Smart List, change its color or group, or delete it, touch and hold its name in the lists panel. Choose Edit for its settings. Deleting it removes the saved search and keeps the tasks.
Completed Tasks
Ordinary results follow Show Completed Tasks in Appearance settings. A completion filter such as completed: 7d or type: donetoday includes completed matches.
Paused tasks can appear in searches without unpausing their tags. Future tasks also depend on scheduling visibility and the date range's Include scheduled tasks choice. See Tags and Dates and Durations.
Reusable Smart List Recipes
| Smart List | Rule |
|---|---|
| Someday | Open Search from All, choose No Due Date, and save. |
| Tomorrow | type: duetomorrow |
| Next 3 Days | Choose a three-day range under Dynamic. |
| Tasks With Any Tag | type: anytag |
| Untagged | type: notag |
| High-priority Today | type: hiprio AND today |
| Errands with directions | type: anylocation AND visit |