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.

The Global Search Bar
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 this | Soundex can still find |
|---|---|
plumver | plumber |
Steven | Stephen |
alexnder | Alexander |
Catherine | Kathryn |
Jon | John |
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.
Quick Find vs. Search
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 (
Fwhile 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:
| Pattern | Behaviour | Example |
|---|---|---|
word1 word2 | Implicit AND — matches both words anywhere in the task | new job |
word1 OR word2 | OR (capital OR) — matches either word | 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 tasks with searchable text | Use alongside keywords when you want a broad text match plus structured filters |
!word | Excludes 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 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 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
| Preset | Matches |
|---|---|
alltasks | Any task (Project, Checklist, Sub-task, or Task) — flat view |
task | Plain Tasks only (no projects, no checklists) |
subtasks | Sub-tasks only |
proj | Projects |
chck | Checklists |
emptyproj | Projects with no active sub-tasks |
emptychck | Checklists with no active sub-tasks |
type: Presets — Actions
| Preset | Matches |
|---|---|
action | Tasks with any Action attached |
call | Call action |
sms | Message action |
email | Mail action |
browse | Browse (URL) action |
visit | Visit (Address / Maps) action |
google | Google (web search) action |
type: Presets — Attachments and Notes
| Preset | Matches |
|---|---|
audio | Tasks with audio attachments |
pict | Tasks with picture attachments |
note | Tasks with notes |
type: Presets — Priority
| Preset | Matches |
|---|---|
prio | With any priority |
noprio | Without priority |
hiprio | High priority |
medprio | Medium priority |
lowprio | Low priority |
type: Presets — Status and Tracking
| Preset | Matches |
|---|---|
starred | Starred tasks |
alarms | With alarms set |
repeat | Recurring tasks |
duration | With a duration assigned |
inprogress | Tasks with a start date or duration whose window is currently active |
paused | Tasks belonging to a paused tag |
type: Presets — Tags and Locations
| Preset | Matches |
|---|---|
anytag | Tasks with at least one tag |
notag | Tasks without any tag |
anylocation | Tasks with at least one location |
nolocation | Tasks without a location |
type: Presets — Dates
| Preset | Matches |
|---|---|
due | Has a due date |
nodue | No due date |
start | Has a start date |
nostart | No start date |
today | Start or due date is today |
duetoday | Due today |
starttoday | Starts today |
tomorrow | Start or due date is tomorrow |
duetomorrow | Due tomorrow |
starttomorrow | Starts tomorrow |
thisweek | Start or due date this week |
duethisweek | Due this week |
startthisweek | Starts this week |
overdue | Past-due |
tasksoverdue | Overdue, excluding lists you've excluded from All |
donetoday | Completed today |
doneyesterday | Completed yesterday |
donethisweek | Completed 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
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 Range — Next 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:
| Property | Matches |
|---|---|
| Title / Notes | text contains, doesn't contain, equals |
| List | is / is not a specific list |
| Tag | has tag, doesn't have tag, has any tag in group |
| Priority | is / is not None / Low / Medium / High |
| Due Date | today, tomorrow, this week, overdue, range |
| Start Date | today, future, range |
| Location | has location, near current location |
| Action | has action of type ... |
| Has alarm | yes / no |
| Repeating | yes / no |
| Star | yes / no |
| Completed | yes / no |
| Paused | yes / no |
| Scheduled | yes / 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 List | Rule |
|---|---|
| Someday | search → Without Due Date → save (filter on All) |
| Tomorrow | type: duetomorrow (filter on All) |
| Next 3 Days | search → Dynamic Range → 3 days → save (filter on All) |
| Tasks With Any Tag | type: anytag |
| Untagged Tasks | type: notag |
| Stalled | inprogress AND !repeat AND created: > 14d |
| High-priority Today | type: hiprio AND today |
| Errands Nearby | type: anylocation AND visit |
| Quick Wins | type: duration plus a duration-based rule in the rule builder |
| Waiting On | tags: waiting (with a paused-tag toggle if you want them hidden by default) |
| Recently Captured | created: 2d |
| Review Inbox | List is Inbox AND Completed is no |
Tips
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.
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.
A Smart List is just a perspective. Deleting one never deletes its tasks. Experiment freely.